:root{
  --bg:#F5F7FB; --panel:#FFFFFF; --panel-2:#FAFBFD;
  --line:#E4E8F0; --line-2:#EEF1F6;
  --text:#1F2937; --text-2:#4B5563; --muted:#9CA3AF;
  --brand:#006EFF; --brand-2:#3DA3FF; --brand-deep:#0052CC; --brand-50:#E6F0FF;
  --red:#E72D00; --red-50:#FEE2E2;
  --orange:#EB8707; --orange-50:#FEF3C7;
  --green:#03905C; --green-50:#D1FAE5;
  --purple:#7C3AED; --purple-50:#EDE9FE;
  --cyan:#0891B2; --cyan-50:#CFFAFE;
}

*{box-sizing:border-box}
html,body{margin:0;padding:0;background:var(--bg);color:var(--text);
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans","Noto Sans JP","Noto Sans KR","Segoe UI",Roboto,sans-serif;
  line-height:1.7;-webkit-font-smoothing:antialiased;font-size:14px}

a{color:var(--brand);text-decoration:none}
a:hover{color:var(--brand-deep);text-decoration:underline}

.mono{font-family:"SF Mono",Menlo,Consolas,monospace;font-size:12px}

/* ========== topbar ========== */
.topbar{position:sticky;top:0;z-index:20;background:var(--panel);border-bottom:1px solid var(--line);
  display:flex;align-items:center;justify-content:space-between;padding:12px 24px;height:56px}
.brand{display:flex;align-items:center;gap:12px}
.logo-dot{width:28px;height:28px;border-radius:8px;background:linear-gradient(135deg,var(--brand) 0%,var(--brand-2) 100%)}
.brand-text{line-height:1.2}
.brand-name{font-size:15px;font-weight:700;color:var(--text)}
.brand-sub{font-size:11px;color:var(--muted);letter-spacing:.3px}
.topbar-right{display:flex;align-items:center;gap:12px;font-size:13px;color:var(--text-2)}
.mode-badge{padding:3px 10px;background:var(--brand-50);color:var(--brand-deep);border-radius:999px;font-size:12px;font-weight:600;cursor:pointer;user-select:none;transition:all .15s}
.mode-badge.off{background:#F3F4F6;color:var(--muted)}
.mode-badge:hover{opacity:.85}

/* 项 6 · 角色选择器 */
.role-switcher{display:inline-flex;background:#F3F4F6;border-radius:999px;padding:2px;gap:0}
.role-switcher .role-opt{padding:3px 12px;background:transparent;color:var(--muted);border:none;border-radius:999px;font-size:12px;font-weight:600;cursor:pointer;user-select:none;transition:all .15s}
.role-switcher .role-opt:hover{color:var(--text-2)}
.role-switcher .role-opt.on{background:var(--brand-50);color:var(--brand-deep);box-shadow:0 1px 3px rgba(0,0,0,.06)}

/* Q4a · 语言切换下拉（已回退到只中文 · 保留样式供未来恢复） */
.lang-switcher[hidden]{display:none !important}
.lang-switcher{position:relative;display:inline-block}
.lang-btn{padding:4px 12px;background:#F3F4F6;color:var(--text-2);border:none;border-radius:999px;font-size:12px;font-weight:600;cursor:pointer;user-select:none;transition:all .15s}
.lang-btn:hover{background:#E5E7EB}
.lang-menu{position:absolute;top:calc(100% + 6px);right:0;min-width:140px;background:#fff;border:1px solid #E5E7EB;border-radius:8px;box-shadow:0 6px 20px rgba(0,0,0,.12);padding:4px;z-index:100}
.lang-menu[hidden]{display:none}
.lang-menu button{display:block;width:100%;text-align:left;padding:7px 12px;background:transparent;border:none;font-size:13px;color:var(--text-1);cursor:pointer;border-radius:6px;white-space:nowrap}
.lang-menu button:hover{background:var(--brand-50);color:var(--brand-deep)}
.lang-menu button.active{background:var(--brand-50);color:var(--brand-deep);font-weight:600}
.mcp-badge{padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600;cursor:help;border:1px solid transparent;white-space:pre}
.mcp-badge.ok{background:#ECFDF5;color:#065F46;border-color:#A7F3D0}
.mcp-badge.bad{background:#FEF2F2;color:#991B1B;border-color:#FECACA}
.user{font-weight:600;color:var(--text)}
.health-dot{display:inline-block;width:10px;height:10px;border-radius:50%;background:#D1D5DB}
.health-dot.ok{background:var(--green)}
.health-dot.fail{background:var(--red)}

/* ========== wrap ========== */
.wrap{max-width:1280px;margin:0 auto;padding:28px 24px 80px}
.wrap-workbench{max-width:1480px}

/* ========== workbench layout ========== */
.workbench{display:grid;grid-template-columns:260px 1fr;gap:16px;margin-top:8px;align-items:flex-start}
@media (max-width:900px){.workbench{grid-template-columns:1fr}}

/* sidebar */
.sidebar{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:12px 8px;position:sticky;top:72px;height:calc(100vh - 88px);max-height:calc(100vh - 88px);display:flex;flex-direction:column}
.sidebar-head{padding:4px 8px 8px;border-bottom:1px solid var(--line-2);margin-bottom:8px}
.sidebar-title{font-size:13px;font-weight:700;color:var(--text);margin-bottom:4px}
.sidebar-filter{font-size:11px;color:var(--muted)}
.sidebar-filter .chk{display:inline-flex;align-items:center;gap:4px;cursor:pointer}
.sidebar-filter .chk input{margin:0}
.customer-list{overflow-y:auto;flex:5 1 0;min-height:160px;padding:2px 0}
.customer-list .ph{padding:20px 8px;color:var(--muted);font-size:12px;text-align:center}
.cust-item{padding:8px 10px;border-radius:8px;cursor:pointer;margin-bottom:3px;border:1px solid transparent;transition:all .12s}
.cust-item:hover{background:var(--brand-50);border-color:var(--brand-50)}
.cust-item.active{background:var(--brand-50);border-color:var(--brand);box-shadow:0 0 0 1px var(--brand) inset}
.cust-item .name{font-size:13px;font-weight:700;color:var(--text);display:flex;align-items:center;gap:6px}
.cust-item .meta{font-size:11px;color:var(--muted);margin-top:2px}
.cust-item .tier{padding:1px 6px;border-radius:4px;background:var(--line-2);color:var(--text-2);font-size:10px;font-weight:600}
.cust-item .tier.vip{background:#FEF3C7;color:#92400E}
.cust-item .tier.normal{background:var(--brand-50);color:var(--brand-deep)}
.cust-item .tag{font-size:10px;color:var(--muted);margin-left:auto}
.cust-item.all{background:var(--panel-2);font-style:italic}
.cust-item.all.active{background:var(--brand-50);font-style:normal}
.sidebar-foot{padding:8px;font-size:11px;color:var(--muted);border-top:1px solid var(--line-2);text-align:center}

/* workmain */
.workmain{background:var(--panel);border:1px solid var(--line);border-radius:12px;overflow:hidden;min-height:520px}
.tabbar{display:flex;gap:2px;padding:0 14px;background:var(--panel-2);border-bottom:1px solid var(--line-2);align-items:center}
.tab{background:transparent;border:none;padding:12px 18px;font-size:13px;font-weight:600;color:var(--text-2);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px}
.tab:hover{color:var(--brand-deep)}
.tab.active{color:var(--brand);border-bottom-color:var(--brand);background:var(--panel)}
.tab-spacer{flex:1}
.tab-ctx{font-size:11px;color:var(--muted);padding-right:4px}
.tabpane{padding:10px 0}

/* tabpane[skills] 里的 section 沿用原有样式，但外框改内嵌 */
.tabpane[data-pane="skills"] .section{margin:12px 14px;border-radius:10px}
.tabpane[data-pane="skills"] .section:first-child{margin-top:4px}

/* archive */
.archive-head{padding:10px 14px;border-bottom:1px solid var(--line-2);display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.archive-filters{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.archive-select,.archive-input{background:#fff;border:1px solid var(--line);border-radius:6px;padding:6px 10px;font-size:12px;color:var(--text);font-family:inherit}
.archive-input{min-width:180px}
.arch-chk{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:var(--text-2);cursor:pointer;padding:4px 8px;background:var(--panel-2);border:1px solid var(--line);border-radius:6px;user-select:none}
.arch-chk:hover{border-color:var(--brand);color:var(--brand-deep)}
.arch-chk input{margin:0;cursor:pointer}
.archive-stats{font-size:11px;color:var(--muted)}
.archive-layout{display:grid;grid-template-columns:360px 1fr;gap:0;min-height:540px}
@media (max-width:900px){.archive-layout{grid-template-columns:1fr}}
.archive-list{border-right:1px solid var(--line-2);max-height:640px;overflow-y:auto;padding:8px}
.archive-list .ph{padding:30px 12px;color:var(--muted);font-size:12px;text-align:center}
.archive-card{background:var(--panel-2);border:1px solid var(--line);border-radius:8px;padding:10px 12px;margin-bottom:8px;cursor:pointer;transition:all .12s}
.archive-card:hover{border-color:var(--brand);background:var(--brand-50)}
.archive-card.active{border-color:var(--brand);background:var(--brand-50);box-shadow:0 2px 8px rgba(0,110,255,.12)}
.archive-card .type{display:inline-block;font-size:10px;font-weight:700;padding:2px 7px;border-radius:4px;background:var(--brand-50);color:var(--brand-deep);margin-bottom:4px;letter-spacing:.3px}
.archive-card .type.status-in_progress{background:var(--orange-50);color:var(--orange)}
.archive-card .type.status-invalidated{background:#F3F4F6;color:var(--muted);text-decoration:line-through}
.archive-card .type.status-expired{background:var(--red-50);color:#991B1B}
.archive-card .aid{font-family:"SF Mono",Menlo,monospace;font-size:11.5px;color:var(--text);word-break:break-all;line-height:1.45}
.archive-card .foot{font-size:10px;color:var(--muted);margin-top:4px;display:flex;justify-content:space-between;gap:6px}
.archive-viewer{padding:14px 18px;overflow-y:auto;max-height:640px;background:var(--panel)}
.archive-viewer .viewer-head{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:1px solid var(--line-2);padding-bottom:10px;margin-bottom:12px;gap:12px}
.archive-viewer .viewer-title{font-size:14px;font-weight:700;color:var(--text);font-family:"SF Mono",Menlo,monospace;word-break:break-all}
.archive-viewer .viewer-meta{font-size:11px;color:var(--muted);margin-top:4px;line-height:1.6}
.archive-viewer .viewer-meta .mk{font-weight:600;color:var(--text-2)}
.archive-viewer .viewer-actions{display:flex;gap:6px;flex-shrink:0}
.archive-viewer .viewer-body{font-size:13px;line-height:1.8}

.ph-big{padding:60px 20px;text-align:center;color:var(--muted)}
.ph-big .ph-title{font-size:14px;font-weight:600;color:var(--text-2);margin-bottom:6px}
.ph-big .ph-sub{font-size:12px;color:var(--muted)}

/* relations */
.relations-head{padding:10px 14px;border-bottom:1px solid var(--line-2);display:flex;justify-content:space-between;align-items:center;gap:10px}
.relations-hint{font-size:12px;color:var(--text-2)}
.relations-hint code{background:var(--panel-2);padding:1px 6px;border-radius:4px;font-size:11px}
.relations-stats{font-size:11px;color:var(--muted)}
.relations-canvas{padding:16px;min-height:480px;overflow:auto}
.relations-canvas .mermaid{background:var(--panel-2);border:1px solid var(--line);border-radius:8px;padding:16px;min-height:380px}

/* ========== hero ========== */
.hero{padding:24px 28px;background:linear-gradient(135deg,#E6F0FF 0%,#F0F7FF 55%,#FFFFFF 100%);
  border-radius:14px;border:1px solid var(--line);margin-bottom:24px}
.hero-title{font-size:18px;font-weight:700;color:var(--text);margin-bottom:4px}
.hero-sub{font-size:13px;color:var(--text-2)}
.hero-meta{margin-top:14px;display:flex;gap:16px;flex-wrap:wrap;align-items:center;font-size:12px;color:var(--text-2)}
.hero-meta select{background:#fff;border:1px solid var(--line);border-radius:6px;padding:3px 8px;font-size:12px;color:var(--text);font-family:inherit}
.btn-ghost{background:transparent;border:1px solid var(--line);border-radius:6px;padding:4px 12px;font-size:12px;color:var(--text-2);cursor:pointer}
.btn-ghost:hover{background:var(--brand-50);border-color:var(--brand);color:var(--brand-deep)}

/* ========== sections ========== */
.section{margin-bottom:24px;background:var(--panel);border:1px solid var(--line);border-radius:12px;overflow:hidden}
.section-head{padding:16px 22px;border-bottom:1px solid var(--line-2);display:flex;justify-content:space-between;align-items:flex-end}
.section-title{font-size:17px;font-weight:700;color:var(--text);display:flex;align-items:baseline;gap:10px}
.section-title .accent{width:4px;height:18px;border-radius:2px;display:inline-block;margin-right:4px;vertical-align:-3px}
.section-title .subtitle{font-size:12px;color:var(--muted);font-weight:500;letter-spacing:.3px}
.section-desc{font-size:12px;color:var(--muted);text-align:right;max-width:60%}

.accent-blue{background:var(--brand)}
.accent-orange{background:var(--orange)}
.accent-purple{background:var(--purple)}
.accent-green{background:var(--green)}

.skill-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;padding:18px 22px}
.skill-card{background:var(--panel-2);border:1px solid var(--line);border-radius:10px;padding:14px 16px;
  cursor:pointer;transition:all .15s ease;position:relative;min-height:88px}
.skill-card:hover{background:var(--brand-50);border-color:var(--brand);transform:translateY(-1px);
  box-shadow:0 2px 8px rgba(0,110,255,.08)}
.skill-card .name{font-size:14px;font-weight:700;color:var(--text);margin-bottom:4px}
.skill-card .desc{font-size:12px;color:var(--text-2);line-height:1.55}

/* ========== quick-links ========== */
.quick-links{margin-top:28px;padding:18px 24px;background:var(--panel);border:1px solid var(--line);border-radius:12px}
.quick-links h3{margin:0 0 12px;font-size:14px;font-weight:700;color:var(--text)}
.ql-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}
.ql-item{display:flex;flex-direction:column;gap:2px;padding:10px 14px;background:var(--panel-2);border:1px solid var(--line);border-radius:8px;text-decoration:none;transition:all .12s}
.ql-item:hover{border-color:var(--brand);background:#eff6ff;transform:translateY(-1px)}
.ql-title{font-size:13px;font-weight:600;color:var(--brand-deep,#1e40af)}
.ql-sub{font-size:11px;color:var(--muted)}
.links{display:flex;gap:18px;flex-wrap:wrap;font-size:13px}

/* ========== footer ========== */
.footer{margin-top:40px;padding:20px 0;border-top:1px solid var(--line);color:var(--muted);font-size:12px;text-align:center;line-height:1.9}
.footer-hint{color:var(--muted);font-size:11px}

/* ========== modal ========== */
.modal{position:fixed;inset:0;z-index:50;background:rgba(15,23,42,.45);
  display:none;align-items:flex-start;justify-content:center;padding:40px 16px;overflow-y:auto}
.modal[data-open="1"]{display:flex}
.modal-card{background:var(--panel);border-radius:16px;width:min(880px,100%);box-shadow:0 20px 60px rgba(0,0,0,.2);overflow:hidden}
.modal-header{display:flex;justify-content:space-between;align-items:flex-start;padding:18px 22px;border-bottom:1px solid var(--line-2)}
.modal-title{font-size:17px;font-weight:700;color:var(--text)}
.modal-sub{font-size:12px;color:var(--muted);margin-top:2px}
.btn-close{background:transparent;border:none;font-size:24px;color:var(--muted);cursor:pointer;line-height:1;padding:0 4px}
.btn-close:hover{color:var(--text)}
.modal-body{padding:18px 22px 22px}

/* form */
.param-form{display:grid;gap:12px;margin-bottom:14px}
.param-field label{display:block;font-size:12px;font-weight:600;color:var(--text-2);margin-bottom:4px}
.param-field input[type="text"],.param-field textarea,.param-field select.param-select{width:100%;background:#fff;border:1px solid var(--line);border-radius:8px;padding:8px 12px;font-size:14px;color:var(--text);font-family:inherit}
.param-field input[type="text"]:focus,.param-field textarea:focus,.param-field select.param-select:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-50)}
.param-field .req{color:var(--red);margin-left:2px}
/* v2.2 · radio 模式选择 */
.radio-group{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px}
.radio-item{display:flex;align-items:flex-start;gap:8px;padding:10px 12px;background:var(--panel-2);border:1px solid var(--line);border-radius:8px;cursor:pointer;transition:all .12s;font-weight:500}
.radio-item:hover{border-color:var(--brand);background:var(--brand-50)}
.radio-item input[type="radio"]{margin:2px 0 0;accent-color:var(--brand)}
.radio-item input[type="radio"]:checked ~ .radio-label{color:var(--brand-deep);font-weight:700}
.radio-item:has(input:checked){border-color:var(--brand);background:var(--brand-50);box-shadow:0 0 0 1px var(--brand) inset}
.radio-label{font-size:13px;color:var(--text);line-height:1.3}
.radio-desc{display:block;font-size:11px;color:var(--muted);margin-top:2px;font-weight:400}

.action-row{display:flex;align-items:center;gap:10px;margin-bottom:14px}
.btn-primary{background:var(--brand);border:none;color:#fff;padding:8px 22px;border-radius:8px;font-weight:600;cursor:pointer;font-size:14px}
.btn-primary:hover{background:var(--brand-deep)}
.btn-primary:disabled{background:#93c5fd;cursor:not-allowed}
.status{font-size:12px;color:var(--muted)}
.status.run{color:var(--orange)}
.status.ok{color:var(--green)}
.status.err{color:var(--red)}

/* result */
.result-wrap{display:grid;gap:12px}
.trace{background:var(--panel-2);border:1px solid var(--line);border-radius:8px;padding:10px 14px;font-size:12px;color:var(--text-2)}
.trace summary{cursor:pointer;user-select:none;font-weight:600}
.trace-log{margin-top:8px;max-height:260px;overflow:auto;font-family:"SF Mono",Menlo,Consolas,monospace;font-size:11.5px;line-height:1.6;white-space:pre-wrap;word-break:break-all;overflow-wrap:anywhere;color:var(--text-2)}
.trace-log .k{color:var(--brand)}
.trace-log .dim{color:var(--muted)}

.result-panel{border:1px solid var(--line);border-radius:10px;background:#fff;overflow:hidden}
.result-head{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;border-bottom:1px solid var(--line-2);background:var(--panel-2);font-size:13px;font-weight:700;color:var(--text)}
.result-tools{display:flex;gap:6px}
.btn-mini{background:#fff;border:1px solid var(--line);border-radius:6px;padding:2px 10px;font-size:11px;color:var(--text-2);cursor:pointer}
.btn-mini:hover{background:var(--brand-50);color:var(--brand-deep);border-color:var(--brand)}

/* 第四批 · 对话式面板 */
.dialog-panel{margin-top:12px;border:1px solid var(--line);border-radius:10px;background:#fff;padding:12px 14px}
.dialog-panel[hidden]{display:none}
.dialog-head{display:flex;align-items:center;gap:10px;margin-bottom:8px;font-size:12px}
.dialog-title{font-weight:700;color:var(--text)}
.dialog-turn{color:var(--muted);font-family:"SF Mono",Menlo,monospace;font-size:11px}
.dialog-state{margin-left:auto;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:600;background:#F3F4F6;color:var(--muted)}
.dialog-state.waiting-reply{background:#ECFDF5;color:#065F46;animation:dialog-pulse 1.6s ease-in-out infinite}
.dialog-state.agent-thinking{background:#EFF6FF;color:#1E40AF}
.dialog-state.idle{background:#F3F4F6;color:var(--muted)}
.dialog-state.ended{background:#FEE2E2;color:#991B1B}
@keyframes dialog-pulse{0%,100%{opacity:1}50%{opacity:.6}}
.dialog-input-row{display:flex;gap:8px;align-items:flex-start}
.dialog-input-row textarea{flex:1;padding:8px 10px;border:1px solid var(--line);border-radius:8px;font-size:13px;font-family:inherit;resize:vertical;min-height:52px;line-height:1.5;color:var(--text);background:#fff}
.dialog-input-row textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-50)}
.dialog-input-row textarea:disabled{background:#F9FAFB;color:var(--muted);cursor:not-allowed}
.dialog-actions{display:flex;flex-direction:column;gap:4px}
.btn-sm{padding:6px 14px;font-size:12px;border-radius:8px}
.dialog-hint{margin-top:6px;font-size:10px;color:var(--muted)}

/* 项 E.1 · 粘贴图片缩略图 */
.dialog-thumbs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:8px;padding:6px;background:#F9FAFB;border:1px dashed var(--line);border-radius:8px}
.dialog-thumbs[hidden]{display:none}
.thumb-cell{position:relative;width:100px;height:80px;background:#fff;border:1px solid var(--line);border-radius:6px;overflow:hidden;flex-shrink:0}
.thumb-cell img{width:100%;height:100%;object-fit:cover;display:block}
.thumb-del{position:absolute;top:2px;right:2px;width:20px;height:20px;border-radius:50%;border:none;background:rgba(0,0,0,.55);color:#fff;font-size:14px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0}
.thumb-del:hover{background:#dc2626}
.thumb-meta{position:absolute;bottom:0;left:0;right:0;padding:1px 6px;font-size:9px;background:rgba(0,0,0,.55);color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* D2 · 档案柜对比 */
.archive-compare-bar{display:flex;align-items:center;gap:10px;padding:8px 10px;margin-top:6px;background:#eff6ff;border:1px solid var(--brand,#2563eb);border-radius:8px;flex-wrap:wrap}
.archive-compare-bar[hidden]{display:none}
.acb-info{font-size:12px;font-weight:600;color:#1e40af}
.acb-hint{font-size:11px;color:var(--muted);margin-left:auto}
.archive-card{position:relative}
.archive-card .compare-check{position:absolute;top:8px;right:8px;width:18px;height:18px;accent-color:var(--brand,#2563eb);cursor:pointer;z-index:2}
.archive-card.cmp-sel{border-color:var(--brand,#2563eb);box-shadow:0 0 0 2px #dbeafe}
.diff-body{background:#fafbfc;border:1px solid var(--line);border-radius:8px;padding:14px 18px;min-height:200px;max-height:60vh;overflow:auto;font-size:14px;line-height:1.75}
.diff-body h1,.diff-body h2,.diff-body h3{margin:14px 0 6px;font-weight:700}
.diff-body h2{font-size:16px;border-bottom:1px solid var(--line);padding-bottom:4px}
.diff-body ul{margin:6px 0;padding-left:22px}
.diff-body li{margin:3px 0}
.diff-body code{background:var(--panel-2);padding:2px 6px;border-radius:4px;font-size:13px}
.diff-status{padding:6px 4px;font-size:12px;color:var(--muted)}

/* D4 · 侧栏快捷区 · 第九批 · 限高 + 可折叠 + flex shrink · 不挤压客户列表 */
.sidebar-shortcut{border-top:1px solid var(--line);padding:6px 10px;margin-top:4px;flex:0 1 auto;min-height:0;max-height:32vh;display:flex;flex-direction:column}
.sidebar-shortcut[hidden]{display:none}
.sidebar-shortcut.collapsed .shortcut-list{display:none}
.shortcut-head{font-size:11px;font-weight:700;color:var(--muted);letter-spacing:.5px;margin-bottom:4px;display:flex;align-items:center;justify-content:space-between;cursor:pointer;user-select:none}
.shortcut-head:hover{color:var(--brand,#2563eb)}
.shortcut-head .toggle-ind{font-size:10px;color:var(--muted);font-weight:400}
.shortcut-list{display:flex;flex-direction:column;gap:3px;overflow-y:auto;flex:1;min-height:0}
.shortcut-item{background:var(--panel-2);border:1px solid var(--line);border-radius:6px;padding:4px 7px;cursor:pointer;transition:all .12s}
.shortcut-item:hover{border-color:var(--brand,#2563eb);background:#eff6ff}
.shortcut-item .si-type{display:inline-block;font-size:9px;font-weight:700;padding:1px 5px;border-radius:3px;background:var(--brand-50,#dbeafe);color:var(--brand-deep,#1e40af);margin-bottom:1px;letter-spacing:.3px}
.shortcut-item .si-aid{font-family:"SF Mono",Menlo,monospace;font-size:10.5px;color:var(--text);word-break:break-all;line-height:1.3}
.shortcut-item .si-sub{font-size:9.5px;color:var(--muted);margin-top:1px}

/* 第六批项 2 · 联系作者按钮 */
.btn-contact{display:inline-flex;align-items:center;gap:4px;padding:5px 12px;background:#10b981;color:#fff;border-radius:6px;font-size:12px;font-weight:600;text-decoration:none;transition:all .12s;white-space:nowrap}
.btn-contact:hover{background:#059669;transform:translateY(-1px);box-shadow:0 2px 8px rgba(16,185,129,.3)}
.btn-contact:active{transform:translateY(0)}

/* 第六批项 6 · Key 管理按钮 + modal */
.btn-keymgr{padding:5px 10px;background:var(--panel-2);color:var(--text);border:1px solid var(--line);border-radius:6px;font-size:12px;font-weight:600;cursor:pointer;transition:all .12s;white-space:nowrap}
.btn-keymgr:hover{border-color:var(--brand);color:var(--brand-deep,#1e40af);background:#eff6ff}
.km-banner{background:#fef3c7;border:1px solid #fcd34d;color:#92400e;border-radius:8px;padding:10px 14px;margin-bottom:16px;font-size:12px;line-height:1.6}
.km-section{margin-bottom:16px}
.km-label{font-size:12px;font-weight:700;color:var(--muted);letter-spacing:.3px;margin-bottom:6px;text-transform:uppercase}
.km-current{padding:10px 14px;background:var(--panel-2);border:1px solid var(--line);border-radius:8px;font-size:13px;font-family:"SF Mono",Menlo,monospace}
.km-empty{color:var(--muted);font-style:italic;font-size:12px}
.km-add-row{display:flex;gap:8px}
.km-input{flex:1;padding:7px 10px;border:1px solid var(--line);border-radius:6px;font-family:"SF Mono",Menlo,monospace;font-size:12px}
.km-input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 2px #dbeafe}
.km-input:disabled{background:#f3f4f6;color:var(--muted);cursor:not-allowed}
.km-hint{margin-top:6px;font-size:11px;color:var(--muted);line-height:1.6}
.km-actions{display:flex;gap:8px;flex-wrap:wrap}

/* 第七批 · 客户管理 */
.cm-head{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px;padding:10px 0;margin-bottom:10px}
.cm-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.cm-actions .archive-input,.cm-actions .archive-select{min-width:160px}
.cm-stats{font-size:12px;color:var(--muted)}
.cm-body{background:var(--panel);border:1px solid var(--line);border-radius:10px;overflow-x:auto}
.cm-table{width:100%;border-collapse:collapse;font-size:12.5px}
.cm-table th,.cm-table td{padding:8px 10px;text-align:left;border-bottom:1px solid var(--line);vertical-align:top}
.cm-table th{background:var(--panel-2);font-weight:700;color:var(--muted);font-size:11px;letter-spacing:.3px}
.cm-table tr:hover{background:#f9fafb}
.cm-table .cm-slug{font-family:"SF Mono",Menlo,monospace;font-weight:600;color:var(--brand-deep,#1e40af)}
.cm-table .cm-actions-cell{white-space:nowrap}
.cm-table .cm-actions-cell button{margin-right:4px}
.cm-table .cm-empty{text-align:center;color:var(--muted);padding:30px;font-style:italic}
.cm-table .ph{text-align:center;color:var(--muted);padding:20px}
.cm-badge-primary{display:inline-block;padding:1px 6px;font-size:9px;border-radius:3px;background:#fef3c7;color:#92400e;margin-left:4px;font-weight:700}
.cm-fieldset{border:1px solid var(--line);border-radius:8px;padding:12px 16px;margin-bottom:12px;background:var(--panel-2)}
.cm-fieldset legend{padding:0 8px;font-size:12px;font-weight:700;color:var(--brand-deep,#1e40af)}
.cm-slug-hint{font-size:10.5px;margin-top:3px;color:var(--muted);min-height:14px}
.cm-slug-hint.exist{color:#059669}
.cm-slug-hint.new{color:var(--brand,#2563eb)}
.req{color:#dc2626;font-weight:700}
.cm-explain{background:#eff6ff;border:1px solid #bfdbfe;color:#1e40af;border-radius:8px;padding:10px 14px;margin-bottom:12px;font-size:11.5px;line-height:1.7}
.cm-explain code{background:#fff;padding:1px 5px;border-radius:3px;font-size:10.5px;font-family:"SF Mono",Menlo,monospace;color:#0c4a6e}

/* 第八批 · 使用统计 Dashboard */
.stats-head{display:flex;justify-content:space-between;align-items:center;margin:10px 0 16px;flex-wrap:wrap;gap:10px}
.stats-title{font-size:18px;font-weight:700;color:var(--text)}
.stats-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.stats-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;margin-bottom:20px}
.stats-card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px 18px;transition:all .12s}
.stats-card:hover{border-color:var(--brand);box-shadow:0 2px 12px rgba(37,99,235,.08)}
.stats-card .sc-num{font-size:26px;font-weight:700;color:var(--brand-deep,#1e40af);line-height:1.2;letter-spacing:-.5px}
.stats-card .sc-label{font-size:11px;color:var(--muted);margin-top:4px;letter-spacing:.3px;text-transform:uppercase}
.stats-card .sc-sub{font-size:11px;color:var(--muted);margin-top:6px}
.stats-card.highlight{background:linear-gradient(135deg,#eff6ff 0%,#dbeafe 100%);border-color:#93c5fd}
.stats-card.highlight .sc-num{color:#1e40af;font-size:30px}
.stats-section{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px 20px;margin-bottom:16px}
.stats-section h3{margin:0 0 12px;font-size:14px;font-weight:700;color:var(--text)}
.stats-section h3 .s-hint{font-size:11px;font-weight:400;color:var(--muted);margin-left:8px}
.stats-bar-row{display:flex;align-items:center;gap:10px;margin-bottom:6px;font-size:12px}
.stats-bar-label{flex:0 0 180px;color:var(--text);font-family:"SF Mono",Menlo,monospace;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.stats-bar-track{flex:1;background:var(--panel-2);height:16px;border-radius:4px;overflow:hidden;position:relative}
.stats-bar-fill{height:100%;background:linear-gradient(90deg,#3b82f6,#1e40af);border-radius:4px;transition:width .3s}
.stats-bar-val{flex:0 0 60px;text-align:right;font-weight:600;color:var(--text)}
.stats-trend{width:100%;height:120px;display:flex;align-items:flex-end;gap:3px;padding:10px 0;border-bottom:1px solid var(--line);overflow-x:auto}
.stats-trend-bar{flex:1;min-width:8px;background:var(--brand,#3b82f6);border-radius:2px 2px 0 0;position:relative;transition:all .12s;opacity:.8}
.stats-trend-bar:hover{opacity:1;background:var(--brand-deep,#1e40af)}
.stats-trend-bar .tt-label{position:absolute;bottom:100%;left:50%;transform:translateX(-50%);font-size:9px;color:var(--muted);white-space:nowrap;padding:2px 4px;background:#fff;border:1px solid var(--line);border-radius:3px;opacity:0;pointer-events:none;z-index:5}
.stats-trend-bar:hover .tt-label{opacity:1}
.stats-trend-axis{display:flex;justify-content:space-between;font-size:10px;color:var(--muted);margin-top:4px}
.stats-body .ph-big{padding:40px;text-align:center;color:var(--muted)}
.stats-body .ph-big .ph-title{font-size:14px}
.stats-btn-hint{font-size:11px;color:var(--muted);margin-left:4px}
.stats-btn-hint b{color:var(--brand-deep,#1e40af)}

/* 项 E.2 · 首轮贴图区（openSkill 时根据白名单显示 · closeModal 时隐藏）*/
.initial-attach{margin:6px 0 10px;padding:8px 10px;border:1px dashed var(--brand-50,#cbd5e1);background:#F8FAFF;border-radius:8px}
.initial-attach[hidden]{display:none}
.initial-attach-head{display:flex;align-items:center;gap:10px;margin-bottom:6px}
.initial-attach-title{font-size:12px;font-weight:600;color:var(--brand,#2563eb)}
.initial-attach-hint{font-size:11px;color:var(--muted)}

.result-body{padding:16px 18px;font-size:14px;line-height:1.75;color:var(--text);min-height:120px}
.result-body em.muted{color:var(--muted);font-style:italic}
.result-body h1,.result-body h2,.result-body h3{margin:14px 0 6px;font-weight:700}
.result-body h1{font-size:20px;border-bottom:1px solid var(--line);padding-bottom:6px}
.result-body h2{font-size:17px}
.result-body h3{font-size:15px}
.result-body p{margin:8px 0}
.result-body ul,.result-body ol{margin:8px 0;padding-left:22px}
.result-body li{margin:3px 0}
.result-body code{background:var(--panel-2);padding:2px 6px;border-radius:4px;font-size:13px;font-family:"SF Mono",Menlo,monospace}
.result-body pre{background:var(--panel-2);border:1px solid var(--line);border-radius:8px;padding:12px 14px;overflow:auto;font-size:12.5px}
.result-body pre code{background:transparent;padding:0}
.result-body table{border-collapse:collapse;margin:10px 0;width:100%;font-size:13px}
.result-body th{background:var(--panel-2);text-align:left;padding:8px 10px;border:1px solid var(--line);font-weight:700}
.result-body td{padding:7px 10px;border:1px solid var(--line-2);vertical-align:top}
.result-body blockquote{border-left:3px solid var(--brand);background:var(--brand-50);padding:6px 14px;color:var(--text-2);margin:10px 0;border-radius:4px}

/* ============================================
   任务 3.4 · 用户登录弹窗
   ============================================ */
.user-login-mask{position:fixed;inset:0;background:rgba(15,18,22,.55);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:9999;padding:20px}
.user-login-mask[hidden]{display:none}
.user-login-card{background:var(--panel);border-radius:14px;padding:26px 28px 22px;width:520px;max-width:100%;box-shadow:0 24px 60px rgba(0,0,0,.32);border:1px solid var(--line)}
.user-login-head{display:flex;gap:14px;align-items:flex-start;margin-bottom:18px;padding-bottom:14px;border-bottom:1px solid var(--line)}
.ull-logo{font-size:30px;line-height:1;flex-shrink:0;margin-top:2px}
.ull-title{font-size:17px;font-weight:700;color:var(--text)}
.ull-sub{font-size:12.5px;color:var(--muted);margin-top:4px;line-height:1.5}
.ull-row{display:block;margin-bottom:14px}
.ull-label{display:block;font-size:13px;font-weight:600;color:var(--text-2);margin-bottom:6px}
.ull-row input{width:100%;padding:9px 12px;border:1px solid var(--line);border-radius:7px;font-size:14px;background:var(--panel-2);color:var(--text);box-sizing:border-box;font-family:inherit}
.ull-row input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-50)}
.ull-hint{display:block;font-size:11.5px;color:var(--muted);margin-top:5px;line-height:1.4}
.ull-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}
.ull-actions .btn-primary{padding:8px 22px;background:var(--brand);color:#fff;border:none;border-radius:7px;font-size:14px;font-weight:600;cursor:pointer}
.ull-actions .btn-primary:hover{background:var(--brand-deep,#0a73d6)}
.ull-actions .btn-primary:disabled{opacity:.5;cursor:not-allowed}
.ull-msg{margin-top:10px;min-height:18px;font-size:12.5px}
.ull-msg.ok{color:var(--green,#2ea043)}
.ull-msg.err{color:var(--red,#d1242f)}
.ull-foot{margin-top:14px;padding-top:12px;border-top:1px solid var(--line);font-size:12px;color:var(--muted);display:flex;gap:6px;align-items:center}
.ull-foot a{color:var(--brand);text-decoration:none}
.ull-foot a:hover{text-decoration:underline}
