:root{--bg:#0e1116;--panel:#161c26;--panel2:#1d2531;--border:#293447;--border2:#33415a;
 --txt:#d9e0ec;--muted:#8a96a9;--faint:#5c6575;--accent:#07c160;--accent-hi:#21d974;
 --blue:#3b82f6;--warn:#f5a623;--err:#f5564a;--sb:#0c0f15;--radius:10px;
 --panel3:#232d3c;
 /* 聊天窗配色（跟随主题） */
 --cw-bg:#0e1116;--cw-other:#1d2531;--cw-me:rgba(7,193,96,.16);--cw-line:#2a3444;
 --cw-meline:rgba(7,193,96,.34);--cw-txt:#dbe2ee;--cw-tm:#5f6b7c;--cw-who:#8a96a9}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--txt);font:13.5px/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI","Microsoft YaHei",sans-serif;overflow:hidden}
a{color:var(--blue);text-decoration:none}
::-webkit-scrollbar{width:9px;height:9px}
::-webkit-scrollbar-thumb{background:#2c3648;border-radius:6px}
.sidebar{position:fixed;left:0;top:0;bottom:0;width:264px;z-index:40;background:var(--sb);border-right:1px solid var(--border);display:flex;flex-direction:column;user-select:none}
.brand{display:flex;align-items:center;gap:11px;padding:16px 20px 13px}
.logo{width:36px;height:36px;border-radius:9px;flex:none;background:linear-gradient(135deg,#07c160,#059a4e);display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800}
.brand b{font-size:16px;color:#eef3fa}
.brand span{display:block;font-size:12px;color:var(--muted);font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nav{flex:1;overflow-y:auto;padding:2px 12px 16px}
.nav .grp{color:#9fb0c8;font-size:15.5px;font-weight:700;letter-spacing:.06em;margin:18px 10px 7px;padding-bottom:5px;border-bottom:1px solid rgba(255,255,255,.07)}
.nav a{display:flex;align-items:center;gap:11px;padding:8px 12px;margin:2px 0;border-radius:8px;color:#aeb8c9;font-size:14.5px;cursor:pointer}
.nav a:hover{background:rgba(255,255,255,.045);color:#e6ecf5}
.nav a.on{background:linear-gradient(90deg,rgba(7,193,96,.16),rgba(7,193,96,.03));color:#fff;font-weight:600}
.nav a .ic{width:22px;text-align:center;font-size:15.5px;opacity:.9}
.nav a .ph{margin-left:auto;font-size:11px;color:var(--faint);border:1px solid var(--border);border-radius:10px;padding:0 7px;white-space:nowrap}
.nav a .lvbadge{margin-left:auto;background:#f5564a;color:#fff;border:none;border-radius:10px;padding:0 6px;min-width:18px;height:18px;line-height:18px;text-align:center;font-size:11px;font-weight:600;flex:none}
.side-foot{padding:13px 20px;border-top:1px solid var(--border);color:var(--faint);font-size:12px;line-height:1.7}
.main{margin-left:264px;height:100%;display:flex;flex-direction:column}
.topbar{height:50px;flex:none;display:flex;align-items:center;gap:10px;padding:0 20px;background:rgba(14,17,22,.86);border-bottom:1px solid var(--border)}
.topbar h2{margin:0;font-size:16px;font-weight:600}
.topbar .grow{flex:1}
.chip{display:inline-flex;align-items:center;gap:6px;padding:3px 11px;border-radius:20px;background:var(--panel2);border:1px solid var(--border);font-size:12px;color:var(--muted)}
.dot{width:8px;height:8px;border-radius:50%;background:var(--faint);flex:none}
.dot.green{background:var(--accent);box-shadow:0 0 8px var(--accent)}
.dot.red{background:var(--err)}
.content{flex:1;overflow-y:auto;padding:18px 22px 30px}
.page{display:none;max-width:1240px;margin:0 auto}
.page.on{display:block;animation:fade .18s ease}
@keyframes fade{from{opacity:0;transform:translateY(3px)}to{opacity:1}}
button{border:0;cursor:pointer;font-family:inherit}
.btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:8px;background:var(--panel3,#232d3c);color:var(--txt);font-size:13px;border:1px solid var(--border2)}
.btn:hover{filter:brightness(1.15)}
.btn.primary{background:linear-gradient(135deg,#07c160,#059a4e);color:#fff;border-color:transparent}
.btn.danger{background:rgba(245,86,74,.12);color:#ff8a80;border-color:rgba(245,86,74,.35)}
.btn.sm{padding:4px 9px;font-size:12px;border-radius:7px}
input,select,textarea{background:var(--panel2);border:1px solid var(--border2);color:var(--txt);border-radius:8px;padding:7px 10px;font-size:13px;outline:none;font-family:inherit}
input:focus,select:focus,textarea:focus{border-color:var(--accent)}
select option{background:var(--panel2)}
.sec-title{display:flex;align-items:center;gap:10px;margin:20px 0 12px;font-size:14.5px;font-weight:600}
.sec-title:first-child{margin-top:2px}
.sec-title .line{flex:1;height:1px;background:var(--border)}
.badge{display:inline-block;padding:2px 8px;border-radius:20px;font-size:11.5px}
.badge.green{background:rgba(7,193,96,.14);color:#3ce489}
.badge.gray{background:#263042;color:var(--muted)}
.badge.blue{background:rgba(59,130,246,.16);color:#7cb0ff}
table.list{width:100%;border-collapse:collapse;font-size:13px}
table.list th{color:var(--muted);font-weight:500;text-align:left;padding:8px 10px;border-bottom:1px solid var(--border);font-size:12px}
table.list td{padding:8px 10px;border-bottom:1px solid #1e2733;vertical-align:top}
.panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:16px;margin-bottom:14px}
.panel.pad0{padding:0}
.empty{color:var(--faint);text-align:center;padding:30px 10px;font-size:13px}
.hint{color:var(--faint);font-size:12px}
.muted{color:var(--muted)}.small{font-size:12px}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px}
.card{background:linear-gradient(160deg,var(--panel),var(--panel2));border:1px solid var(--border);border-radius:var(--radius);padding:13px 15px}
.card .k{color:var(--muted);font-size:12px}
.card .v{font-size:20px;font-weight:700;margin-top:5px}
.card .s{color:var(--faint);font-size:11.5px;margin-top:3px}
.toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:12px}
.toolbar .grow{flex:1}   /* 工具栏里的占位符：把后面的徽标/按钮推到行尾（原先只对 .topbar/.fu-head 生效） */
.swrow{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px dashed #222b39}
.swrow:last-child{border-bottom:0}
.swrow .tt{flex:1}.swrow .tt b{font-size:13.5px}.swrow .tt span{display:block;color:var(--faint);font-size:12px}
.wx-grid{display:grid;grid-template-columns:340px 1fr;gap:14px;align-items:start}
.wx-grid.ma-stack{grid-template-columns:1fr}
.wxlist{max-height:62vh;overflow-y:auto}
.wx-item{padding:9px 12px;cursor:pointer;border-bottom:1px solid #1e2733}
.wx-item.on{background:rgba(7,193,96,.1)}
.wx-item b{display:block;font-size:13.5px;overflow-wrap:break-word;word-break:break-word;min-width:0}
.wx-sub{display:flex;gap:8px;color:var(--faint);font-size:11.5px;overflow-wrap:break-word;word-break:break-word;min-width:0}
.wx-sum{color:var(--faint);font-size:12px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.wx-item{position:relative}
.unread{position:absolute;right:12px;top:12px;min-width:18px;height:18px;padding:0 5px;border-radius:10px;background:#f5564a;color:#fff;font-size:10.5px;line-height:18px;text-align:center;flex:none;font-weight:600}
.chatbox{display:flex;flex-direction:column;gap:10px;max-height:56vh;overflow-y:auto}
.chatwin{display:flex;flex-direction:column;height:min(70vh,760px);min-height:430px;background:var(--panel)}
.cw-head{display:flex;align-items:center;gap:10px;padding:12px 18px;border-bottom:1px solid var(--border);flex:none;background:var(--panel2)}
.cw-head b{font-size:15px;color:var(--txt)}
.cw-head .hint{color:var(--faint)}
.cw-old{flex:none;text-align:center;padding:6px 0 2px;border-bottom:1px solid var(--border);background:var(--panel)}
.cw-body{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:8px;padding:16px 20px;background:var(--cw-bg)}
.cw-empty{color:var(--faint);text-align:center;padding:60px 10px;font-size:12.5px}
.cw-row{display:flex;flex-direction:column;max-width:82%;align-self:flex-start}
.cw-row.me{align-self:flex-end;align-items:flex-end}
.cw-row .who{font-size:11.5px;color:var(--cw-who);margin:0 0 2px 4px}
.cw-row .tx{background:var(--cw-other);border:1px solid var(--cw-line);border-radius:6px 14px 14px 14px;padding:7px 11px;word-break:break-word;white-space:pre-wrap;font-size:13.5px;line-height:1.6;color:var(--cw-txt);box-shadow:0 1px 1px rgba(0,0,0,.06)}
.cw-row.me .tx{background:var(--cw-me);border-color:var(--cw-meline);border-radius:14px 6px 14px 14px}
.cw-row .tm{font-size:10.5px;color:var(--cw-tm);margin:2px 4px 0}
.cw-vtag{display:inline-block;font-size:10.5px;line-height:1;color:var(--cw-tm);background:rgba(127,127,127,.13);border-radius:3px;padding:2.5px 5px;margin:0 7px 2px 0;vertical-align:1px;white-space:nowrap}
.cw-input{display:flex;gap:8px;align-items:flex-end;padding:10px 14px;border-top:1px solid var(--border);background:var(--panel);flex:none}
.cw-input textarea{flex:1;resize:none;min-height:64px;max-height:200px;line-height:1.5;overflow-y:auto}
.cw-input .cw-act{display:flex;gap:6px;flex:none}
.cw-input .cw-wrap{flex:1;display:flex;flex-direction:column;gap:4px;min-width:0}
.cw-input .cw-tool{display:flex;align-items:center;min-height:22px}
.cw-input .cw-tool .btn{font-size:11.5px;padding:1px 9px;height:auto;color:var(--muted);border-color:var(--border2)}
.cw-input .cw-tool .btn:disabled{opacity:.6;cursor:wait}
.cw-input .cw-wrap textarea{width:100%}
.bub{max-width:80%;align-self:flex-start}
.bub .who{font-size:11.5px;color:var(--faint)}
.bub .tx{background:var(--panel2);border:1px solid var(--border);border-radius:10px;padding:8px 11px}
.bub .tm{font-size:10.5px;color:var(--faint)}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.fld{margin-bottom:11px}.fld label{display:block;color:var(--muted);font-size:12px;margin-bottom:5px}
.fld input,.fld select,.fld textarea{width:100%}
/* 跟进记录时间线（手工记录可编辑/删除；AI 分析留痕不可删） */
.fu-list{display:flex;flex-direction:column;gap:8px;margin-top:6px}
.fu-row{border:1px solid var(--border);border-radius:8px;padding:8px 10px;background:var(--panel2)}
.fu-row.ai{border-style:dashed;background:transparent}
.fu-head{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--faint)}
.fu-head a{color:var(--muted);text-decoration:none}
.fu-head a:hover{color:var(--txt)}
.fu-head .grow{flex:1}
.fu-txt{margin-top:3px;font-size:13px;white-space:pre-wrap;word-break:break-word}
.fu-row.ai .fu-txt{color:var(--muted);font-size:12.5px;margin-top:0}
.fu-input{width:100%;min-height:72px;resize:vertical}   /* 添加/编辑跟进共用同一输入框样式 */
.fu-row.editing{padding:0;border:0;background:transparent}   /* 编辑态去掉卡片内边距/边框，输入框与「添加跟进」等宽 */
.toast{position:fixed;right:20px;bottom:18px;background:var(--panel3,#232d3c);color:var(--txt);border:1px solid var(--border2);border-radius:10px;padding:9px 14px;z-index:90;box-shadow:0 8px 30px rgba(0,0,0,.4)}
.toast.err{border-color:rgba(245,86,74,.5);color:#ff8a80}
.toast.warn{border-color:rgba(255,209,128,.5);color:#ffd180}   /* 提醒档：比普通提示醒目、比错误轻 */
/* 登录遮罩 */
.mask{position:fixed;inset:0;background:rgba(5,7,10,.66);z-index:80;display:none;align-items:center;justify-content:center}
.mask.on{display:flex}
.login{width:min(360px,92vw);background:var(--panel);border:1px solid var(--border2);border-radius:14px;padding:26px 28px}
.login h2{margin:0 0 16px;font-size:18px}
.login .fld{margin-bottom:12px}
/* 主体底色跟随主题变量 */
.main{background:var(--bg)}
.main .content{background:var(--bg)}
/* ===== 浅色主题（html.light，配色参考微信浅色） =====
 * class 挂在 <html> 上（见 main.js applyTheme）：CSS 变量因此能穿透到
 * .main 之外的节点（侧栏 / 登录遮罩 / Toast），不会出现"主区浅色、侧栏还是黑的"。
 * 色板对齐微信：主底 #ededed、面板 #fff、分隔 #e7e7e7、文字 #191919/#7f7f7f/#b2b2b2、
 * 品牌绿 #07c160、链接蓝 #576b95、警示 #fa5151 / #fa9d3b，气泡浅色下自带绿 #95ec69。 */
html.light{
  --bg:#ededed; --panel:#ffffff; --panel2:#f7f7f7; --panel3:#ececec;
  --border:#e7e7e7; --border2:#dcdcdc; --txt:#191919; --muted:#7f7f7f; --faint:#b2b2b2;
  --accent:#07c160; --accent-hi:#06ad56; --blue:#576b95; --warn:#fa9d3b; --err:#fa5151;
  --sb:#f7f7f7;
  --cw-bg:#f5f5f5; --cw-other:#ffffff; --cw-me:#95ec69; --cw-line:#e7e7e7;
  --cw-meline:#7fdd57; --cw-txt:#191919; --cw-tm:#b2b2b2; --cw-who:#7f7f7f;
  color:var(--txt);background:var(--bg)
}
html.light ::-webkit-scrollbar-thumb{background:#cfcfcf}
/* 侧栏 */
html.light .brand b{color:#191919}
html.light .side-foot{color:#9a9a9a}
html.light .nav .grp{color:#9a9a9a;border-bottom-color:#e2e2e2}
html.light .nav a{color:#333333}
html.light .nav a:hover{background:rgba(0,0,0,.045);color:#191919}
html.light .nav a.on{background:linear-gradient(90deg,rgba(7,193,96,.14),rgba(7,193,96,.02));color:#07c160}
/* 顶栏 / 控件 */
html.light .topbar{background:rgba(255,255,255,.92);border-bottom-color:#e7e7e7}
html.light .topbar h2{color:#191919}
html.light .chip{background:#fff;border-color:#e7e7e7;color:#7f7f7f}
html.light .btn{background:#ececec;color:#191919;border-color:#dcdcdc}
html.light .btn:hover{filter:none;background:#e0e0e0}
html.light .btn.primary:hover{filter:brightness(1.06)}
html.light .btn.danger{background:rgba(250,81,81,.08);color:#d93a3a;border-color:rgba(250,81,81,.35)}
html.light input,html.light select,html.light textarea{background:#fff;border-color:#dcdcdc;color:#191919}
html.light select option{background:#fff;color:#191919}
html.light input::placeholder,html.light textarea::placeholder{color:#b2b2b2}
/* 列表 / 卡片 / 徽标 */
html.light table.list th{color:#7f7f7f;border-bottom-color:#e7e7e7}
html.light table.list td{border-bottom-color:#f0f0f0}
html.light .card{background:linear-gradient(160deg,#fff,#fafafa);border-color:#e7e7e7}
html.light .badge.gray{background:#ececec;color:#7f7f7f}
html.light .badge.green{background:rgba(7,193,96,.12);color:#059a4e}
html.light .badge.blue{background:rgba(87,107,149,.12);color:#4a6180}
html.light .wx-item{border-bottom-color:#f0f0f0}
html.light .wx-item.on{background:rgba(7,193,96,.10)}
html.light .swrow{border-bottom-color:#efefef}
html.light .sec-title .line{background:#e7e7e7}
html.light .fa-fix b{color:#b26a00}
/* 遮罩 / 弹层（登录门、Toast 在 .main 之外，靠变量 + 这几条一起生效） */
html.light .mask{background:rgba(0,0,0,.32)}
html.light .toast{background:#fff;border-color:#e0e0e0;color:#191919;box-shadow:0 8px 30px rgba(0,0,0,.14)}
html.light .toast.err{color:#d93a3a;border-color:rgba(250,81,81,.45)}
html.light .toast.warn{color:#b26a00;border-color:rgba(255,178,0,.5)}
html.light .gate-msg{color:#d93a3a}
html.light .mom-pop,html.light .ma-dlg{box-shadow:0 12px 44px rgba(0,0,0,.18)}
/* 页面内联样式里写死的深色值：浅色下统一纠偏（避免逐个页面改 JS）。
 * !important 可压过 style 属性里的同名声明（页面里没有内联 !important）。 */
html.light [style*="#ff8a80"]{color:#d93a3a!important}
html.light [style*="rgba(245,86,74,.16)"]{background:rgba(250,81,81,.10)!important}
html.light [style*="#ffd180"]{color:#b26a00!important}
html.light [style*="rgba(255,209,128,.15)"]{background:rgba(250,157,59,.16)!important}
html.light [style*="#38d399"]{color:#059a4e!important}
html.light [style*="rgba(56,211,153,.16)"]{background:rgba(7,193,96,.12)!important}
html.light [style*="#f76707"]{color:#d9660a!important}
html.light [style*="#4dabf7"]{color:#1971c2!important}
html.light [style*="#69db7c"]{color:#2f9e44!important}
html.light [style*="#ff6b6b"]{color:#e03131!important}
html.light [style*="#d7dce6"]{color:#191919!important}
html.light [style*="background:#1b2230"]{background:#fff!important;border-color:#dcdcdc!important}
/* ===== 朋友圈归档/相册（mom-*） ===== */
.mom-feed{max-width:820px;margin:0 auto}
.mom-card{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:13px 16px 14px;margin-bottom:11px;cursor:pointer;transition:border-color .15s}
.mom-card:hover{border-color:var(--border2)}
.mom-hd{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:12px;margin-bottom:5px}
.mom-hd .mom-src{margin-left:auto;color:var(--faint);font-size:11px}
.mom-hd-t{font-weight:600;color:var(--txt)}
.mom-txt{white-space:pre-wrap;word-break:break-word;font-size:13.5px;line-height:1.75;margin:2px 0 9px;color:var(--txt)}
.mom-txt.nomedia{margin-bottom:0}
.mom-note{color:var(--faint);font-size:12.5px;padding:4px 0 2px}
.mom-imgs{display:grid;gap:5px;margin:2px 0}
.mom-imgs.s1{grid-template-columns:minmax(0,480px);justify-content:start}
.mom-imgs.g2{grid-template-columns:repeat(2,minmax(0,1fr));max-width:560px}
.mom-imgs.g3{grid-template-columns:repeat(3,minmax(0,1fr));max-width:560px}
.mom-imgs.g2 .mom-cell,.mom-imgs.g3 .mom-cell{aspect-ratio:1/1}
.mom-cell{overflow:hidden;border-radius:8px;background:var(--panel2);min-height:56px}
.mom-cell img,.mom-tile img{width:100%;height:100%;object-fit:cover;display:block}
.mom-imgs.s1 .mom-cell{aspect-ratio:auto;min-height:0;background:#000}
.mom-imgs.s1 .mom-cell img{height:auto;max-height:620px;object-fit:contain}
.mom-miss{display:flex;align-items:center;justify-content:center;min-height:70px;color:var(--faint);font-size:12px;background:var(--panel2);border:1px dashed var(--border2);border-radius:8px;text-align:center;padding:10px}
.mom-video{width:100%;max-width:620px;border-radius:10px;background:#000;margin:2px 0 6px;display:block}
.mom-video.big{max-width:100%}
.mom-album{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;padding:8px 14px 14px}
.mom-tile{position:relative;aspect-ratio:1/1;overflow:hidden;border-radius:10px;cursor:pointer;background:var(--panel2);border:1px solid var(--border)}
.mom-tile:hover{border-color:var(--accent)}
.mom-tile-ov{position:absolute;right:4px;bottom:4px;background:rgba(10,12,16,.55);color:#fff;font-size:10.5px;padding:0 6px;border-radius:8px}
.mom-mask{position:fixed;inset:0;background:rgba(4,6,10,.72);z-index:80;display:none;align-items:center;justify-content:center;padding:22px}
.mom-mask.on{display:flex}
.mom-pop{width:min(860px,96vw);max-height:90vh;overflow:auto;background:var(--panel);border:1px solid var(--border2);border-radius:14px;padding:16px 20px 20px;box-shadow:0 12px 48px rgba(0,0,0,.5)}
.mom-big{margin:6px 0;text-align:center}
.mom-big img{width:auto;max-width:100%;max-height:70vh;object-fit:contain;display:block;margin:0 auto;border-radius:10px;background:#000}
.mom-hd .growx{flex:1}

/* ---------- 文件图片批量归档：分组图板 + 拖拽 ---------- */
.ma-groups{display:flex;flex-direction:column;gap:12px;padding:6px 14px 14px}
.ma-group{border:1px solid var(--border);border-radius:10px;background:var(--panel2);padding:8px 10px}
.ma-group.drop-over{outline:2px dashed var(--accent);background:rgba(7,193,96,.05)}
.ma-gh{display:flex;align-items:center;gap:8px;margin-bottom:7px}
.ma-gh b{font-size:13.5px}
.ma-gh .growx{flex:1}
.ma-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px}
.ma-cell{position:relative;aspect-ratio:1/1;border-radius:8px;overflow:hidden;background:#000;
  border:1px solid var(--border2);cursor:grab;user-select:none}
.ma-cell img,.ma-cell video{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none}
.ma-cell.badimg{background:var(--panel3,#232d3c)}
.ma-cell.dragging{opacity:.35;border-color:var(--accent)}
.ma-ov{position:absolute;left:0;right:0;bottom:0;padding:2px 6px;font-size:10.5px;color:#fff;
  background:linear-gradient(transparent,rgba(0,0,0,.72));white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ma-cell.ma-fcell{background:var(--panel3,#232d3c);display:flex;align-items:center;justify-content:center;
  aspect-ratio:auto;min-height:64px;padding:6px;font-size:11.5px;color:var(--muted);text-align:center}
.ma-cell.ma-fcell span{word-break:break-all}
.ma-empty{color:var(--faint);font-size:12px;padding:8px 2px}
.ma-group .badge.gray{background:#2a3547}
.ma-gh b[data-rn]{cursor:pointer;border-bottom:1px dashed transparent}
.ma-gh b[data-rn]:hover{border-bottom-color:var(--accent);color:var(--accent)}

/* 会话抽取区：底部拖拽调整高度 */
.ma-resize{height:9px;display:flex;align-items:center;justify-content:center;cursor:ns-resize;
  color:var(--faint);user-select:none;border-top:1px dashed var(--border)}
.ma-resize:hover{color:var(--accent);border-top-color:var(--accent);background:rgba(7,193,96,.05)}
.ma-resize::after{content:'⋮⋮';font-size:11px;line-height:1;letter-spacing:2px}
body.ma-drag,body.ma-drag *{cursor:ns-resize!important;user-select:none!important}


/* 自绘对话框（分组名添加/修改/删除） */
.ma-mask{position:fixed;inset:0;background:rgba(4,6,10,.62);z-index:120;display:flex;align-items:center;justify-content:center;padding:20px}
.ma-dlg{width:min(420px,92vw);background:var(--panel);border:1px solid var(--border2);border-radius:12px;padding:16px 18px;box-shadow:0 12px 44px rgba(0,0,0,.5)}
.ma-dlg h4{margin:0 0 12px;font-size:14px;font-weight:600}
.ma-dlg input{width:100%;box-sizing:border-box}
.ma-dlg-ft{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}

/* 角色管理页 */
.rol-card{border:1px solid var(--border);background:var(--panel);border-radius:10px;margin-bottom:8px}
.rol-card.editing{outline:1px solid rgba(7,193,96,.55)}
.rol-card-hd{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;flex-wrap:wrap}
.rol-t{min-width:0;flex:1}
.rol-t b{cursor:pointer;font-size:13.5px;color:var(--txt)}
.rol-t b:hover{color:var(--accent)}
.rol-chips{display:flex;gap:6px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.rol-binds{border-top:1px solid var(--border);padding:6px 12px 10px;background:var(--panel2,#1a2130)}
.rol-line{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:4px 0}
.rol-line select{flex:1;min-width:130px}
.rol-bitem{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:5px 0;border-top:1px dashed var(--border)}
.rol-bitem .ellip{flex:1}
.rol-bitem b{min-width:0;flex:1}
.ellip{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* 话术库（角色绑定 + 分组） */
.ph-roles-cell{display:flex;flex-wrap:wrap;gap:4px;align-items:center}
.ph-roles-cell .badge{cursor:pointer;user-select:none}
.ph-roles-cell .badge:hover{filter:brightness(1.15)}
.ph-roles-cell select{flex:none}

/* 朋友圈归档：失效图片补齐指引（fa-fix） */
.fa-fix{margin:0 0 12px;padding:10px 13px 11px;border:1px dashed var(--border2);border-left:3px solid #f59e0b;background:var(--panel2);border-radius:10px;font-size:12.5px;line-height:1.85;color:var(--txt)}
.fa-fix b{color:#f0b45a}
.fa-fix-st{font-weight:600;margin-top:7px}
.fa-fix-ol{margin:2px 0 0 20px;padding:0}
.fa-fix-ol li{margin:2px 0}
.fa-fix-n{color:var(--muted);font-size:12px;margin-top:6px}

/* 登录遮罩（登录门：局域网/会话失效） */
.gate-msg{color:#ff8a80;font-size:12.5px;line-height:1.6;min-height:0;margin:2px 0 10px;display:none}
.gate-msg.on{display:block}
.mask .login h2{margin:0 0 14px}
body.gated{overflow:hidden}
body.gated .sidebar,body.gated .main{display:none}
#gate #gateGo:disabled{opacity:.55;cursor:default}

/* ===== Ctrl+K 快速跳转（弹层；配色跟随深浅主题变量） ===== */
.qk{position:fixed;inset:0;z-index:130;background:rgba(5,7,10,.5);display:none;
  align-items:flex-start;justify-content:center;padding:12vh 18px 18px}
.qk.on{display:flex}
.qk-box{width:min(560px,96vw);background:var(--panel);border:1px solid var(--border2);
  border-radius:12px;box-shadow:0 18px 60px rgba(0,0,0,.45);overflow:hidden}
.qk-inp{width:100%;border:0;border-bottom:1px solid var(--border);border-radius:0;
  background:var(--panel);color:var(--txt);font-size:15px;padding:14px 16px}
.qk-inp:focus{border-color:var(--accent);outline:none}
.qk-list{max-height:52vh;overflow-y:auto;padding:6px}
.qk-row{display:flex;align-items:center;gap:10px;padding:9px 11px;border-radius:8px;
  cursor:pointer;font-size:13.5px;color:var(--txt)}
.qk-row.on{background:rgba(7,193,96,.14)}
.qk-row .ic{width:20px;text-align:center;opacity:.85;flex:none}
/* 面包屑：分组 › 页面名（分组是父级，弱化+可省略；页面名是当前项，加粗） */
.qk-row .path{display:inline-flex;align-items:center;gap:6px;flex:none;max-width:46%;min-width:0}
.qk-row .grp{color:var(--faint);font-size:11.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qk-row .sep{color:var(--faint);font-size:11px;flex:none}
.qk-row b{flex:1;min-width:0;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qk-row .rc{color:#07c160;border:1px solid rgba(7,193,96,.38);border-radius:8px;
  padding:0 6px;font-size:11px;line-height:16px;flex:none}
/* 行尾 ★：固定/取消固定常用页（点它只切换收藏，不跳页） */
.qk-row .pin{flex:none;color:var(--faint);font-size:14px;line-height:1;padding:2px 5px;border-radius:6px;cursor:pointer}
.qk-row .pin:hover{color:#07c160;background:rgba(7,193,96,.12)}
.qk-row .pin.on{color:#07c160}
.qk-none{color:var(--faint);font-size:12.5px;text-align:center;padding:22px 10px}
.qk-ft{border-top:1px solid var(--border);color:var(--faint);font-size:11.5px;padding:7px 12px;text-align:right}

/* ===== 移动端自适应（≤900px） ===== */
#btnMenu{display:none}
#sideMask{display:none}
/* 队列编排（拟人节奏）：默认（桌面）布局 */
.aqhead{display:flex;align-items:center;gap:8px;padding:4px;color:#888;font-size:12px}
.aq-nm{flex:1;min-width:0}
@media (max-width:900px){
  #btnMenu{display:inline-flex}
  #btnJump{display:none}          /* 手机没有 Ctrl+K，入口按钮也没必要占位 */
  .sidebar{transform:translateX(-100%);transition:transform .25s ease}
  body.side-open .sidebar{transform:translateX(0)}
  #sideMask{display:none;position:fixed;inset:0;background:rgba(5,7,10,.55);z-index:30} /* 低于侧栏(40)：遮背景不遮菜单 */
  body.side-open #sideMask{display:block}
  .main{margin-left:0}
  .topbar{padding:0 10px;gap:6px}
  .topbar h2{font-size:14.5px}
  .topbar .chip{display:none}               /* 手机上隐藏状态chip/用户chip */
  .topbar .chip:first-of-type{display:inline-flex}  /* 保留服务状态点 */
  .content{padding:12px 12px 26px}
  .wx-grid,.row2{grid-template-columns:1fr}
  .wx-grid>*{min-width:0}                    /* grid 子项默认 min-width:auto，长内容会撑破列宽 */
  .cards{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}
  .wx-grid .panel{margin-bottom:10px}
  .wx-grid .wxlist{max-height:30vh}          /* 手机：列表矮一点，给对话框让空间 */
  .chatwin{width:100%;min-width:0;height:min(56vh,560px);min-height:320px}  /* 手机：对话框高一点，至少露出大半 */
  .cw-head{flex-wrap:wrap}
  .cw-head b{flex:1;min-width:0;overflow-wrap:break-word;word-break:break-word}  /* 长标题不撑宽 */
  .cw-head .hint{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:45%}
  #content input,#content select,#content textarea{max-width:100%;box-sizing:border-box}
  table.list{display:block;overflow-x:auto;white-space:nowrap;-webkit-overflow-scrolling:touch}
  table.list th,table.list td{border-bottom:1px solid var(--border)}
  .toolbar{gap:6px}
  /* 队列编排（拟人节奏）：手机端名称独占一行，输入/按钮换行不错位 */
  .aqhead{display:none}          /* 表头列宽与行内 label 不一致，手机上隐藏 */
  .aqrow .aqdrag{flex:none;width:22px;align-self:flex-start;margin-top:7px}  /* 手柄固定宽，与名称同排 */
  .aqrow .aq-nm{flex:1 1 calc(100% - 30px);min-width:0}  /* 名称与手柄同一行，占满剩余 */
  .aqrow>button{align-self:flex-end}
  .cw-input{flex-direction:column;align-items:stretch}
  .cw-input .cw-act{align-self:flex-end}
  .mom-pop{padding:12px}
  .qk{padding:8vh 12px 12px}      /* 手机：弹层往上收，别被软键盘顶掉 */
  .qk-row .path{display:none}     /* 手机：宽度不够，隐藏面包屑的父级分组 */
}


