/* ===== 原内联样式块 1 ===== */
/* ===== 设计令牌 v1.0（v5.42 全站换肤）=====
   主题：雾蓝（默认） / 黑白 ink / 砚红 red
   切换：html[data-theme="ink"|"red"]，记忆在 localStorage yj_theme */
:root{
  --brand:#6E8BF0; --brand2:#5A79E6; --brand-dark:#4A63C9; --brand-soft:#E9EDFD;
  --bg:#EFF1F8; --bg-img:linear-gradient(172deg,#E3E7FA 0%,#E9ECFB 34%,#F2F4FD 64%,#FAFAFE 100%);
  --surface:#fff; --sidebar:rgba(255,255,255,.68); --sidebar-hover:#ECEDF6;
  --ink:#1B202E; --muted:#6B7186; --line:#E5E8F2;
  /* 设计图标准令牌（改动请先改规范文档，勿临时加值） */
  --muted2:#9AA0B4; --r-card:14px;
  --sh-card:0 1px 2px rgba(28,33,68,.04),0 10px 22px -17px rgba(28,33,68,.22);
  --sh-hover:0 1px 2px rgba(28,33,68,.05),0 16px 28px -18px rgba(28,33,68,.30);
  --ok:#1FA97C; --warn:#DE9A05; --danger:#E1504A;
}
/* 黑白 · 墨 */
html[data-theme="ink"]{
  --brand:#1A1D26; --brand2:#3A3F4E; --brand-dark:#0D0F15; --brand-soft:#E9EAEF;
  --bg:#F1F1F4; --bg-img:linear-gradient(172deg,#E7E7EC 0%,#EDEDF1 34%,#F4F4F7 64%,#FBFBFC 100%);
  --sidebar:rgba(255,255,255,.72); --sidebar-hover:#E8E9EE; --line:#E3E4EA;
}
/* 砚红 · 品牌 */
html[data-theme="red"]{
  --brand:#A0082F; --brand2:#C4325A; --brand-dark:#7A0624; --brand-soft:#FBEBEF;
  --bg:#F2F0F4; --bg-img:linear-gradient(172deg,#EDE6EC 0%,#F2EDF1 34%,#F7F4F9 64%,#FCFAFB 100%);
  --sidebar:rgba(255,255,255,.74); --sidebar-hover:#ECE9EF; --line:#E7E4EC;
}
*{margin:0;padding:0;box-sizing:border-box}
button,input,select,textarea{font-family:inherit}
::selection{background:color-mix(in srgb, var(--brand) 15%, transparent)}
::-webkit-scrollbar{width:8px;height:8px}
::-webkit-scrollbar-thumb{background:#D9DCE9;border-radius:4px}
::-webkit-scrollbar-thumb:hover{background:#C8CCDC}
::-webkit-scrollbar-track{background:transparent}
html,body{height:100%}
body{font-family:"PingFang SC","Microsoft YaHei",system-ui,-apple-system,sans-serif;background-color:var(--bg);background-image:var(--bg-img);background-attachment:fixed;color:var(--ink);display:flex;height:100vh;overflow:hidden;-webkit-font-smoothing:antialiased}
/* ---------- 侧栏（半透明毛玻璃 + 单色线性图标） ---------- */
.side{width:180px;background:var(--sidebar);backdrop-filter:blur(18px) saturate(1.25);-webkit-backdrop-filter:blur(18px) saturate(1.25);border-right:1px solid rgba(255,255,255,.62);display:flex;flex-direction:column;flex-shrink:0;color:var(--ink)}
.logo{padding:18px 16px 14px}
.logo h1{font-size:16px;font-weight:800;color:var(--ink);display:flex;align-items:center;gap:8px}
.logo h1::before{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--brand)}
.logo .sub{font-size:11px;color:var(--muted);margin-top:4px;letter-spacing:.4px}
.rolebox{padding:0 14px 12px}
.rolebox select{width:100%;padding:7px 10px;border:1px solid var(--line);border-radius:8px;font-size:12px;background:var(--surface);color:var(--ink)}
.rolebox select:focus{outline:2px solid var(--brand);border-color:var(--brand)}
/* v5.43 侧栏「当前：xxx（审计以此区分）」常驻两行小字，挪走（顶栏已显示身份），侧栏只留角色切换 */
.rolebox .tip{display:none}
.nav{padding:4px 10px 8px;overflow-y:auto;flex:1;min-height:0}
.nav::-webkit-scrollbar{width:4px}
.nav::-webkit-scrollbar-thumb{background:#D9DCE9;border-radius:2px}
.nav .pin{margin-bottom:6px}
.grp{margin-bottom:2px}
.grp-h{display:flex;align-items:center;gap:6px;padding:10px 10px 5px;cursor:pointer;user-select:none;font-size:11px;font-weight:700;color:#9AA0B4;letter-spacing:1.5px;text-transform:uppercase}
.grp-h:hover{color:var(--ink)}
.grp-h .chev{margin-left:auto;font-size:10px;transform:rotate(-90deg);transition:transform .18s;color:#9AA0B4}
.grp.open .grp-h .chev{transform:rotate(0)}
.grp.has-on .grp-h{color:var(--brand)}
.grp-b{display:none;margin:2px 0 6px 4px;padding-left:8px;border-left:1px solid var(--line)}
.grp.open .grp-b{display:block}
.nav a{display:flex;align-items:center;gap:10px;padding:7px 11px;border-radius:8px;text-decoration:none;color:#4A5165;font-size:13px;font-weight:500;cursor:pointer;white-space:nowrap;transition:background .15s,color .15s}
.nav a .ico{width:22px;height:22px;display:flex;align-items:center;justify-content:center;flex-shrink:0;color:#9AA0B4}
.nav a .ico svg{width:16px;height:16px;display:block;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.nav a:hover{background:var(--sidebar-hover);color:var(--ink)}
.nav a.on{background:var(--sidebar-hover);color:var(--ink);font-weight:700}
.nav a.on .ico{color:var(--brand)}
/* ---------- 创作助手流程快捷区（嵌在侧栏创作助手入口下方） ---------- */
.flow-box{margin:2px 0 8px 4px;padding:10px 10px 10px 12px;border-left:1px solid var(--line)}
.flow-box .fb-new{width:100%;border:none;border-radius:8px;padding:8px 10px;font-size:12.5px;font-weight:700;color:#fff;background:var(--brand);cursor:pointer;margin-bottom:10px;transition:.15s}
.flow-box .fb-new:hover{background:var(--brand2)}
.flow-box .fb-head{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.flow-box .fb-title{flex:1;font-size:11px;font-weight:700;color:#9AA0B4;letter-spacing:1.5px;text-transform:uppercase}
.flow-box .fb-steps{display:flex;flex-direction:column;gap:2px;margin-bottom:10px}
.flow-box .fb-step{display:flex;align-items:center;gap:8px;padding:6px 9px;border-radius:8px;color:#4A5165;font-size:12.5px;font-weight:500;cursor:pointer;transition:.15s}
.flow-box .fb-step:hover{background:var(--sidebar-hover);color:var(--ink)}
.flow-box .fb-step.on{background:var(--sidebar-hover);color:var(--ink);font-weight:700}
.flow-box .fb-step .no{width:21px;height:21px;border-radius:50%;background:#F3F4FA;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;color:#9AA0B4;flex-shrink:0}
.flow-box .fb-step.on .no{background:var(--brand);color:#fff}
.flow-box .fb-step.done .no{background:#ecfdf5;color:var(--ok)}
.flow-box .fb-step .ico{width:18px;height:18px;display:flex;align-items:center;justify-content:center;color:#9AA0B4;flex-shrink:0}
.flow-box .fb-step .ico svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.flow-box .fb-step.on .ico{color:var(--brand)}
.flow-box .fb-step.done .ico{color:var(--ok)}
.flow-box .fb-proj{border-top:1px solid var(--line);padding-top:10px}
.flow-box .fb-proj-h{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.flow-box .fb-proj-h span{flex:1;font-size:11px;color:#9AA0B4;letter-spacing:1.5px;font-weight:700;text-transform:uppercase}
.flow-box .fb-proj-add{width:20px;height:20px;border:none;border-radius:5px;background:#F3F4FA;color:#4A5165;font-size:13px;font-weight:700;cursor:pointer;transition:.15s}
.flow-box .fb-proj-add:hover{background:var(--brand);color:#fff}
.flow-box .fb-proj-list{display:flex;flex-direction:column;gap:2px}
.flow-box .fb-proj-item{display:flex;align-items:center;gap:6px;padding:5px 5px 5px 8px;border-radius:6px;cursor:pointer;color:#4A5165;font-size:12px;transition:.15s;position:relative}
.flow-box .fb-proj-item:hover{background:var(--sidebar-hover);color:var(--ink)}
.flow-box .fb-proj-nm{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.flow-box .fb-proj-del{flex:none;width:17px;height:17px;border:none;border-radius:4px;background:transparent;color:#9AA0B4;font-size:11px;line-height:17px;padding:0;cursor:pointer;opacity:0;transition:.15s}
.flow-box .fb-proj-item:hover .fb-proj-del{opacity:1}
.flow-box .fb-proj-del:hover{background:#FCEDEC;color:#b91c1c}
.flow-box .fb-proj-item.on{background:var(--sidebar-hover);color:var(--ink);font-weight:700}
.flow-box .fb-proj-item.on::before{content:'';position:absolute;left:-13px;top:4px;bottom:4px;width:3px;background:var(--brand);border-radius:0 2px 2px 0}
.side .foot{flex-shrink:0;padding:12px 14px;border-top:1px solid var(--line);font-size:10.5px;color:var(--muted);line-height:1.5;display:flex;flex-direction:column;align-items:stretch;gap:6px}
.theme-btn{display:inline-flex;align-items:center;justify-content:center;gap:5px;border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:4px 9px;font-size:11px;font-weight:600;color:var(--muted);cursor:pointer;transition:.15s}
.theme-btn i{width:8px;height:8px;border-radius:50%;background:var(--brand);display:inline-block}
.theme-btn:hover{color:var(--brand);border-color:var(--brand)}
/* ---------- 主区 ---------- */
.main{flex:1;display:flex;flex-direction:column;min-width:0;background:var(--bg)}
/* v5.43 顶栏退成隐形工具条：页面标题只保留内容区一处（对齐 WorkBuddy 的单一标题） */
.topbar{height:34px;background:transparent;border-bottom:none;display:flex;align-items:center;padding:0 44px;gap:10px;flex-shrink:0}
.topbar .t,.topbar .d{display:none}
.topbar #userBar{margin-left:auto}
.topbar .ver{margin-left:10px;font-size:10.5px;font-weight:600;color:var(--muted);font-family:monospace;letter-spacing:.5px;background:transparent;padding:0}
.body{flex:1;overflow:hidden;height:calc(100vh - 34px)}
.body-main{height:100%;overflow:auto;padding:16px 44px 44px;min-width:0}
.view{display:none;max-width:none;margin:0}
.view.on{display:block;animation:fadeUp .22s ease}
@keyframes fadeUp{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
/* ---------- 卡片 ---------- */
/* v5.43 卡片：只留一层边界（阴影），去掉描边，圆角收到 12 —— 边界越少越清爽 */
.card{background:var(--surface);border:none;border-radius:12px;padding:24px;margin-bottom:18px;box-shadow:0 1px 2px rgba(16,24,40,.04),0 10px 28px -18px rgba(16,24,40,.16)}
.card h3{font-size:14px;font-weight:700;margin-bottom:14px;display:flex;align-items:center;gap:8px;color:var(--ink)}
/* 每页第一张卡的标题 = 页面大标题（替代原顶栏标题） */
.view > .card:first-of-type > h3:first-child{font-size:22px;font-weight:800;letter-spacing:-.2px;line-height:1.3;margin-bottom:8px}
.view > .card:first-of-type > p:first-of-type,
.view > .card:first-of-type > .muted:first-of-type{font-size:13px;color:var(--muted);line-height:1.65;margin-bottom:20px}
/* v5.43 标题右侧的轻量动作（设置类，不进主导航） */
.card h3 > .h3-act{margin-left:auto;border:none;background:none;color:var(--muted-2,#A2A8BC);font-size:12px;font-weight:500;cursor:pointer;font-family:inherit;padding:3px 8px;border-radius:6px;transition:.15s}
.card h3 > .h3-act:hover{color:var(--brand);background:#F7F8FC}
/* v5.43 大标题旁的灰色释义（替代原来单独一行的说明块） */
.card h3 > .h3-sub{font-size:12px;font-weight:400;color:var(--muted);letter-spacing:0;margin-left:4px}
.grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:16px}
.stat{background:var(--surface);border:none;border-radius:12px;padding:20px 22px;cursor:pointer;transition:all .15s;box-shadow:0 1px 2px rgba(16,24,40,.04),0 10px 28px -20px rgba(16,24,40,.16)}
.stat:hover{border-color:var(--brand);box-shadow:0 4px 12px color-mix(in srgb, var(--brand) 8%, transparent)}
.stat .num{font-size:30px;font-weight:800;color:var(--brand);line-height:1}
.stat .num.g{color:var(--ok)} .stat .num.w{color:var(--warn)}
.stat .lbl{font-size:12.5px;color:var(--muted);margin-top:8px;font-weight:600}
.stat .sub{font-size:11px;color:var(--muted);margin-top:3px}
/* ---------- 快捷入口 ---------- */
.qa{display:flex;gap:10px;flex-wrap:wrap}
.qa button{padding:10px 16px;border-radius:9px;border:1px solid var(--line);background:#fff;font-size:13px;font-weight:600;cursor:pointer;transition:border-color .15s,color .15s}
.qa button:hover{border-color:var(--brand);color:var(--brand)}
.qa button.pri{background:var(--brand);color:#fff;border-color:var(--brand)}
.qa button.pri:hover{background:var(--brand2);color:#fff}
/* ---------- 内容中心 iframe ---------- */
.frame-wrap{position:relative;height:calc(100vh - 56px);background:#fff}
.frame-wrap iframe{width:100%;height:100%;border:0;display:block}
/* ---------- 线索表格 ---------- */
.toolbar{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:14px;align-items:center}
.toolbar input,.toolbar select{padding:8px 12px;border:1px solid var(--line);border-radius:9px;font-size:13px;background:#fff}
.toolbar input{min-width:200px}
.btn{padding:8px 14px;border-radius:8px;border:1px solid var(--line);background:#fff;font-size:13px;font-weight:600;cursor:pointer;transition:all .15s}
.btn:hover{border-color:var(--brand);color:var(--brand)}
.btn.pri{background:var(--brand);border-color:var(--brand);color:#fff}
.btn.pri:hover{background:var(--brand2);color:#fff}
.btn.sm{padding:4px 10px;font-size:12px}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--brand)}
.btn:focus-visible,.qa button:focus-visible,.mat-fb:focus-visible,.ai-fab:focus-visible,.ai-quick button:focus-visible,.ai-actions button:focus-visible{outline:2px solid var(--brand);outline-offset:1px}
table{width:100%;border-collapse:separate;border-spacing:0;background:#fff;border-radius:12px;overflow:hidden;border:1px solid var(--line)}
th{background:#F7F8FC;text-align:left;padding:11px 14px;font-size:12px;color:var(--muted);border-bottom:1px solid var(--line);white-space:nowrap;font-weight:700;letter-spacing:.3px}
td{padding:11px 14px;border-bottom:1px solid var(--line);font-size:13px;vertical-align:middle}
tr:last-child td{border-bottom:0}
tr:hover td{background:#fffafa}
.badge{display:inline-block;padding:3px 10px;border-radius:12px;font-size:11px;font-weight:700}
.lv-H{background:#FCEDEC;color:#991b1b} .lv-A{background:#fef3c7;color:#92400e}
.lv-B{background:#dbeafe;color:#1e40af} .lv-C{background:#F3F4FA;color:#4b5563}
.st-新线索{background:#dbeafe;color:#1e40af} .st-跟进中{background:#fef3c7;color:#92400e}
.st-已到访{background:#f3e8ff;color:#7e22ce} .st-已成交{background:#d1fae5;color:#065f46}
.st-已流失{background:#F3F4FA;color:#9ca3af}
td select{padding:4px 8px;border:1px solid var(--line);border-radius:7px;font-size:12px;background:#fff}
.empty{padding:40px;text-align:center;color:var(--muted);font-size:13px}
/* ---------- 抽屉详情 ---------- */
.drawer-mask{position:fixed;inset:0;background:rgba(0,0,0,.35);display:none;z-index:50}
.drawer{position:fixed;top:0;right:-480px;width:460px;height:100vh;background:#fff;z-index:60;box-shadow:-8px 0 30px rgba(0,0,0,.12);transition:right .22s;display:flex;flex-direction:column}
.drawer.on{right:0}
.drawer-mask.on{display:block}
.dr-h{padding:16px 20px;border-bottom:1px solid var(--line);display:flex;align-items:center}
.dr-h .t{font-size:15px;font-weight:800}
.dr-h .x{margin-left:auto;cursor:pointer;font-size:18px;color:var(--muted);background:none;border:0}
.dr-b{flex:1;overflow:auto;padding:18px 20px}
.dr-b label{display:block;font-size:11.5px;color:var(--muted);font-weight:700;margin:12px 0 5px}
.dr-b input,.dr-b select,.dr-b textarea{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:9px;font-size:13px;font-family:inherit}
.dr-b textarea{min-height:64px;resize:vertical}
.fu{border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin-bottom:8px;font-size:12.5px;background:#F8F9FD}
.fu .tm{color:var(--muted);font-size:11px;margin-bottom:3px}
.dr-f{padding:14px 20px;border-top:1px solid var(--line);display:flex;gap:10px}
/* ---------- 弹窗 ---------- */
.modal-mask{position:fixed;inset:0;background:rgba(0,0,0,.4);display:none;z-index:70;align-items:center;justify-content:center}
.modal-mask.on{display:flex}
.modal{background:#fff;border-radius:16px;width:min(560px,92vw);max-height:86vh;display:flex;flex-direction:column;box-shadow:0 20px 50px rgba(0,0,0,.2)}
.mo-h{padding:16px 20px;border-bottom:1px solid var(--line);font-size:15px;font-weight:800;display:flex}
.mo-h .x{margin-left:auto;cursor:pointer;background:none;border:0;font-size:18px;color:var(--muted)}
.mo-b{padding:18px 20px;overflow:auto}
.mo-b label{display:block;font-size:11.5px;color:var(--muted);font-weight:700;margin:10px 0 5px}
.mo-b input,.mo-b select,.mo-b textarea{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:9px;font-size:13px;font-family:inherit}
.mo-b textarea{min-height:140px;font-family:Consolas,monospace}
.mo-f{padding:14px 20px;border-top:1px solid var(--line);display:flex;gap:10px;justify-content:flex-end}
.muted{color:var(--muted);font-size:12px}
.ok-tip{color:var(--ok);font-size:12px;font-weight:700}
/* ---------- 数据中心条形 ---------- */
.bar-row{display:flex;align-items:center;gap:10px;margin-bottom:9px;font-size:12.5px}
.bar-row .nm{width:110px;text-align:right;color:var(--muted);flex-shrink:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bar-row .tr{flex:1;background:#F3F4FA;border-radius:6px;height:22px;position:relative}
.bar-row .fl{height:100%;border-radius:6px;background:linear-gradient(90deg,var(--brand),var(--brand2))}
.bar-row .v{width:60px;font-weight:700;flex-shrink:0}
.funnel{display:flex;gap:10px;align-items:flex-end;margin:8px 0 4px}
.funnel .st{flex:1;text-align:center}
.funnel .st .b{border-radius:10px 10px 0 0;background:linear-gradient(180deg,var(--brand2),var(--brand));min-height:34px;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800}
.funnel .st .l{font-size:11.5px;color:var(--muted);margin-top:6px}
/* ---------- 知识资产 ---------- */
.asset-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px}
.asset-grid .im{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.04);position:relative}
.asset-grid .im img{width:100%;height:100px;object-fit:cover;display:block}
.asset-grid .im .nm{font-size:10.5px;padding:6px 8px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.asset-grid .im .im-del{position:absolute;top:6px;right:6px;width:22px;height:22px;border:none;border-radius:6px;background:rgba(0,0,0,.45);color:#fff;font-size:12px;line-height:22px;padding:0;cursor:pointer;opacity:0;transition:.15s}
.asset-grid .im:hover .im-del{opacity:1}
.asset-grid .im .im-del:hover{background:#b91c1c}
/* 素材库：成稿笔记卡片 / 项目列表 */
.note-card{padding:12px;display:flex;flex-direction:column;gap:8px;cursor:pointer;transition:.15s;position:relative}
.note-card:hover{border-color:var(--brand);box-shadow:0 4px 14px rgba(166,22,47,.08);transform:translateY(-1px)}
.note-card .nc-del{position:absolute;top:8px;right:8px;width:22px;height:22px;border:none;border-radius:6px;background:rgba(0,0,0,.45);color:#fff;font-size:12px;line-height:22px;padding:0;cursor:pointer;opacity:0;transition:.15s;z-index:2}
.note-card:hover .nc-del{opacity:1}
.note-card .nc-del:hover{background:#b91c1c}
.note-card-top{display:flex;justify-content:space-between;align-items:center}
.note-card .badge{font-size:10.5px;font-weight:700;padding:2px 8px;border-radius:9px}
.note-card .b-ok{background:#ecfdf5;color:var(--ok)}
.note-card .b-draft{background:#fff7ed;color:#c2410c}
.note-card .dt{font-size:10.5px;color:var(--muted)}
.note-card .ttl{font-size:13px;font-weight:800;line-height:1.5;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.note-card .bd{font-size:11.5px;color:var(--muted);line-height:1.7;overflow:hidden;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}
.tg{display:inline-block;font-size:10.5px;color:var(--brand);background:rgba(166,22,47,.06);border-radius:9px;padding:2px 8px;margin-right:4px}
/* 素材墙：卡片直接显示封面图 + 正文 */
.note-card .cover{width:100%;height:150px;object-fit:cover;border-radius:8px;border:1px solid var(--line);background:#f7f5f2}
.note-card .bd{-webkit-line-clamp:8;min-height:56px;white-space:pre-wrap;font-size:12px}
.note-card.exp .bd{-webkit-line-clamp:unset}
.note-card .imgs{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.note-card .imgs img{width:100%;height:64px;object-fit:cover;border-radius:6px;border:1px solid var(--line);background:#f7f5f2}
.note-card .b-wip{background:#eef2ff;color:#4338ca}
.note-card .mat-ft{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:auto}
.note-card .mat-ft .pm{font-size:10.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mat-fb{border:1px solid var(--line);background:#fff;border-radius:16px;padding:4px 12px;font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;margin-left:6px;transition:.15s}
.mat-fb:hover{border-color:var(--brand)}
.mat-fb.on{background:var(--brand);border-color:var(--brand);color:#fff}
.proj-row{display:flex;align-items:center;gap:14px;padding:11px 14px;border:1px solid var(--line);border-radius:10px;margin-bottom:8px;cursor:pointer;transition:.15s;background:#fff}
.proj-row:hover{border-color:var(--brand);background:#fffbfc}
.proj-row .pn{font-weight:800;font-size:13px;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.proj-row .pm{font-size:11.5px;color:var(--muted)}
.proj-row .pt{font-size:11.5px;color:var(--muted)}
.proj-row .b{font-size:11.5px;color:var(--brand);font-weight:700}
.ph{padding:60px 30px;text-align:center}
.ph .big{font-size:44px;margin-bottom:14px}
.ph-ico{color:#B8BCCA;margin-bottom:16px}
.ph-ico svg{width:46px;height:46px;fill:none;stroke:currentColor;stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round}
.ph .t{font-size:15px;font-weight:700;margin-bottom:8px}
.toast{position:fixed;bottom:26px;left:50%;transform:translateX(-50%);background:#1f2937;color:#fff;padding:10px 20px;border-radius:24px;font-size:13px;z-index:1400;display:none;box-shadow:0 8px 24px rgba(0,0,0,.2)}
/* ---------- 驾驶舱待办 ---------- */
.todo{display:flex;align-items:center;gap:10px;padding:12px 14px;border:1px solid var(--line);border-radius:12px;margin-bottom:8px;cursor:pointer;transition:.15s;background:#fff;font-size:13px;line-height:1.6}
.todo:hover{border-color:var(--brand);background:#fffbfc}
.todo .b{margin-left:auto;color:var(--brand);font-weight:700;white-space:nowrap}

/* ---------- AI 录入 / AI 助手浮窗（v4.0 统一在 AI 运营一体化平台） ---------- */
.ai-tag{display:inline-block;padding:1px 6px;margin-left:auto;background:var(--brand);color:#fff;border-radius:4px;font-size:10px;font-weight:700;letter-spacing:.3px}
.ai-engine-tip{margin-bottom:12px;padding:8px 12px;border-radius:8px;font-size:12.5px;background:#F4F0FF;border:1px solid #E0D5FF;color:#5A4AAD;line-height:1.6}
.ai-engine-tip.ai{background:#EAF7EE;border-color:#BFE3C9;color:#2E7D4F}
.ai-engine-tip.err{background:#FFEFEF;border-color:#FFCDCD;color:#B03838}

@keyframes aiPulse{0%,100%{box-shadow:0 0 0 4px rgba(255,255,255,.4)}50%{box-shadow:0 0 0 8px rgba(255,255,255,0)}}

/* AI 助手：浮动窗口（v5.46 对齐雾蓝设计规范：白卡 / 单层边界 / 克制层级） */
.ai-panel{position:fixed;right:20px;bottom:92px;width:404px;max-width:calc(100vw - 40px);height:auto;max-height:min(600px,calc(100dvh - 130px));display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:0 1px 2px rgba(16,24,40,.04),0 18px 40px -20px rgba(16,24,40,.30);overflow:hidden;z-index:1300;opacity:0;transform:translateY(10px) scale(.99);pointer-events:none;transition:opacity .18s ease,transform .18s ease}
.ai-panel.show{opacity:1;transform:none;pointer-events:auto}
.ai-fab{position:fixed;right:20px;bottom:20px;width:50px;height:50px;border-radius:50%;border:none;background:var(--brand);color:#fff;font-size:22px;cursor:pointer;box-shadow:0 1px 2px rgba(16,24,40,.06),0 10px 24px -12px color-mix(in srgb, var(--brand) 75%, transparent);z-index:1300;transition:transform .15s,box-shadow .15s}
.ai-fab:hover{transform:translateY(-1px);box-shadow:0 1px 2px rgba(16,24,40,.06),0 14px 28px -12px color-mix(in srgb, var(--brand) 85%, transparent)}
.ai-fab:active{transform:scale(.96)}
/* 头部：纯白、一条分隔线，标题用正文墨色（不再品牌色加粗喊话） */
.ai-ph{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:14px 16px 13px;border-bottom:1px solid var(--line);background:var(--surface)}
.ai-ph .t{font-weight:600;font-size:13.5px;color:var(--ink);letter-spacing:.1px;line-height:1.4}
.ai-ph .t small{display:block;font-size:11px;font-weight:400;color:var(--muted);margin-top:3px;letter-spacing:.1px}
.ai-ph .ops{display:flex;gap:2px;flex-shrink:0;margin-top:-2px}
.ai-ph .ops button{background:transparent;border:none;cursor:pointer;font-size:11.5px;padding:5px 8px;border-radius:7px;color:var(--muted);font-family:inherit;transition:.15s}
.ai-ph .ops button:hover{background:color-mix(in srgb, var(--brand) 8%, transparent);color:var(--ink)}
.ai-ctx-bar{display:flex;align-items:center;gap:8px;padding:8px 16px;background:color-mix(in srgb, var(--brand) 6%, var(--surface));border-bottom:1px solid var(--line);font-size:11.5px;color:var(--ink)}
.ai-ctx-bar b{font-weight:600}
/* 消息区：极淡底，气泡去重描边 */
.ai-msgs{flex:0 1 auto;min-height:0;max-height:min(400px,calc(100dvh - 400px));overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:9px;background:color-mix(in srgb, var(--bg) 46%, var(--surface))}
.ai-msg{max-width:86%;padding:9px 12px;border-radius:10px;font-size:12.5px;line-height:1.7;word-break:break-word;white-space:pre-wrap}
.ai-msg.me{align-self:flex-end;background:var(--brand);color:#fff;border-bottom-right-radius:4px;box-shadow:0 1px 2px color-mix(in srgb, var(--brand) 24%, transparent)}
.ai-msg.bot{align-self:flex-start;background:var(--surface);border:1px solid var(--line);border-bottom-left-radius:4px}
.ai-msg.thinking{align-self:flex-start;background:var(--surface);border:1px solid var(--line);font-style:normal;color:var(--muted);font-size:12px}
.ai-msg.thinking::after{content:'';display:inline-block;width:5px;height:5px;border-radius:50%;background:var(--brand);margin-left:6px;vertical-align:1px;animation:aiPulse 1s infinite}
@keyframes aiPulse{0%,100%{opacity:.25}50%{opacity:1}}
.ai-actions{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px;padding-left:1px}
.ai-actions button{font-size:11px;padding:4px 10px;border-radius:8px;border:1px solid var(--line);background:var(--surface);color:var(--muted);cursor:pointer;transition:.15s;font-family:inherit}
.ai-actions button:hover{border-color:color-mix(in srgb, var(--brand) 45%, var(--line));color:var(--brand);background:color-mix(in srgb, var(--brand) 6%, var(--surface))}
.ai-actions button.primary{border-color:color-mix(in srgb, var(--brand) 40%, var(--line));color:var(--brand);font-weight:600}
/* 底部建议区：一块淡面板，两组同规格小胶囊（标签与胶囊基线对齐，不再错位） */
.ai-sugs{display:flex;flex-direction:column;gap:9px;padding:12px 16px;border-top:1px solid var(--line);background:var(--surface)}
.ai-sug-row{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.ai-sug-lb{font-size:10.5px;color:var(--muted);opacity:.88;letter-spacing:.3px;flex-shrink:0;line-height:1;padding-top:1px}
.ai-quick{display:flex;flex-wrap:wrap;gap:6px}
.ai-sug-row button,.ai-quick button{font-size:11.5px;padding:5px 11px;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--ink);opacity:.82;cursor:pointer;transition:.15s;font-family:inherit;line-height:1.35;white-space:nowrap}
.ai-sug-row button:hover,.ai-quick button:hover{border-color:color-mix(in srgb, var(--brand) 45%, var(--line));color:var(--brand);background:color-mix(in srgb, var(--brand) 6%, var(--surface));opacity:1}
/* 输入区：一条分隔线 + 内嵌圆角输入框，发送为同高小方块 */
.ai-input{display:flex;gap:8px;padding:11px 16px 13px;border-top:1px solid var(--line);background:var(--surface);align-items:flex-end}
.ai-input textarea{flex:1;resize:none;border:1px solid var(--line);border-radius:9px;padding:8px 11px;font-family:inherit;font-size:12.5px;line-height:1.5;color:var(--ink);background:var(--surface);min-height:34px;max-height:104px;transition:border-color .15s,box-shadow .15s}
.ai-input textarea::placeholder{color:var(--muted);opacity:.7;font-size:12px}
.ai-input textarea:focus{outline:none;border-color:color-mix(in srgb, var(--brand) 55%, var(--line));box-shadow:0 0 0 3px color-mix(in srgb, var(--brand) 10%, transparent)}
.ai-input .send{background:var(--brand);color:#fff;border:none;border-radius:9px;padding:0 15px;height:34px;cursor:pointer;font-size:12.5px;font-weight:600;letter-spacing:.2px;transition:.15s;font-family:inherit;flex-shrink:0}
.ai-input .send:hover{background:var(--brand2)}
.ai-input .send:disabled{background:color-mix(in srgb, var(--muted) 30%, var(--surface));cursor:not-allowed}
@media (max-width:520px){
  .ai-panel{right:10px;left:10px;width:auto;bottom:82px;max-height:calc(100dvh - 100px)}
  .ai-msgs{max-height:calc(100dvh - 340px)}
  .ai-fab{right:16px;width:46px;height:46px}
}
.toast.on{display:block}
/* 响应式：小屏保持单栏 */
@media (max-width:1100px){
  .body{grid-template-columns:1fr}
}

/* ==================== v4.12 移动端适配 ==================== */
/* 基础：移动端默认隐藏抽屉式触发元素（PC不受影响） */
.menu-toggle,.side-mask{display:none}

/* ==================== ≤768px：手机/小平板 ==================== */
@media (max-width:768px){
  /* --- 全局：禁用横向溢出 --- */
  html,body{overflow-x:hidden;-webkit-text-size-adjust:100%}
  body{font-size:15px}  /* 手机端基础字号略大 */

  /* --- 顶部栏：高度变小 + 容纳汉堡按钮 --- */
  .topbar{height:48px;padding:0 12px;gap:8px}
  .topbar .t{font-size:15px}
  .topbar .d{display:none}  /* 描述太挤，省略 */
  .topbar .ver{font-size:10px;padding:3px 6px}

  /* --- 汉堡按钮：仅移动端显示 --- */
  .menu-toggle{
    display:flex;align-items:center;justify-content:center;
    width:36px;height:36px;background:none;border:0;
    color:var(--ink);font-size:20px;cursor:pointer;
    -webkit-tap-highlight-color:transparent;border-radius:8px;
    flex-shrink:0;
  }
  .menu-toggle:active{background:var(--sidebar-hover)}

  /* --- 侧边栏：抽屉式（覆盖在内容上） --- */
  .side{
    position:fixed;top:0;left:-260px;width:260px;height:100vh;
    z-index:80;background:var(--sidebar);
    box-shadow:4px 0 20px rgba(0,0,0,.12);
    transition:left .25s ease;
    border-right:1px solid var(--line);
  }
  .side.open{left:0}
  /* 抽屉展开时锁定主区滚动 */
  body.menu-open{overflow:hidden}

  /* --- 遮罩 --- */
  .side-mask{
    display:none;position:fixed;inset:0;
    background:rgba(0,0,0,.4);z-index:75;
    -webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);
  }
  .side-mask.on{display:block}

  /* --- 主区占满（抽屉是叠加层，不挤压）--- */
  .main{width:100%}

  /* --- 内边距缩小 --- */
  .body-main{padding:14px 14px}

  /* --- 卡片：圆角缩小 + 内边距缩小 --- */
  .card{padding:14px;border-radius:12px;margin-bottom:12px}
  .card h3{font-size:13.5px;margin-bottom:10px}

  /* --- 4列网格 → 2列 --- */
  .grid4{grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:12px}
  .stat{padding:14px 12px;border-radius:12px}
  .stat .num{font-size:24px}
  .stat .lbl{font-size:11.5px;margin-top:6px}
  .stat .sub{font-size:10px}

  /* --- 快捷入口：横向滚动 --- */
  .qa{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;
     padding-bottom:4px;scrollbar-width:none}
  .qa::-webkit-scrollbar{display:none}
  .qa button{flex-shrink:0;font-size:12.5px;padding:9px 14px}

  /* --- 工具栏：竖排 + 满宽输入 --- */
  .toolbar{flex-direction:column;align-items:stretch;gap:8px}
  .toolbar input,.toolbar select{width:100%;min-width:0;font-size:14px;padding:10px 12px}
  .toolbar .btn{width:100%;padding:10px;font-size:14px}

  /* --- 表格：横向滚动容器 --- */
  /* 任意含 table 的卡片/div 自动支持横向滚动 */
  .card:has(>table),div:has(>table){overflow-x:auto;-webkit-overflow-scrolling:touch}
  .card>table,div>table{min-width:560px}  /* 触发横向滚动 */
  .table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;
                margin:0 -14px;padding:0 14px}
  .table-scroll table{min-width:560px}
  th{padding:9px 10px;font-size:11.5px}
  td{padding:9px 10px;font-size:12.5px}

  /* --- 抽屉/弹窗：占满屏幕宽度 --- */
  .drawer{width:100vw;right:-100vw}
  .drawer.on{right:0}
  .modal{width:96vw;border-radius:12px;max-height:90vh}
  .mo-b{padding:14px}
  .dr-b{padding:14px}

  /* --- iframe：自适应屏幕 --- */
  .frame-wrap{height:calc(100vh - 48px)}
  .frame-wrap iframe{height:100%}

  /* --- 按钮最小可点击区域 44px --- */
  .btn,.qa button{min-height:36px}

  /* --- 表单：放大字号避免iOS缩放 --- */
  input,select,textarea{font-size:14px!important}

  /* --- AI悬浮按钮调整 --- */
  .ai-fab{width:48px!important;height:48px!important;bottom:16px!important;right:16px!important}
}

/* ==================== ≤480px：小屏手机（更激进） ==================== */
@media (max-width:480px){
  /* 4列网格 → 1列 */
  .grid4{grid-template-columns:1fr}
  .stat .num{font-size:22px}
  /* 卡片进一步紧凑 */
  .card{padding:12px}
  /* 顶部栏 logo 文字更紧凑 */
  .topbar .t{font-size:14px;max-width:50vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  /* 弹窗几乎全屏 */
  .modal{width:100vw;height:100vh;max-height:100vh;border-radius:0}
}

/* ==================== 打印/横屏小调整 ==================== */
@media (max-width:768px) and (orientation:landscape){
  .topbar{height:44px}
  .body-main{padding:10px 12px}
  .frame-wrap{height:calc(100vh - 44px)}
}

/* ===== 原内联样式块 2 ===== */
.wx-wrap{display:grid;grid-template-columns:305px 1fr;gap:14px;margin-top:14px;align-items:start}
    .wx-list{background:#fff;border-radius:12px;border:1px solid #EBEEF6;max-height:660px;overflow-y:auto}
    .wx-item{padding:11px 13px;border-bottom:1px solid #f4eee9;cursor:pointer;transition:.15s}
    .wx-item:hover{background:#fdf8f5}
    .wx-item.on{background:#F0F2FA;box-shadow:inset 3px 0 0 var(--brand)}
    .wx-item .n{font-weight:600;font-size:13.5px;color:#222938;display:flex;justify-content:space-between;gap:6px;align-items:center}
    .wx-item .p{font-size:12px;color:#949AAE;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
    .wx-item .m{font-size:11px;color:#B6BCCA;margin-top:5px;display:flex;gap:6px;align-items:center;flex-wrap:wrap}
    .wx-tag{display:inline-block;padding:1px 7px;border-radius:9px;font-size:10.5px;line-height:17px;white-space:nowrap}
    .wx-ext{background:#e8f5ec;color:#2f7d4f}
    .wx-int{background:#EEF1F9;color:#5a6b82}
    .wx-room{background:#fdf0e4;color:#9a6a2f}
    .wx-lv{background:var(--brand);color:#fff;font-weight:600}
    .wx-main{background:#fff;border-radius:12px;border:1px solid #EBEEF6;min-height:440px;max-height:760px;display:flex;flex-direction:column;overflow:hidden}
    .wx-head{padding:12px 15px;border-bottom:1px solid #f2ebe6;display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
    .wx-body{flex:1;overflow-y:auto;padding:16px;background:#faf7f5}
    .wx-bub{max-width:76%;margin-bottom:12px}
    .wx-bub.them{margin-right:auto}
    .wx-bub.us{margin-left:auto}
    .wx-bub .c{padding:9px 12px;border-radius:11px;font-size:13px;line-height:1.65;white-space:pre-wrap;word-break:break-word}
    .wx-bub.them .c{background:#fff;border:1px solid #EBEEF6;color:#222938}
    .wx-bub.us .c{background:var(--brand);color:#fff}
    .wx-bub .t{font-size:10.5px;color:#ACB2C6;margin-top:4px}
    .wx-ai{padding:14px 16px;border-top:1px solid #f2ebe6;background:#FCFCFE;max-height:330px;overflow-y:auto}
    .wx-field{font-size:12.5px;line-height:1.95;color:#323A4C}
    .wx-field b{color:#6F7689;font-weight:600}
    .wx-quote{background:#F2F4FB;border-left:3px solid var(--brand);padding:10px 12px;border-radius:0 8px 8px 0;font-size:13px;line-height:1.75;white-space:pre-wrap;margin-top:8px}
    .wx-empty{padding:44px 18px;text-align:center;color:#ACB2C6;font-size:13px;line-height:2}
    @media(max-width:820px){.wx-wrap{grid-template-columns:1fr}.wx-main{max-height:none}.wx-list{max-height:320px}}

/* ==================== v4.46 TMK 工作台 UI 精修 ==================== */
/* v5.43 统计：从 8 个彩色药丸 → 无边框数字组（数字大、标签小、只用一种强调色） */
.tmk-cards{display:flex;gap:30px;flex-wrap:wrap;align-items:flex-start;margin:0 0 22px}
.tmk-cards .st-chip{display:flex;flex-direction:column-reverse;gap:3px;background:none;border:none;border-radius:0;padding:0;font-size:11.5px;color:var(--muted);font-weight:500;white-space:nowrap;cursor:pointer;transition:opacity .15s}
.tmk-cards .st-chip:hover{opacity:.7}
.tmk-cards .st-chip b{font-size:23px;font-weight:700;line-height:1;color:var(--ink);font-variant-numeric:tabular-nums;letter-spacing:-.5px}
.tmk-cards .st-chip.chip-flash b{color:var(--brand)}
/* v5.43 次要指标降权：字号小一档、颜色变灰 */
.tmk-cards .st-chip.minor b{font-size:15px;font-weight:600;color:var(--muted);letter-spacing:0}
.tmk-cards .st-chip.minor{font-size:11px}
/* v5.43 页签：药丸描边 → 下划线式（去掉一排边框，视觉立刻安静） */
.tmk-tabs{display:flex;gap:24px;flex-wrap:wrap;margin:26px 0 22px;border-bottom:1px solid var(--line)}
.tmk-tabs .tab{padding:0 0 10px;border:none;border-bottom:2px solid transparent;border-radius:0;background:none;font-size:13.5px;font-weight:600;color:var(--muted);cursor:pointer;transition:color .15s,border-color .15s;margin-bottom:-1px}
.tmk-tabs .tab:hover{color:var(--ink);border-color:transparent}
.tmk-tabs .tab.on{background:none;color:var(--brand);border-bottom-color:var(--brand);font-weight:700}
.tmk-tabs .tab.right{margin-left:auto;font-size:12px;font-weight:500;color:var(--muted-2,#9AA0B4);border-bottom-color:transparent}
.tmk-tabs .tab.right:hover{color:var(--brand)}
/* ===== v5.48 TMK 子页（录一条/喜报收集/喜报复核/收藏池/全部记录）对齐锁定规范 =====
   与今日页同一套数值：17px 栏目标题 / 36px 分组 / 白卡 --sh-card 无描边 / 语义色全走令牌 */
.tmk-sec{border:none;border-radius:var(--r-card);padding:22px 24px;background:var(--surface);box-shadow:var(--sh-card);margin-bottom:36px}
.tmk-sec-h{display:flex;align-items:baseline;gap:10px;margin-bottom:14px;flex-wrap:wrap}
.tmk-sec-h .no{width:22px;height:22px;border-radius:50%;background:var(--brand-soft);color:var(--brand-dark);font-size:11px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;align-self:center;flex-shrink:0}
.tmk-sec-h .t{font-size:17px;font-weight:700;letter-spacing:.2px;color:var(--ink)}
.tmk-sec-h .d{font-size:11.5px;color:var(--muted2);margin-left:2px}
.tmk-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:14px 16px}
.tmk-f label{display:block;font-size:11.5px;font-weight:600;color:var(--muted2);margin-bottom:6px}
.tmk-f input,.tmk-f select{width:100%;padding:9px 12px;border:1px solid var(--line);border-radius:9px;font-size:13px;background:var(--surface);color:var(--ink);transition:border-color .15s,box-shadow .15s}
.tmk-f input:focus,.tmk-f select:focus{border-color:color-mix(in srgb, var(--brand) 55%, var(--line));box-shadow:0 0 0 3px color-mix(in srgb, var(--brand) 10%, transparent);outline:none}
.tmk-chips{display:flex;flex-wrap:wrap;gap:8px}
.tmk-chip{display:inline-flex;align-items:center;gap:5px;padding:7px 14px;border-radius:999px;border:1px solid var(--line);background:var(--surface);font-size:12.5px;font-weight:600;color:var(--ink);cursor:pointer;transition:.15s;font-family:inherit}
.tmk-chip:hover{border-color:color-mix(in srgb, var(--brand) 45%, var(--line));color:var(--brand-dark);background:color-mix(in srgb, var(--brand) 6%, var(--surface))}
.tmk-chip .n{font-size:10.5px;color:var(--muted2);font-weight:500}
.tmk-chip.sel{border-color:var(--brand);background:var(--brand);color:#fff}
.tmk-chip.sel .n{color:rgba(255,255,255,.8)}
.tmk-chip .star{color:var(--brand);font-weight:700}
.tmk-chip.sel .star{color:#ffd76a}
.tmk-hint{font-size:11.5px;color:var(--muted2);margin-top:10px;line-height:1.6}
.tmk-check{display:inline-flex;align-items:center;gap:8px;font-size:13px;cursor:pointer;user-select:none;padding:10px 14px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink)}
.tmk-check input{width:17px;height:17px;accent-color:var(--brand);cursor:pointer}
.tmk-savebar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:16px}
.tmk-savebar .btn.pri{height:40px;padding:0 26px;font-size:14px;border-radius:10px}
/* 行内小按钮：行 / 表格统一的次级规格（pri 为实心主操作） */
.tmk-tbtn{height:27px;padding:0 11px;border-radius:8px;border:1px solid var(--line);background:var(--surface);font-size:11.5px;font-weight:600;color:var(--ink);opacity:.85;cursor:pointer;transition:.15s;font-family:inherit;flex-shrink:0}
.tmk-tbtn:hover{border-color:color-mix(in srgb, var(--brand) 45%, var(--line));color:var(--brand-dark);background:color-mix(in srgb, var(--brand) 6%, var(--surface));opacity:1}
.tmk-tbtn.pri{background:var(--brand);border-color:var(--brand);color:#fff;opacity:1}
.tmk-tbtn.pri:hover{background:var(--brand2);border-color:var(--brand2);color:#fff}
/* 列表表格：白卡内一行一条，行分隔线极淡 */
.tmk-tblwrap{padding:4px 20px 12px}
.tmk-tbl{width:100%;border-collapse:collapse;font-size:12.5px;color:var(--ink)}
.tmk-tbl th{text-align:left;font-size:11px;font-weight:600;color:var(--muted2);padding:12px 10px 9px;border-bottom:1px solid var(--line);white-space:nowrap}
.tmk-tbl td{padding:11px 10px;border-bottom:1px solid color-mix(in srgb, var(--line) 55%, transparent);vertical-align:middle}
.tmk-tbl tr:last-child td{border-bottom:none}
@media (max-width:768px){
  .tmk-sec{padding:14px}
  .tmk-savebar .btn.pri{width:100%}
}
/* ==================== v4.47 侧栏精简：旧获客入口收进「更多」 ==================== */
.nav .nav-extra{display:none}
.nav .grp.show-extra .nav-extra{display:flex}
.nav .nav-more{margin:4px 0 4px;padding:6px 11px;border-radius:8px;font-size:11px;color:#9AA0B4;cursor:pointer;transition:.15s;line-height:1.5}
.nav .nav-more:hover{background:var(--sidebar-hover);color:var(--ink)}
/* ==================== v4.48 「三样产出」卡片 ==================== */
.tk-out{display:grid;gap:10px}
.tk-out-title{font-size:12.5px;font-weight:700;color:var(--ok);margin-bottom:10px}
.tk-out-card{border:none;border-radius:12px;background:var(--surface);box-shadow:var(--sh-card);padding:12px 14px}
.tk-out-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px}
.tk-out-h b{font-size:12.5px}
.tk-out-h .use{font-size:11px;color:var(--muted)}
.tk-out-card textarea{width:100%;height:64px;font-size:12.5px;font-family:ui-monospace,monospace;border:1px solid var(--line);border-radius:8px;padding:8px;box-sizing:border-box;background:var(--bg);color:var(--ink);resize:vertical}
.tk-out-foot{font-size:11px;color:var(--muted);margin-top:10px;line-height:1.6}
/* ==================== v4.49 顶部统计胶囊可点 ==================== */
.tmk-cards .st-chip.link{cursor:pointer;transition:border-color .15s,color .15s,transform .1s,box-shadow .3s}
.tmk-cards .st-chip.link:hover{border-color:var(--brand);color:var(--brand)}
.tmk-cards .st-chip.link:active{transform:scale(.96)}

/* ==================== v4.65 胶囊实时变化：刚更新的闪一下绿光 ==================== */
@keyframes chipFlash{
  0%{background:#e9f7ef;border-color:#8fd3aa;box-shadow:0 0 0 0 rgba(46,125,50,.28)}
  60%{box-shadow:0 0 0 7px rgba(46,125,50,0)}
  100%{background:#f7f2ee;border-color:#F0F2F9;box-shadow:0 0 0 0 rgba(46,125,50,0)}
}
.tmk-cards .st-chip.chip-flash{animation:chipFlash 2.4s ease-out 1}
@media (prefers-reduced-motion:reduce){.tmk-cards .st-chip.chip-flash{animation:none}}

/* v4.61 报名流水页签精简：低频页签折进「更多产出」 */
#enrTabBar .nav-more{padding:6px 12px;border-radius:8px;font-size:11.5px;color:#9AA0B4;cursor:pointer;user-select:none}
#enrTabBar .nav-more:hover{background:#F1F3FA;color:var(--brand)}
.enr-collapsed .enr-x{display:none !important}

/* ==================== v4.71 顶栏身份区：手机端也要能点到「🔐 管理员登录」 ==================== */
/* 背景：v4.70 的登录入口挤在顶栏右侧，手机窄屏放不下（标题 + 免登录徽标 + 登录链接 + 版本号），
   会被 body{overflow-x:hidden} 直接裁掉 —— 薛老师反馈「手机端看不到，只能在电脑端看到」。 */
.ubar{flex:0 0 auto}
.ubar .lbl-mini{display:none}
.ubar .admin-login{white-space:nowrap}
@media (max-width:768px){
  /* 标题让位（可省略号截断），身份区固定不被裁 */
  .topbar .t{min-width:0;flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .ubar .oa-badge{display:none}                 /* 免登录徽标省掉：☰ 侧栏的提示里还有 */
  .ubar .admin-login{margin-left:6px !important;padding:4px 10px;border:1px solid var(--brand-soft);
    border-radius:14px;background:#fdf5f3;-webkit-tap-highlight-color:transparent}
}
@media (max-width:430px){
  .ubar .lbl-full{display:none}                 /* 「管理员登录」→「登录」，省地方 */
  .ubar .lbl-mini{display:inline}
  .ubar .visitor{display:none}
}

/* ==================== v4.72 系统后台（设置聚合页） ==================== */
.adm-bar{display:flex;flex-wrap:wrap;gap:9px}
.adm-bar .it{border:1px solid var(--line);border-radius:10px;padding:8px 12px;font-size:12px;background:#fdfbfa;line-height:1.5}
.adm-tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.adm-tile{border:1px solid var(--line);border-radius:14px;padding:14px;background:var(--surface);cursor:pointer;
  transition:border-color .15s,box-shadow .15s,transform .15s}
.adm-tile:hover{border-color:var(--brand);box-shadow:0 4px 12px color-mix(in srgb, var(--brand) 8%, transparent)}
.adm-tile:active{transform:scale(.99)}
.adm-tile .ic{font-size:19px;line-height:1}
.adm-tile .nm{font-size:13px;font-weight:800;color:var(--ink);margin-top:9px}
.adm-tile .ds{font-size:11.5px;color:var(--muted);margin-top:4px;line-height:1.55}
@media (max-width:900px){.adm-tiles{grid-template-columns:repeat(2,1fr)}}
@media (max-width:430px){.adm-tiles{grid-template-columns:1fr}}

/* ==================== v5.0 教务工作台：班级 / 排课 / 消课 / 课时账户 ==================== */
.jx-kpi{display:flex;flex-wrap:wrap;gap:9px;margin-bottom:11px}
.jx-kpi .it{border:1px solid var(--line);border-radius:10px;padding:7px 13px;font-size:12px;background:#fdfbfa;line-height:1.5}
.jx-kpi .it b{font-weight:800;color:var(--brand);font-size:14px;margin-right:4px}
.jx-tabs{display:flex;gap:7px;margin-bottom:11px;flex-wrap:wrap}
.jx-tabs button{padding:7px 15px;border:1px solid var(--line);background:var(--surface);border-radius:10px;
  font-size:12.5px;cursor:pointer;color:var(--ink);font-weight:600}
.jx-tabs button.on{background:var(--brand);color:#fff;border-color:var(--brand)}
.jx-tools{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:12px}
.jx-tools input,.jx-tools select{padding:7px 10px;border:1px solid var(--line);border-radius:9px;font-size:12.5px;
  background:var(--surface);color:var(--ink)}
.jx-tools .sp{flex:1 1 auto}
/* ---- 周课表 ---- */
.jx-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}
.jx-day{border:1px solid var(--line);border-radius:12px;background:var(--surface);min-height:150px;
  display:flex;flex-direction:column;overflow:hidden}
.jx-day.today{border-color:var(--brand);box-shadow:0 0 0 2px color-mix(in srgb, var(--brand) 7%, transparent)}
.jx-dayh{padding:7px 9px;font-size:11.5px;font-weight:700;color:var(--muted);border-bottom:1px solid var(--line);
  background:#fbfaf8;display:flex;justify-content:space-between;align-items:center;gap:4px}
.jx-day.today .jx-dayh{color:var(--brand);background:var(--brand-soft)}
.jx-dayb{padding:7px;display:flex;flex-direction:column;gap:6px;flex:1}
.jx-ls{border:1px solid var(--line);border-radius:9px;padding:7px 8px;cursor:pointer;font-size:11.5px;line-height:1.5;
  background:#fff;transition:border-color .15s,box-shadow .15s}
.jx-ls:hover{border-color:var(--brand);box-shadow:0 3px 9px color-mix(in srgb, var(--brand) 9%, transparent)}
.jx-ls .t1{font-weight:800;font-size:12px;color:var(--ink);
  min-height:36px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.jx-ls .t2{color:var(--muted);font-size:11px;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.jx-ls.done{background:#f6fbf8;border-color:#cdeade}
.jx-ls.off{opacity:.5;text-decoration:line-through}
.jx-ls .tag{display:inline-block;font-size:10px;padding:0 5px;border-radius:6px;background:#f2efec;
  color:var(--muted);margin-left:4px;font-weight:600}
.jx-ls .tag.ok{background:#e7f7ef;color:#0f7a52}
.jx-ls .tag.warn{background:#fdf4e6;color:#a8681a}
.jx-day .none{color:#cfcac4;font-size:11.5px;text-align:center;padding:16px 0}
/* ---- 班级卡片 ---- */
.jx-cls{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:11px}
.jx-c{border:1px solid var(--line);border-radius:13px;padding:12px 13px;background:var(--surface)}
.jx-c .h{display:flex;justify-content:space-between;gap:8px;align-items:flex-start}
.jx-c .nm{font-size:13.5px;font-weight:800;color:var(--ink)}
.jx-c .sub{font-size:11.5px;color:var(--muted);margin-top:3px;line-height:1.6}
.jx-c .bar{height:6px;border-radius:4px;background:#f0ede9;margin-top:9px;overflow:hidden}
.jx-c .bar i{display:block;height:100%;background:var(--brand);border-radius:4px}
.jx-c .ft{display:flex;gap:7px;margin-top:10px;flex-wrap:wrap}
.jx-pill{display:inline-block;font-size:10.5px;padding:1px 8px;border-radius:20px;background:#f2efec;
  color:var(--muted);font-weight:600;white-space:nowrap}
.jx-pill.on{background:#e7f7ef;color:#0f7a52}
.jx-pill.wait{background:#fdf4e6;color:#a8681a}
.jx-pill.end{background:#eef0f3;color:#5c6673}
.jx-pill.cancel{background:#fdeceb;color:#b23c33}
/* ---- 点名 / 名单 ---- */
.jx-stu{display:flex;align-items:center;gap:9px;padding:8px 4px;border-bottom:1px solid #f4f1ed;flex-wrap:wrap}
.jx-stu:last-child{border-bottom:0}
.jx-stu .nm{font-weight:800;font-size:12.5px;min-width:70px}
.jx-stu .ph{color:var(--muted);font-size:11.5px;min-width:104px}
.jx-stu .bal{font-size:11.5px;color:var(--muted);min-width:76px}
.jx-seg{display:flex;gap:5px;margin-left:auto}
.jx-seg button{padding:4px 11px;border:1px solid var(--line);background:#fff;border-radius:8px;font-size:11.5px;
  cursor:pointer;color:var(--ink);white-space:nowrap}
.jx-seg button.on{background:var(--brand);color:#fff;border-color:var(--brand)}
.jx-seg button.leave.on{background:#f59e0b;border-color:#f59e0b}
.jx-seg button.absent.on{background:#ef4444;border-color:#ef4444}
.jx-seg button.makeup.on{background:#0ea5e9;border-color:#0ea5e9}
.jx-row{display:flex;gap:9px;align-items:center;padding:9px 4px;border-bottom:1px solid #f4f1ed;flex-wrap:wrap}
.jx-row:last-child{border-bottom:0}
.jx-row .g{flex:1 1 auto;min-width:0}
.jx-f{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.jx-f .wide{grid-column:1/-1}
.jx-f label{display:block;font-size:11.5px;color:var(--muted);margin:0 0 4px}
.jx-f input,.jx-f select{width:100%;padding:7px 9px;border:1px solid var(--line);border-radius:9px;font-size:12.5px;
  background:#fff;color:var(--ink)}
.jx-hint{font-size:11.5px;color:var(--muted);line-height:1.7;background:#fbfaf8;border:1px solid var(--line);
  border-radius:10px;padding:9px 11px;margin-bottom:11px}
/* ---- 弹层 ---- */
.jx-modal{width:min(680px,94vw)}
.jx-mh{display:flex;justify-content:space-between;align-items:center;padding:13px 16px;
  border-bottom:1px solid var(--line);font-size:13.5px;flex:0 0 auto}
.jx-mh b{color:var(--brand)}
.jx-x{cursor:pointer;color:var(--muted);font-size:15px;line-height:1}
.jx-mb{padding:13px 16px;overflow-y:auto;flex:0 1 auto;min-height:0;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
.jx-mf{display:flex;gap:9px;justify-content:flex-end;padding:11px 16px;border-top:1px solid var(--line);
  flex-wrap:wrap;flex:0 0 auto}
@media (max-width:900px){
  .jx-week{grid-template-columns:repeat(2,minmax(0,1fr))}
  .jx-f{grid-template-columns:1fr}
}
@media (max-width:560px){
  .jx-week{grid-template-columns:1fr}
  .jx-cls{grid-template-columns:1fr}
  .jx-seg{margin-left:0;width:100%}
  .jx-stu .nm{min-width:auto}
}

/* ---- v5.1 矩阵式排课表：行=班级（期次），列=日期，同一期整行水平对齐 ---- */
.jx-week.jx-matrix .jx-dayh{border:1px solid var(--line);border-radius:12px}
.jx-week.jx-matrix .jx-dayh.today{border-color:var(--brand);color:var(--brand);background:var(--brand-soft)}
.jx-cell{border:1px solid #efece8;border-radius:9px;padding:6px;min-height:56px;
  display:flex;flex-direction:column;gap:6px}
.jx-cell.tcol{border-color:#eec3cf;background:#fdf7f9}
.jx-cell .none{color:#e3ded8;font-size:11px;text-align:center;margin:auto 0;line-height:1}
@media(max-width:900px){.jx-week.jx-matrix{grid-template-columns:repeat(7,minmax(150px,1fr));overflow-x:auto;padding-bottom:4px}}

/* ---- v5.2 点格子排课（选课→自动铺天数→一键建成）+ 课表缩放 ---- */
.jx-zoom{display:inline-flex;gap:4px}
.jx-zoom button{font-size:11.5px;padding:3px 8px;border-radius:7px;border:1px solid var(--line);
  background:#fff;cursor:pointer;color:var(--muted)}
.jx-zoom button:hover{border-color:var(--brand);color:var(--brand)}
.jx-week.jx-matrix{--jcol:0px;--jt1:12px;--jh1:36px}
.jx-week.jx-matrix.jx-z0{--jcol:104px;--jt1:11px;--jh1:32px}
.jx-week.jx-matrix.jx-z1{--jcol:134px}
.jx-week.jx-matrix.jx-z2{--jcol:180px;--jt1:13px;--jh1:40px}
.jx-week.jx-matrix .jx-ls .t1{font-size:var(--jt1,12px);min-height:var(--jh1,36px)}
.jx-addcell{cursor:pointer;align-items:center;justify-content:center;border-style:dashed;border-color:#e9e4de;background:#fcfbfa}
.jx-addcell .addico{color:#D8DBE8;font-size:17px;font-weight:700;line-height:1}
.jx-addcell:hover{border-color:var(--brand);background:var(--brand-soft)}
.jx-addcell:hover .addico{color:var(--brand)}
@media(max-width:900px){.jx-week.jx-matrix{grid-template-columns:repeat(7,minmax(var(--jcol,150px),1fr))}}
/* 弹层：课程大卡片 + 日期消消乐 */
.jx-qdate{font-size:13.5px;margin-bottom:10px}
.jx-qgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(158px,1fr));gap:9px}
.jx-qc{position:relative;border:1.5px solid var(--line);border-radius:14px;padding:11px 12px;cursor:pointer;
  background:#fff;transition:border-color .12s,box-shadow .12s}
.jx-qc:hover{border-color:#c9b8be}
.jx-qc.on{border-color:var(--brand);box-shadow:0 0 0 3px color-mix(in srgb, var(--brand) 10%, transparent);background:#FAFAFE}
.jx-qc .nm{font-size:13.5px;font-weight:800;color:var(--ink)}
.jx-qc .mt{font-size:11.5px;color:var(--muted);margin-top:4px}
.jx-qc .mt .big{font-size:15px;font-weight:800;color:var(--brand)}
.jx-qc .tick{position:absolute;top:8px;right:10px;color:var(--brand);font-weight:800}
.jx-qsec{font-size:12.5px;margin:14px 0 8px}
.jx-dchips{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.jx-dchip{border:1.5px solid var(--line);border-radius:11px;padding:7px 2px;background:#fff;cursor:pointer;
  display:flex;flex-direction:column;align-items:center;gap:2px;transition:border-color .12s,background .12s}
.jx-dchip i{font-style:normal;font-size:10.5px;color:var(--muted)}
.jx-dchip b{font-size:12px;color:var(--ink);font-weight:700}
.jx-dchip:hover{border-color:#c9b8be}
.jx-dchip.on{border-color:var(--brand);background:var(--brand-soft)}
.jx-dchip.on i,.jx-dchip.on b{color:var(--brand)}
.jx-qadv{margin-top:14px;font-size:12.5px}
.jx-qadv a{cursor:pointer;color:var(--brand)}
@media(max-width:560px){.jx-dchips{grid-template-columns:repeat(4,1fr)}.jx-qgrid{grid-template-columns:1fr 1fr}
  .jx-zoom button{padding:5px 10px}}

/* ---- v5.3 节奏选择：连着上 / 每周同一天（排5个周六一键铺好） ---- */
.jx-qrh{display:flex;align-items:center;gap:6px;margin:12px 0 8px}
.jx-qrh button{font-size:12px;padding:4px 12px;border-radius:999px;border:1.5px solid var(--line);
  background:#fff;cursor:pointer;color:var(--muted);font-weight:700}
.jx-qrh button.on{border-color:var(--brand);color:var(--brand);background:var(--brand-soft)}
.jx-qrh .wn{display:inline-flex;align-items:center;gap:8px;margin-left:6px;font-size:12.5px;color:var(--ink)}
.jx-qrh .wn a{cursor:pointer;width:24px;height:24px;border-radius:50%;border:1px solid var(--line);
  display:inline-flex;align-items:center;justify-content:center;color:var(--brand);font-weight:800;background:#fff}
.jx-qrh .wn a:hover{border-color:var(--brand)}
.jx-qrh .wn b{font-size:15px;color:var(--brand)}

/* ---- v5.4 周/月/年三档视图 + 行首班级名牌 ---- */
.jx-gran{display:inline-flex;gap:0;border:1.5px solid var(--line);border-radius:9px;overflow:hidden}
.jx-gran button{font-size:12px;padding:4px 13px;border:0;background:#fff;cursor:pointer;color:var(--muted);font-weight:700}
.jx-gran button.on{background:var(--brand);color:#fff}
.jx-week.jx-matrix{grid-template-columns:var(--jrow,150px) repeat(7,minmax(0,1fr))}
.jx-rowh{border:1px solid #efece8;border-radius:9px;padding:7px 9px;background:#fbfaf9;
  display:flex;flex-direction:column;justify-content:center;gap:2px;min-height:56px}
.jx-rowh b{font-size:12.5px;color:var(--ink);line-height:1.3}
.jx-rowh span{font-size:11px;color:var(--brand);font-weight:700}
.jx-wk.jx-z0{--jrow:110px}.jx-wk.jx-z1{--jrow:150px}.jx-wk.jx-z2{--jrow:200px}
.jx-mon .jx-ls{padding:5px 6px}
.jx-mon .jx-ls .t1{min-height:0;font-size:11px;-webkit-line-clamp:2;line-clamp:2;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden}
.jx-mon .jx-ls .t2{font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.jx-mon .jx-cell{min-height:52px;padding:4px}
.jx-year .jx-dayh{justify-content:center}
.jx-yearcell{min-height:56px;gap:4px;padding:5px}
.jx-run{border:1px solid #f0dfe5;border-radius:8px;padding:4px 7px;background:#FAFAFE;cursor:pointer;line-height:1.35}
.jx-run:hover{border-color:var(--brand)}
.jx-run b{display:block;font-size:11.5px;color:var(--ink)}
.jx-run span{font-size:10.5px;color:var(--muted)}
.jx-run.done{background:#f6f9f4;border-color:#dfe9d8}
.jx-run.done b{color:#7a8f6d}
@media(max-width:900px){
  .jx-week.jx-matrix{grid-template-columns:var(--jrow,120px) repeat(7,minmax(var(--jcol,150px),1fr));overflow-x:auto;padding-bottom:4px}
  .jx-mon{--jrow:96px}
}
/* 月/年视图自身横向滚动（body overflow-x:hidden 会裁掉超宽网格） */
.jx-week.jx-matrix.jx-mon,.jx-week.jx-matrix.jx-year{overflow-x:auto;padding-bottom:6px}
.jx-week.jx-matrix.jx-mon>*,.jx-week.jx-matrix.jx-year>*{flex:0 0 auto}
/* 月/年视图横向滚动时，行首班级名牌与左上角空格固定 */
.jx-week.jx-matrix.jx-mon .jx-rowh,.jx-week.jx-matrix.jx-year .jx-rowh,
.jx-week.jx-matrix.jx-mon>.jx-dayh:first-child,.jx-week.jx-matrix.jx-year>.jx-dayh:first-child{
  position:sticky;left:0;z-index:2;background:#fbfaf9}
.jx-week.jx-matrix.jx-year>.jx-dayh:first-child{background:#fff}

/* ---- v5.5 缩放真正作用于月/年视图 + 空月也能建班 ---- */
.jx-mon.jx-z0{--jmon:82px;--jrow:100px}
.jx-mon.jx-z1{--jmon:104px;--jrow:130px}
.jx-mon.jx-z2{--jmon:148px;--jrow:180px}
.jx-year.jx-z0{--jyr:118px;--jrow:112px}
.jx-year.jx-z1{--jyr:148px;--jrow:140px}
.jx-year.jx-z2{--jyr:205px;--jrow:190px}
.jx-empty-act{margin-top:10px}

/* ---- v5.7 月视图点列头开新课 + 弹层手机端可靠滚动 ---- */
.jx-mb{-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
.jx-dayadd{cursor:pointer}
.jx-dayadd .pl{color:var(--brand);font-weight:800;margin-left:5px}
.jx-dayadd:hover{border-color:var(--brand);color:var(--brand)}
@media(max-width:560px){
  #jxMask{align-items:flex-end}
  .jx-modal{width:100vw;max-height:93vh;border-radius:18px 18px 0 0}
  .jx-dayadd .pl{font-size:13px}
}

/* ---- v5.8 排课表「一间教室一行」+ 课程配色：同一行可排不同课程，靠颜色一眼区分 ---- */
.jx-ls{position:relative;overflow:hidden;background:var(--cbg,#fff)}
.jx-ls::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--cc,#e6e1db)}
.jx-ls .t1{color:var(--cc,var(--ink))}
.jx-ls.done{background:var(--cbg,#f6fbf8);border-color:#cdeade}
.jx-ls.done::after{content:'';position:absolute;inset:0;background:rgba(255,255,255,.44);pointer-events:none}
.jx-ls.off::before{background:#c9c4be}
.jx-mon .jx-ls::before{width:2px}
/* 行首（教室行）：教室名 + 这行排了几门课几节课 + 课程色点 */
.jx-rhroom b{display:block}
.jx-dots{display:flex;gap:3px;margin-top:4px;flex-wrap:wrap}
.jx-dots i{display:block;width:9px;height:9px;border-radius:50%}
/* 班级行的行首也带课程色条（颜色跟课程卡一致） */
.jx-week.jx-matrix .jx-rowh{position:relative;overflow:hidden}
.jx-week.jx-matrix .jx-rowh:not(.jx-rhroom)::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--cc,transparent)}
/* 课程大卡也带颜色条，选课时一眼对得上课表里的颜色 */
.jx-qc{overflow:hidden}
.jx-qc::before{content:'';position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--cc,#e6e1db)}
.jx-qc .nm{color:var(--cc,var(--ink))}
.jx-run{position:relative;overflow:hidden;background:var(--cbg,#FAFAFE)}
.jx-run::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--cc,#f0dfe5)}
.jx-run.done{background:var(--cbg,#f6f9f4)}
.jx-run.done::after{content:'';position:absolute;inset:0;background:rgba(255,255,255,.42);pointer-events:none}
.jx-grow{white-space:nowrap}
@media(max-width:900px){
  .jx-grow button{padding:4px 9px;font-size:11.5px}
}

/* ---- v5.9 排课表上直接加教室/区域 + 未定教室一键归位 ---- */
.jx-rhact{color:var(--brand);cursor:pointer;font-weight:800;white-space:nowrap}
.jx-rhdel{color:#AEB4C7;font-weight:700}
.jx-rhdel:hover{color:var(--danger,#c0392b)}
/* v5.10：「加教室/区域」改成教室列表最下方的一小行（左侧名牌列底部） */
.jx-rhadd{cursor:pointer;border:1.5px dashed #DCDFEC;background:#fcfbfa;align-items:center;justify-content:center;min-height:44px}
.jx-rhadd b{font-size:16px;color:var(--brand);line-height:1}
.jx-rhadd span{font-size:11.5px;color:var(--muted)}
.jx-rhadd:hover{border-color:var(--brand);background:var(--brand-soft)}
.jx-rhadd:hover span{color:var(--brand)}
/* 「未指定教室」行：灰色弱化，只是临时收纳还没填教室的课 */
.jx-rhmut{background:#f6f4f1}
.jx-rhmut b{color:var(--muted)}
.jx-rhmut span{color:var(--muted)}
.jx-fillc{border:none;background:transparent}
/* v5.14 教室名牌可拖拽排序 */
.jx-rowh.jx-dragable{cursor:grab}
.jx-rowh.jx-dragable:active{cursor:grabbing}
.jx-rowh.jx-dragging{opacity:.45}
.jx-rowh.jx-droptop{box-shadow:0 -2.5px 0 var(--brand)}
.jx-rowh.jx-dropbot{box-shadow:0 2.5px 0 var(--brand)}
.jx-rhroom b{font-size:12.5px}
.jx-cptag{font-style:normal;font-weight:700;font-size:10px;color:var(--muted);background:#f0ece7;border-radius:5px;padding:1px 4px;margin-left:2px;vertical-align:1px}
/* v5.22 班级·周历视图：列=日期，班按开课日落格，翻周浏览 */
.jx-clswk{min-width:0}
.jx-clswknav{display:flex;gap:8px;align-items:center;margin-bottom:9px;flex-wrap:wrap}
.jx-clswknav .btn{padding:5px 12px;font-size:12.5px}
.jx-clsgrid{display:grid;grid-template-columns:repeat(7,minmax(178px,1fr));gap:8px;overflow-x:auto;align-items:start;padding-bottom:4px}
.jx-clsday{border:1px solid #EDEFF7;border-radius:10px;padding:7px;display:flex;flex-direction:column;gap:8px;min-height:90px;background:#FCFCFE}
.jx-clsday.today{border-color:var(--brand);background:var(--brand-soft)}
.jx-clsday .dh{font-size:12px;font-weight:700;color:var(--muted);padding:1px 2px 3px}
.jx-clsday.today .dh{color:var(--brand)}
.jx-clsday .jx-c{box-shadow:none;border:1px solid #EDEFF7;margin:0}
.jx-clsday .jx-c .nm{font-size:13px}
.jx-clsday .none{font-size:11.5px;color:#C8CCDA;text-align:center;padding:12px 2px}
.jx-clspend{margin-top:14px}
.jx-clspend .jx-cls{margin-top:8px}
/* v5.23 学员档案 / 课后评价 */
.jx-stutb{display:flex;flex-direction:column;gap:6px}
.jx-stutb .jx-stu{align-items:center}
.jx-stutb .jx-stu:hover{background:var(--brand-soft)}
.jx-star{background:none;border:none;font-size:24px;cursor:pointer;color:#DCE0EC;padding:0 3px;line-height:1}
.jx-star.on{color:#e8a020}
.jx-evtag{font-size:11px;font-weight:700;color:#e8a020;background:#fdf3e0;border-radius:5px;padding:2px 6px;white-space:nowrap}
/* v5.24 月视图「今」徽标 */
.jx-dayh .jx-now{display:inline-block;background:var(--brand);color:#fff;font-size:10px;line-height:1;border-radius:4px;padding:2px 4px;margin-left:4px;vertical-align:1px}
/* v5.25 投资人经营看板（只读） */
.inv-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.inv-bar input[type=date]{font-size:12px;padding:4px 7px;border:1px solid #E6E9F3;border-radius:7px;background:#fff;color:#4A5165}
.inv-card{border:1px solid #F0F2F9;border-radius:11px;padding:12px 14px;background:#FCFCFE}
.inv-card.pri{background:var(--brand-soft);border-color:var(--brand-soft)}
.inv-card .nm{font-size:12px;color:#7C8398}
.inv-card .v{font-size:23px;font-weight:700;color:var(--brand);margin:5px 0 3px;letter-spacing:-.3px}
.inv-card .sub{font-size:11.5px;color:#9AA0B4;line-height:1.5}
.inv-row{display:flex;align-items:center;gap:10px;padding:7px 0;border-bottom:1px dashed #F0F2F9}
.inv-row:last-child{border-bottom:none}
.inv-row .nm{width:112px;flex:none;font-size:12.5px;color:#4A5165;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.inv-row .bar{flex:1;height:9px;background:#F0F2F9;border-radius:5px;overflow:hidden;min-width:60px}
.inv-row .bar i{display:block;height:100%;background:var(--brand);border-radius:5px;opacity:.85}
.inv-row .amt{width:104px;flex:none;text-align:right;font-size:12.5px;font-weight:700;color:#4A5165}
.inv-row .sub{width:86px;flex:none;text-align:right;font-size:11px;color:#9AA0B4}
.inv-trend{display:flex;align-items:flex-end;gap:6px;height:170px;padding-top:18px}
.inv-trend .col{flex:1;display:flex;flex-direction:column;align-items:center;height:100%;min-width:0}
.inv-trend .v{font-size:10px;color:#9AA0B4;white-space:nowrap;height:14px;overflow:hidden}
.inv-trend .b{flex:1;width:100%;display:flex;align-items:flex-end;justify-content:center}
.inv-trend .b i{display:block;width:66%;background:linear-gradient(180deg,var(--brand2),var(--brand));border-radius:5px 5px 2px 2px;opacity:.85}
.inv-trend .m{font-size:10.5px;color:#9AA0B4;margin-top:5px;white-space:nowrap}
/* v5.26 每日收入明细表（一行一天，点开看当天明细） */
.inv-dwrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin-top:2px}
.inv-dtable{width:100%;border-collapse:collapse;font-size:12.5px;min-width:600px}
.inv-dtable th{font-size:11.5px;color:#9AA0B4;font-weight:600;text-align:right;padding:7px 8px;border-bottom:1px solid #F0F2F9;white-space:nowrap}
.inv-dtable th:first-child,.inv-dtable td:first-child{text-align:left}
.inv-dtable td{padding:9px 8px;border-bottom:1px dashed #F0F2F9;text-align:right;color:#4A5165;white-space:nowrap}
.inv-dtable tbody tr{cursor:pointer}
.inv-dtable tbody tr:hover td{background:#fdfaf8}
.inv-dtable tr.on td{background:var(--brand-soft)}
.inv-dtable td.dt{font-weight:600}
.inv-dtable td.tt{font-weight:700;color:var(--brand)}
.inv-dtable td.ex{font-size:11.5px;color:#9AA0B4}
.inv-dtable tr.det td{background:#FCFCFE;padding:2px 8px 10px;border-bottom:1px dashed #F0F2F9}
.inv-ddet{padding:4px 0 0}
.inv-ddet .r{display:flex;align-items:center;gap:8px;padding:5px 2px;font-size:12.5px;color:#4A5165}
.inv-ddet .r .kd{flex:none;font-size:11px;padding:1px 7px;border-radius:6px;background:#F0F2F9;color:#7C8398}
.inv-ddet .r .nm{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.inv-ddet .r .ct{flex:none;width:52px;text-align:right;font-size:11.5px;color:#9AA0B4}
.inv-ddet .r .am{flex:none;width:96px;text-align:right;font-weight:700}
.inv-ddet .r.sum{border-top:1px dashed #F0F2F9;margin-top:4px;padding-top:8px}
.inv-priv{font-size:11.5px;color:#9AA0B4;margin-top:9px;line-height:1.7}
@media(max-width:720px){
  .inv-row .nm{width:74px;font-size:12px}
  .inv-row .amt{width:82px;font-size:12px}
  .inv-row .sub{display:none}
  .inv-card .v{font-size:19px}
  .inv-trend{height:130px}
  .inv-trend .v{display:none}
  .inv-dtable{font-size:12px;min-width:540px}
  .inv-dtable th,.inv-dtable td{padding:8px 6px}
  .inv-ddet .r{font-size:12px}
  .inv-ddet .r .am{width:78px}
}

/* v5.27 报名收款（报价单 / 订单 / 上架课程） */
.shop-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.shop-kpi{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.shop-kpi .k{flex:1;min-width:150px;border:1px solid #F0F2F9;border-radius:11px;padding:11px 13px;background:#FCFCFE}
.shop-kpi .k .n{font-size:23px;font-weight:800;color:var(--brand);letter-spacing:-.3px}
.shop-kpi .k .t{font-size:12px;color:#7C8398;margin-top:2px}
.shop-kpi .k .s{font-size:12px;color:#9AA0B4;margin-top:3px}
.shop-kpi .k.wait{background:#fffaf3;border-color:#F1F3FA}
.shop-kpi .k.ok{background:var(--brand-soft);border-color:var(--brand-soft)}
/* v5.37 微信支付：还差什么 / 自检结果 的清单行 */
.wxp-row{display:flex;gap:9px;align-items:flex-start;padding:9px 11px;border:1px solid #F0F2F9;
  border-radius:10px;background:#FCFCFE;margin-top:8px}
.wxp-row .mk{flex:none;font-size:13px;line-height:1.5}
.wxp-row.ok{background:#f5fbf7;border-color:#d9ecdf}
.wxp-row b{font-size:12.5px;color:#4A5165}
.wxp-row .muted{font-size:11.5px;line-height:1.6}
.shop-form textarea{min-height:96px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12px}
.shop-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.shop-tb{width:100%;border-collapse:collapse;font-size:12.5px;min-width:660px}
.shop-tb th{font-size:11.5px;color:#9AA0B4;font-weight:600;text-align:left;padding:7px 8px;border-bottom:1px solid #F0F2F9;white-space:nowrap}
.shop-tb td{padding:9px 8px;border-bottom:1px dashed #F0F2F9;color:#4A5165;vertical-align:top}
.shop-tb td.mono{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:11.5px;color:#7C8398}
.shop-tb td.amt{font-weight:700;white-space:nowrap}
.shop-tb td.acts{white-space:nowrap}
.shop-tb td.acts button{margin:0 4px 4px 0;font-size:11.5px;padding:4px 9px;border-radius:8px}
.shop-st{display:inline-block;font-size:11px;padding:2px 8px;border-radius:7px;background:#F0F2F9;color:#7C8398;white-space:nowrap}
.shop-st.wait{background:#fdf6ec;color:#B07A2B}
.shop-st.ok{background:#eef7ef;color:#2E7D32}
.shop-st.back{background:var(--brand-soft);color:var(--brand)}
.shop-st.off{background:#F0F2F9;color:#9AA0B4}
.shop-form .row{margin-bottom:9px;flex:1;min-width:0}
.shop-form .row2{display:flex;gap:9px;flex-wrap:wrap}
.shop-form label{display:block;font-size:11.5px;color:#7C8398;margin-bottom:4px}
.shop-form input,.shop-form select,.shop-form textarea{width:100%;box-sizing:border-box;padding:9px 11px;font-size:13px;border:1px solid #E6E9F3;border-radius:9px;background:#FCFCFE;font-family:inherit;color:#2A3142}
.shop-form input[readonly]{background:#F2F4FA;color:#7C8398}
.shop-link{margin-top:10px;padding:10px 12px;background:#fbf7f5;border:1px dashed #E4E7F2;border-radius:9px;font-size:12.5px;word-break:break-all;color:#4A5165}
.shop-tip{font-size:11.5px;color:#9AA0B4;line-height:1.8;margin-top:9px}
@media(max-width:720px){
  .shop-tb{min-width:560px}
  .shop-kpi .k{min-width:calc(50% - 5px)}
  .shop-kpi .k .n{font-size:19px}
}

/* v5.28 报名收款：客户已付款提示 + 收款码管理 */
.shop-paidtip{margin-top:5px;font-size:11px;color:#B07A2B;background:#fdf6ec;border-radius:7px;padding:2px 7px;display:inline-block;white-space:nowrap}
.qr-wrap{display:flex;gap:12px;flex-wrap:wrap}
.qr-card{border:1px solid #F0F2F9;border-radius:12px;padding:10px;background:#FCFCFE;text-align:center;width:172px}
.qr-card img{width:100%;max-width:150px;border-radius:9px;border:1px solid #F0F2F9;background:#fff}
.qr-card .qn{margin-top:6px;font-size:12.5px;font-weight:600;color:#4A5165;word-break:break-all}
.qr-card button{margin-top:7px;font-size:11.5px;padding:4px 10px;border-radius:8px}
@media(max-width:720px){
  .qr-card{width:calc(50% - 6px)}
  .qr-card img{max-width:100%}
}

/* v5.28 开报价单 · 顺滑化：排课表选班 + 选填折叠 */
.shop-form select{width:100%;box-sizing:border-box;padding:11px 12px;font-size:14px;border:1px solid #E6E9F3;border-radius:10px;background:#FCFCFE;color:#2A3142;font-family:inherit}
.shop-form select:focus{outline:none;border-color:var(--brand);background:#fff}
.shop-more{margin-top:4px;border:1px dashed #E6E9F3;border-radius:11px;background:#fbf8f6;padding:0 12px}
.shop-more summary{cursor:pointer;padding:11px 2px;font-size:12.5px;color:#7C8398;user-select:none;list-style:none}
.shop-more summary::-webkit-details-marker{display:none}
.shop-more summary::before{content:'▸ ';}
.shop-more[open] summary::before{content:'▾ ';}
.shop-more[open] summary{border-bottom:1px dashed #E4E7F1;margin-bottom:10px}
.shop-more .row{margin-bottom:9px}

/* v5.29 开报价单 · 选班周历（与教务班级周历同一观感，紧凑版） */
.spk-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.spk-bar .btn{font-size:12px;padding:6px 10px}
.spk-bar select{padding:7px 9px;font-size:12.5px;border:1px solid #E6E9F3;border-radius:9px;background:#FCFCFE;color:#2A3142}
.spk-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:7px}
.spk-day{background:#fbf8f6;border:1px solid #F0F2F9;border-radius:10px;padding:6px;min-height:86px}
.spk-day.today{border-color:#e8b9c3;background:#fdf4f5}
.spk-day .dh{font-size:11px;color:#7C8398;font-weight:600;margin-bottom:5px;white-space:nowrap}
.spk-day.today .dh{color:var(--brand)}
.spk-day .none{font-size:10.5px;color:#C7CCD9;text-align:center;margin-top:22px}
.spk-card{background:#fff;border:1.5px solid #E4E7F1;border-left:3px solid var(--brand,var(--brand));border-radius:8px;padding:6px 7px;margin-bottom:6px;cursor:pointer;transition:box-shadow .12s,transform .12s}
.spk-card:hover{box-shadow:0 3px 10px color-mix(in srgb, var(--brand) 13%, transparent);transform:translateY(-1px)}
.spk-card.sel{border-color:var(--brand);background:var(--brand-soft,#fdf2f4);box-shadow:0 0 0 2px color-mix(in srgb, var(--brand) 18%, transparent)}
.spk-card .nm{font-size:11.5px;font-weight:700;color:#2A3142;line-height:1.35}
.spk-card .sub{font-size:10.5px;color:#7C8398;margin-top:2px;line-height:1.3}
.spk-card .ft{display:flex;align-items:center;gap:5px;margin-top:4px;flex-wrap:wrap}
.spk-card .ft .n{font-size:10.5px;color:#9AA0B4}
.spk-card .jx-pill{font-size:10px;padding:1px 6px}
.spk-pend{margin-top:8px}
.spk-pend>b{font-size:11.5px;color:#7C8398}
.spk-pends{display:flex;gap:7px;flex-wrap:wrap;margin-top:6px}
.spk-pends .spk-card{width:210px}
.spk-info{margin-top:9px;padding:9px 12px;background:#f2faf3;border:1px solid #cfe8d4;border-radius:10px;font-size:12.5px;color:#2E7D32}
.spk-info .muted{font-size:11px}
@media(max-width:900px){
  .spk-grid{grid-template-columns:repeat(4,1fr)}
  .spk-day{min-height:74px}
}
@media(max-width:560px){
  .spk-grid{grid-template-columns:repeat(2,1fr)}
}

/* ================= v5.33 销售工作台 · 全链打通 ================= */
.sd-top{display:flex;align-items:flex-end;gap:14px;flex-wrap:wrap;margin-bottom:12px}
.sd-hello{flex:1;min-width:200px}
.sd-hello .hi{font-size:20px;font-weight:800;color:#1B202E;letter-spacing:-.3px}
.sd-hello .sub{font-size:12.5px;color:#7C8398;margin-top:4px}
.sd-who{display:flex;align-items:center;gap:8px}
.sd-who label{font-size:11.5px;color:#9AA0B4}
.sd-who select{padding:7px 10px;font-size:12.5px;border:1px solid #E6E9F3;border-radius:9px;background:#fff;color:#2A3142;font-family:inherit}
.sd-chip{display:inline-block;font-size:12px;padding:5px 11px;border-radius:20px;background:var(--brand-soft);color:var(--brand);font-weight:600}
.sd-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:14px}
.sd-kpi{border:1px solid #F0F2F9;border-radius:13px;padding:12px 14px;background:#FCFCFE;position:relative;overflow:hidden}
.sd-kpi::after{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:#E5E8F2}
.sd-kpi.todo::after{background:var(--brand)}
.sd-kpi.wait::after{background:#E0A030}
.sd-kpi.ok::after{background:#2E9E5B}
.sd-kpi .n{font-size:26px;font-weight:800;color:#1B202E;letter-spacing:-.6px;line-height:1.1}
.sd-kpi .t{font-size:12px;color:#7C8398;margin-top:3px;font-weight:600;white-space:nowrap}
.sd-kpi .s{font-size:11.5px;color:#9AA0B4;margin-top:3px}
.sd-tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px;border-bottom:1px solid #F0F2F9;padding-bottom:2px}
.sd-tabs button{border:0;background:none;font-family:inherit;font-size:13px;font-weight:600;color:#7C8398;padding:9px 13px;border-radius:9px 9px 0 0;cursor:pointer;position:relative;transition:.15s}
.sd-tabs button:hover{background:#fbf6f4;color:#2A3142}
.sd-tabs button.on{color:var(--brand);background:#fdf4f5}
.sd-tabs button.on::after{content:"";position:absolute;left:10px;right:10px;bottom:-2px;height:2.5px;border-radius:2px;background:var(--brand)}
.sd-tabs button b{margin-left:6px;font-size:10.5px;background:#F1F3FA;color:#7C8398;border-radius:9px;padding:1px 6px;font-weight:700}
.sd-tabs button.on b{background:var(--brand);color:#fff}
.sd-loading{padding:16px 2px;color:#9AA0B4;font-size:12.5px}
.sd-sec{margin-bottom:18px}
.sd-sec-h{display:flex;align-items:center;gap:9px;margin-bottom:9px}
.sd-sec-h b{font-size:13.5px;color:#2A3142}
.sd-sec-h .muted{font-size:11.5px}
.sd-sec-h .cnt{margin-left:auto;font-size:11.5px;color:#9AA0B4;background:#F2F4FA;border-radius:9px;padding:2px 9px;font-weight:700}
.sd-done{text-align:center;padding:46px 16px;color:#7C8398}
.sd-done .big{font-size:38px}
.sd-done .t{font-size:15px;font-weight:700;color:#2A3142;margin-top:8px}
.sd-done .s{font-size:12.5px;margin-top:7px;line-height:1.7}
.sd-todo-list{display:flex;flex-direction:column;gap:8px}
.sd-todo{display:flex;align-items:center;gap:12px;border:1px solid #F0F2F9;border-radius:12px;padding:11px 13px;background:#fff;transition:box-shadow .15s,transform .15s}
.sd-todo:hover{box-shadow:0 4px 14px color-mix(in srgb, var(--brand) 7%, transparent);transform:translateY(-1px)}
.sd-todo .ic{width:34px;height:34px;border-radius:10px;background:#fbf3f5;display:flex;align-items:center;justify-content:center;font-size:17px;flex-shrink:0}
.sd-todo .bd{flex:1;min-width:0}
.sd-todo .tt{font-size:13.5px;font-weight:700;color:#1B202E}
.sd-todo .ss{font-size:11.5px;color:#7C8398;margin-top:2px;line-height:1.5}
.sd-todo .ac{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}
.sd-todo .ac button{font-size:12px;padding:6px 11px;border-radius:9px}
.sd-filter{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:12px}
.sd-pill{font-size:12px;color:#7C8398;background:#F2F4FA;border-radius:20px;padding:5px 11px;font-weight:600;white-space:nowrap}
.sd-pill b{margin-left:4px;color:#2A3142}
.sd-pill.in{background:#eef7ef;color:#2E7D32}
.sd-pill.wait{background:#fdf6ec;color:#B07A2B}
.sd-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(276px,1fr));gap:10px}
.sd-card{border:1px solid #F0F2F9;border-radius:13px;padding:12px 13px;background:#fff;transition:box-shadow .15s,transform .15s}
.sd-card:hover{box-shadow:0 5px 16px color-mix(in srgb, var(--brand) 8%, transparent);transform:translateY(-1px)}
.sd-card.overdue{border-color:#f3d9c9;background:#fffdf9}
.sd-card .top{display:flex;align-items:center;gap:7px;margin-bottom:5px;flex-wrap:wrap}
.sd-card .top b{font-size:14px;color:#1B202E}
.sd-card .line{font-size:12px;color:#5C6378;line-height:1.65}
.sd-card .line.muted,.sd-card .muted{color:#9AA0B4}
.sd-card .acts{display:flex;gap:6px;flex-wrap:wrap;margin-top:9px}
.sd-card .acts button{font-size:11.5px;padding:5px 10px;border-radius:8px}
.lv{font-size:10.5px;font-weight:800;padding:1px 7px;border-radius:7px;background:#F1F3FA;color:#7C8398}
.lv-h{background:#fdecea;color:#C0392B}
.lv-a{background:#fdf6ec;color:#B07A2B}
.lv-b{background:#eef4fb;color:#3A6EA5}
.lv-c{background:#f2f2f0;color:#7C8398}
.sd-flag{font-size:10.5px;background:var(--brand-soft);color:var(--brand);border-radius:7px;padding:1px 7px;font-weight:700}
.sd-chainbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.sd-chainbar .inp{min-width:230px;flex:1;max-width:420px;padding:9px 12px;font-size:13px;border:1px solid #E6E9F3;border-radius:10px;background:#fff;font-family:inherit}
.sd-chainbar .sp{flex:0 0 8px}
.sd-chainlist{display:flex;flex-direction:column;gap:9px}
.sd-chain{border:1px solid #F0F2F9;border-radius:13px;background:#fff;overflow:hidden;transition:box-shadow .15s}
.sd-chain:hover{box-shadow:0 4px 14px color-mix(in srgb, var(--brand) 7%, transparent)}
.sd-chain .head{display:flex;align-items:center;gap:12px;padding:12px 14px;cursor:pointer}
.sd-chain .who{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:170px}
.sd-chain .who b{font-size:14px;color:#1B202E}
.sd-chain .meta{flex:1;font-size:11.5px;color:#7C8398;line-height:1.5;min-width:0}
.sd-chain .num{font-size:13.5px;font-weight:800;color:#1B202E;white-space:nowrap;text-align:right}
.sd-chain .num .hrs{display:block;font-size:10.5px;font-weight:600;color:#2E9E5B;margin-top:2px}
.sd-chain .chev{color:#BEC3D2;font-size:11px;transition:transform .18s}
.sd-chain.open .chev{transform:rotate(180deg)}
.sd-chain .body{display:none;padding:0 14px 14px;border-top:1px dashed #F0F2F9}
.sd-chain.open .body{display:block}
.st{font-size:10.5px;font-weight:700;border-radius:7px;padding:2px 8px;white-space:nowrap}
.st.lead{background:#F0F2F9;color:#7C8398}
.st.quote{background:#fdf6ec;color:#B07A2B}
.st.won{background:#eef7ef;color:#2E7D32}
.st.in{background:#e8f4ff;color:#2A6BB0}
.st.lost{background:#f6f1f1;color:#9AA0B4}
.st.wait{background:#fdf6ec;color:#B07A2B}
.st.ok{background:#eef7ef;color:#2E7D32}
.st.off{background:#F0F2F9;color:#9AA0B4}
.sd-steps{display:flex;align-items:flex-start;gap:0;padding:14px 2px 6px;overflow-x:auto}
.sd-steps .st{background:none;padding:0;text-align:center;flex:1;min-width:64px;position:relative;color:#9AA0B4}
.sd-steps .st::before{content:"";position:absolute;top:9px;left:-50%;width:100%;height:2px;background:#EDEFF7}
.sd-steps .st:first-child::before{display:none}
.sd-steps .st.on::before{background:#f0c4ce}
.sd-steps .dot{width:20px;height:20px;border-radius:50%;background:#f3eeea;color:#fff;font-size:11px;line-height:20px;margin:0 auto 5px;position:relative;z-index:1;font-weight:700}
.sd-steps .st.on .dot{background:var(--brand)}
.sd-steps .nm{font-size:11.5px;font-weight:700}
.sd-steps .st.on .nm{color:#2A3142}
.sd-steps .ct{font-size:10.5px;color:#B1B6C7}
.sd-cols{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;padding-top:10px}
.sd-cols .col{background:#FCFCFE;border:1px solid #F0F2F9;border-radius:11px;padding:10px 11px}
.sd-cols .ch{font-size:12px;font-weight:800;color:#5C6378;margin-bottom:8px}
.sd-cols .item{font-size:12.5px;color:#343C4E;padding:7px 0;border-top:1px dashed #F0F2F9;line-height:1.6}
.sd-cols .item:first-of-type{border-top:0;padding-top:2px}
.sd-cols .item b{color:#1B202E}
.sd-cols .tiny{font-size:11px;line-height:1.6}
.sd-cols .acts{display:flex;gap:6px;margin-top:6px;flex-wrap:wrap}
.sd-cols .acts button.sm{font-size:11px;padding:4px 9px;border-radius:8px}
.sd-cols .warn{color:#B07A2B}
.sd-cols .hrs-line{margin-top:8px;font-size:12px;color:#2E7D32;background:#eef7ef;border-radius:8px;padding:6px 9px}
.sd-orderbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.sd-orderbar .sp{flex:1}
.sd-perf{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:16px}
.sd-perf .big{border:1px solid #F0F2F9;border-radius:13px;padding:14px;background:#FCFCFE;text-align:center}
.sd-perf .big .n{font-size:23px;font-weight:800;color:var(--brand);letter-spacing:-.5px}
.sd-perf .big .t{font-size:11.5px;color:#7C8398;margin-top:4px;font-weight:600}
.sd-rank{display:flex;flex-direction:column;gap:6px}
.sd-rank .r{display:flex;align-items:center;gap:11px;padding:9px 12px;border:1px solid #F0F2F9;border-radius:11px;background:#fff}
.sd-rank .r.me{background:#fdf4f5;border-color:#f0c4ce}
.sd-rank .no{width:22px;height:22px;border-radius:50%;background:#F0F2F9;color:#7C8398;font-size:11.5px;font-weight:800;line-height:22px;text-align:center;flex-shrink:0}
.sd-rank .no.n1{background:var(--brand);color:#fff}
.sd-rank .no.n2{background:var(--brand2);color:#fff}
.sd-rank .no.n3{background:#e0a6b6;color:#fff}
.sd-rank .r b{font-size:13px;color:#1B202E}
.sd-rank .r .muted{font-size:11.5px}
.sd-rank .r .amt{margin-left:auto;font-size:13.5px;font-weight:800;color:#1B202E}
.sd-lk{background:#FCFCFE;border:1px solid #F0F2F9;border-radius:11px;padding:10px 12px;margin-bottom:12px}
.sd-lk b{font-size:14px;color:#1B202E}
.sd-lk .lv{margin-left:7px}
.sd-lk .tiny{font-size:11.5px;line-height:1.7}
.sd-stage-pick{display:flex;gap:6px;flex-wrap:wrap}
.sd-stage-pick button{border:1px solid #E6E9F3;background:#fff;color:#5C6378;font-family:inherit;font-size:12px;font-weight:600;padding:6px 12px;border-radius:20px;cursor:pointer;transition:.15s}
.sd-stage-pick button:hover{border-color:#e0b5c0}
.sd-stage-pick button.on{background:var(--brand);border-color:var(--brand);color:#fff}
@media(max-width:900px){
  .sd-kpis{grid-template-columns:repeat(2,1fr)}
  .sd-perf{grid-template-columns:repeat(2,1fr)}
  .sd-cols{grid-template-columns:1fr}
}
@media(max-width:560px){
  .sd-kpis{grid-template-columns:1fr 1fr}
  .sd-kpi .n{font-size:22px}
  .sd-hello .hi{font-size:17px}
  .sd-todo{flex-wrap:wrap}
  .sd-todo .ac{width:100%;justify-content:flex-start}
  .sd-chain .head{flex-wrap:wrap}
  .sd-chain .num{text-align:left}
  .sd-cards{grid-template-columns:1fr}
  .sd-chainbar .inp{min-width:0;flex:1 1 100%}
}

/* ===== v5.46 视觉统一：分组标题去装饰、导航留白更松 ===== */
.grp-h{text-transform:none;letter-spacing:.4px;font-weight:600;font-size:11.5px;color:#AEB3C4}
.grp.open .grp-h,.grp.has-on .grp-h{color:var(--ink)}
.nav a{padding:8px 11px;font-weight:500}
.nav a.on{font-weight:600}
.grp-b{margin:2px 0 8px 4px}

/* ===== v5.47 WorkBuddy 风格外壳：冷浅底 / 大标题 / 轻卡片 / 去噪音 =====
   （v5.42 起并入上方令牌体系，底色与侧栏跟主题走） */
.side{border-right:1px solid rgba(255,255,255,.72)}
.logo h1{font-weight:700;letter-spacing:.2px}
.nav a{border-radius:10px;margin:1px 4px;color:#4b5568}
.nav a:hover{background:var(--sidebar-hover)}
.nav a.on{background:var(--brand-soft);color:var(--brand-dark);font-weight:600;box-shadow:none}
.grp-h{color:#a0a9ba}
.rolebox select{border-color:var(--line)}
.side .foot{color:var(--muted);border-top-color:var(--line)}
::-webkit-scrollbar-thumb{background:#ccd3de;border-radius:4px}
::-webkit-scrollbar-thumb:hover{background:#b8c1cf}

/* ===== v5.43 旧的「WorkBuddy 式页头」补丁已并入顶部外壳（顶栏隐形 + 页面内大标题），
   此处不再覆盖 topbar / card / body-main，避免两层规则打架 ===== */
.btn{border-radius:10px}
/* v5.43 说明类卡片默认收起，不占主屏 */
details.card.dash-flow{padding:0}
details.card.dash-flow > summary{font-size:12.5px;font-weight:600;color:var(--muted);cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;padding:16px 24px;user-select:none}
details.card.dash-flow > summary::-webkit-details-marker{display:none}
details.card.dash-flow > summary:hover{color:var(--brand)}
details.card.dash-flow > summary:after{content:"展开";margin-left:auto;font-size:11px;font-weight:500;color:var(--muted-2,#A2A8BC)}
details.card.dash-flow[open] > summary:after{content:"收起"}
details.card.dash-flow[open] > summary{padding-bottom:0}
details.card.dash-flow > .muted{padding:0 24px 20px}

/* ===== v5.47 TMK 获客：严格对照「设计图-TMK工作台」数值，勿临时改 =====
   三条铁律：① 页面直接铺三组「标题 + 白卡」，不再卡中卡
             ② 三个栏目标题同一规格 17px/700，说明文字 11.5px/--muted2
             ③ 卡片只用 --sh-card 双层柔影，不描边 */
#tmkCards{display:none}
.tmk-tabs.hide{display:none}
/* 页面不包卡：标题区与三个栏目直接落在页面背景上 */
.tmk-page{background:transparent;padding:0;margin:0;box-shadow:none;border:none}
/* ---- 页面标题区（设计图 .ph） ---- */
.tmk-head{display:flex;align-items:flex-start;gap:24px;padding-top:26px}
/* v5.49 页头是「今日任务」开场，不是每页都套一遍的模板：子页隐藏，页签顶到最上面 */
.tmk-head.hide{display:none}
.tmk-head > div:first-child{min-width:0}
.tmk-head h3{font-size:26px;font-weight:700;letter-spacing:.4px;line-height:1.2;margin-bottom:0;color:var(--ink);display:block}
.tmk-head .tmk-sub{font-size:13px;color:var(--muted);margin-top:9px;letter-spacing:.1px}
.tmk-head .btn{height:37px;padding:0 17px;border-radius:10px;font-size:13.5px;font-weight:600;margin-top:23px}
.tmk-art{margin-left:auto;margin-top:-2px;flex-shrink:0;pointer-events:none}
@media (max-width:1120px){.tmk-art{display:none}}
/* ---- 栏目（设计图 .sec / .sec-h） ---- */
.tmk-sec2{margin-top:36px}
.tmk-sec2-h{display:flex;align-items:baseline;gap:14px;margin-bottom:13px;flex-wrap:wrap}
.tmk-sec2-h h4{font-size:17px;font-weight:700;letter-spacing:.2px;color:var(--ink);line-height:1.3}
.tmk-sec2-h .note{font-size:11.5px;color:var(--muted2);margin-left:2px}
.tmk-sec2-h .rt{margin-left:auto;font-size:12px;color:var(--muted2);cursor:pointer;display:inline-flex;align-items:center;gap:5px;transition:.15s}
.tmk-sec2-h .rt:hover{color:var(--brand-dark)}
.tmk-sec2-h .rt svg{width:12px;height:12px;stroke:currentColor;stroke-width:1.8;fill:none;stroke-linecap:round;stroke-linejoin:round}
/* ---- 卡（设计图 .card：无描边，双层柔影，14px 圆角） ---- */
.tmk-flowcard{background:var(--surface);border-radius:var(--r-card);box-shadow:var(--sh-card);border:none}
.tmk-flowcard.tmk-plain{background:var(--surface)}
/* ---- 流程条（设计图 .flow） ---- */
.tmk-flow{display:flex;align-items:flex-start;padding:22px 26px 14px}
.tmk-fnode{flex:1;display:flex;flex-direction:column;align-items:center;text-align:center;cursor:pointer;border-radius:12px;padding:6px 4px 12px;transition:background .16s;min-width:0}
.tmk-fnode:hover{background:color-mix(in srgb, var(--brand) 9%, var(--surface))}
.tmk-fnode .fic{width:38px;height:38px;border-radius:12px;background:color-mix(in srgb, var(--brand) 15%, var(--surface));display:grid;place-items:center;transition:background .16s}
.tmk-fnode:hover .fic{background:color-mix(in srgb, var(--brand) 24%, var(--surface))}
.tmk-fnode .fic svg{width:18px;height:18px;stroke:var(--brand-dark);stroke-width:1.8;fill:none;stroke-linecap:round;stroke-linejoin:round}
.tmk-fnode b{font-size:21px;font-weight:700;margin-top:9px;letter-spacing:-.2px;line-height:1.1;color:var(--ink)}
.tmk-fnode span{font-size:12px;color:var(--ink);font-weight:600;margin-top:4px}
.tmk-fnode i{font-style:normal;font-size:10.5px;color:var(--muted2);margin-top:3px;line-height:1.5}
.tmk-fnode.is-hot b{color:var(--brand-dark)}
.tmk-fnode.is-hot .fic{background:color-mix(in srgb, var(--brand) 24%, var(--surface))}
.tmk-farrow{width:26px;height:2px;border-radius:2px;background:linear-gradient(90deg,#D9DFF5,#C4CDEE);flex-shrink:0;margin-top:39px;position:relative}
.tmk-farrow::after{content:"";position:absolute;right:-2px;top:-3.5px;border:4.5px solid transparent;border-left-color:#BCC5EC}
.tmk-fnote{display:flex;align-items:center;gap:7px;border-top:1px solid #F0F2FA;margin:0 26px;padding:11px 2px 13px;font-size:11.5px;color:var(--muted2)}
.tmk-fnote svg{width:13px;height:13px;stroke:var(--muted2);stroke-width:1.7;fill:none;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}
/* ---- 任务行（设计图 .task） ---- */
.tmk-task{display:flex;align-items:center;gap:14px;padding:17px 22px}
.tmk-task + .tmk-task{border-top:1px solid #F2F4FB}
.tmk-task .ic{width:36px;height:36px;border-radius:11px;background:color-mix(in srgb, var(--brand) 9%, var(--surface));display:grid;place-items:center;flex-shrink:0}
.tmk-task .ic svg{width:17px;height:17px;stroke:var(--muted);stroke-width:1.8;fill:none;stroke-linecap:round;stroke-linejoin:round}
.tmk-task > div{min-width:0;flex:1}
.tmk-task b{display:block;font-size:13.5px;font-weight:600;color:var(--ink);letter-spacing:.1px}
.tmk-task b .tag{font-style:normal;font-weight:600;font-size:11px;color:var(--brand-dark);margin-left:7px}
.tmk-task i{display:block;font-style:normal;font-size:11.5px;color:var(--muted2);margin-top:4px;line-height:1.55}
.tmk-task .acts{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end;flex-shrink:0;align-items:center}
/* 任务行按钮：主/次同一尺寸规格（设计图 .btn-ghost） */
.tmk-task .ghost{height:32px;padding:0 15px;border-radius:9px;border:1px solid #E4E7F3;background:var(--surface);font-size:12.5px;font-weight:600;color:var(--brand-dark);cursor:pointer;font-family:inherit;transition:.15s;flex-shrink:0;box-shadow:none}
.tmk-task .ghost:hover{background:color-mix(in srgb, var(--brand) 8%, var(--surface));border-color:#D5DBF6;color:var(--brand-dark)}
.tmk-task .btn.pri{height:33px;padding:0 16px;border-radius:9px;font-size:12.5px;font-weight:600;flex-shrink:0}
.tmk-sec2-h .rt span{cursor:pointer}
.tmk-task.is-next .ic{background:color-mix(in srgb, var(--muted) 9%, var(--surface))}
.tmk-task.is-next .ic svg{stroke:var(--muted2)}
.tmk-task.is-next b{font-weight:600;color:var(--ink)}
/* ---- 入口小卡（设计图 .grid3 / .tile） ---- */
.tmk-grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
@media (max-width:900px){.tmk-grid3{grid-template-columns:1fr}.tmk-flow{flex-wrap:wrap}.tmk-farrow{display:none}.tmk-fnode{flex:1 1 40%}}
.tmk-tile{display:flex;align-items:flex-start;gap:13px;padding:18px 19px;position:relative;cursor:pointer;transition:.16s;background:var(--surface);border-radius:var(--r-card);box-shadow:var(--sh-card);border:none}
.tmk-tile:hover{background:color-mix(in srgb, var(--brand) 7%, var(--surface));box-shadow:var(--sh-hover);transform:translateY(-1px)}
.tmk-tile .ic{width:36px;height:36px;border-radius:11px;background:color-mix(in srgb, var(--brand) 15%, var(--surface));display:grid;place-items:center;flex-shrink:0;transition:.16s}
.tmk-tile:hover .ic{background:color-mix(in srgb, var(--brand) 24%, var(--surface))}
.tmk-tile .ic svg{width:17px;height:17px;stroke:var(--brand-dark);stroke-width:1.8;fill:none;stroke-linecap:round;stroke-linejoin:round}
.tmk-tile b{display:block;font-size:13.5px;font-weight:600;color:var(--ink);letter-spacing:.1px}
.tmk-tile i{display:block;font-style:normal;font-size:11.5px;color:var(--muted2);margin-top:5px;line-height:1.55}
.tmk-tile .bdg{position:absolute;top:13px;right:14px;min-width:17px;height:17px;padding:0 5px;border-radius:9px;background:var(--danger);color:#fff;font-size:10px;font-weight:700;display:grid;place-items:center;box-shadow:0 1px 3px color-mix(in srgb, var(--danger) 35%, transparent)}


/* v5.48 任务行实心主按钮（派推荐） */
.tmk-task .ghost.pri{background:var(--brand);border-color:var(--brand);color:#fff}
.tmk-task .ghost.pri:hover{background:var(--brand2);border-color:var(--brand2);color:#fff}

/* ============================================================
   v5.50 工作台骨架（销售台 / 教务台）：与 TMK 同一套规范
   ① 页头只给工作台首页，子页签不重复
   ② 数字条不套卡、不用竖色条
   ③ 每组 = 17px 标题 + 白卡（--sh-card 无描边）
   ④ 按钮/图标统一，去 emoji、去硬编码色
   ============================================================ */
.wb-page{background:transparent;padding:0;margin:0;box-shadow:none;border:none}

/* ---- 页头 ---- */
.wb-head{display:flex;align-items:flex-start;gap:24px;padding-top:26px}
.wb-head h3{font-size:26px;font-weight:700;line-height:1.2;letter-spacing:.4px;color:var(--ink);margin:0}
.wb-head .sub{font-size:13px;color:var(--muted);margin-top:9px;letter-spacing:.1px}
.wb-head-r{margin-left:auto;flex-shrink:0;display:flex;align-items:center;gap:12px;padding-top:3px}
.wb-head-r label{font-size:11.5px;color:var(--muted2);font-weight:500}
.wb-head-r select{height:33px;padding:0 10px;border:1px solid var(--line);border-radius:9px;background:var(--surface);
  font-family:inherit;font-size:12.5px;color:var(--ink);cursor:pointer}
.wb-head-r select:focus{outline:none;border-color:color-mix(in srgb,var(--brand) 50%,var(--line))}
.wb-who{font-size:12.5px;color:var(--muted);background:color-mix(in srgb,var(--brand) 7%,var(--surface));
  border-radius:999px;padding:5px 13px;font-weight:600;color:var(--brand-dark)}

/* ---- 数字条：一排数字 + 细竖线，不套卡 ---- */
.wb-stats{display:flex;flex-wrap:wrap;align-items:flex-start;margin:26px 0 0}
.wb-stat{padding:0 34px 0 0}
.wb-stat + .wb-stat{border-left:1px solid color-mix(in srgb,var(--line) 60%,transparent);padding-left:34px}
.wb-stat b{display:block;font-size:23px;font-weight:700;line-height:1;color:var(--ink);
  font-variant-numeric:tabular-nums;letter-spacing:-.5px}
.wb-stat span{display:block;font-size:11.5px;color:var(--muted);margin-top:7px;font-weight:500;letter-spacing:.1px}
.wb-stat em{display:block;font-style:normal;font-size:11px;color:var(--muted2);margin-top:3px}
.wb-stat.alert b{color:var(--warn)}
.wb-stat.ok b{color:var(--ok)}

/* ---- 工具条：一条安静的行，不套卡 ---- */
.wb-toolbar{display:flex;flex-wrap:wrap;gap:9px;align-items:center;margin:-4px 0 26px}
.wb-toolbar.hide{display:none}
.wb-toolbar input,.wb-toolbar select{height:33px;padding:0 10px;border:1px solid var(--line);border-radius:9px;
  background:var(--surface);font-family:inherit;font-size:12.5px;color:var(--ink);min-width:0}
.wb-toolbar input::placeholder{color:var(--muted2)}
.wb-toolbar input:focus,.wb-toolbar select:focus{outline:none;border-color:color-mix(in srgb,var(--brand) 50%,var(--line))}
.wb-toolbar .sp{flex:1 1 auto}
.wb-toolbar .hint{font-size:11.5px;color:var(--muted2)}

/* ---- 分组：17px 标题 + 白卡 ---- */
.wb-sec{margin-top:0}
.wb-sec + .wb-sec{margin-top:36px}
.wb-sec-h{display:flex;align-items:baseline;gap:14px;margin-bottom:13px;flex-wrap:wrap}
.wb-sec-h b{font-size:17px;font-weight:700;color:var(--ink);letter-spacing:.2px}
.wb-sec-h .d{font-size:11.5px;color:var(--muted2)}
.wb-sec-h .r{margin-left:auto;display:flex;align-items:center;gap:8px}
.wb-card{background:var(--surface);border-radius:var(--r-card);box-shadow:var(--sh-card);padding:22px 24px}
.wb-card.flush{padding:4px 24px}

/* ---- 两页内按钮统一成行内小按钮规格 ---- */
#view-sales-desk .btn,#view-teach .btn,#view-sales-desk .ghost,#view-teach .ghost,
#sdBody .btn,#sdBody .ghost,#jxBody .btn,#jxBody .ghost,
#sdTabs .btn,#jxTools .btn,#jxTools .ghost{
  height:29px;padding:0 12px;border-radius:8px;border:1px solid var(--line);background:var(--surface);
  font-family:inherit;font-size:11.5px;font-weight:600;color:var(--ink);cursor:pointer;opacity:.9;
  transition:.15s;box-shadow:none;line-height:1;white-space:nowrap}
#view-sales-desk .btn:hover,#view-teach .btn:hover,#view-sales-desk .ghost:hover,#view-teach .ghost:hover{
  border-color:color-mix(in srgb,var(--brand) 45%,var(--line));color:var(--brand-dark);
  background:color-mix(in srgb,var(--brand) 6%,var(--surface));opacity:1}
#view-sales-desk .btn.pri,#view-teach .btn.pri{background:var(--brand);border-color:var(--brand);color:#fff;opacity:1}
#view-sales-desk .btn.pri:hover,#view-teach .btn.pri:hover{background:var(--brand2);border-color:var(--brand2)}
.wb-btn-pri{height:37px;padding:0 17px;border-radius:10px;border:1px solid var(--brand);background:var(--brand);
  color:#fff;font-family:inherit;font-size:13.5px;font-weight:600;cursor:pointer;transition:.15s;white-space:nowrap}
.wb-btn-pri:hover{background:var(--brand2);border-color:var(--brand2)}

/* ---- 空态：一行图标 + 一句话 + 一个出口 ---- */
.wb-empty{display:flex;align-items:center;gap:13px;background:var(--surface);border-radius:var(--r-card);
  box-shadow:var(--sh-card);padding:18px 22px}
.wb-empty .ic{width:30px;height:30px;border-radius:9px;background:var(--brand-soft);color:var(--brand-dark);
  display:grid;place-items:center;font-size:14px;flex-shrink:0}
.wb-empty .bd{min-width:0}
.wb-empty .bd b{display:block;font-size:13.5px;font-weight:600;color:var(--ink)}
.wb-empty .bd span{display:block;font-size:11.5px;color:var(--muted2);margin-top:4px;line-height:1.6}
.wb-empty .ac{margin-left:auto;flex-shrink:0}

/* ---------- 销售台：子页收敛 ---------- */
#sdBody .sd-sec{margin-bottom:0}
#sdBody .sd-sec + .sd-sec{margin-top:36px}
#sdBody .sd-sec-h{align-items:baseline;gap:14px;margin-bottom:13px}
#sdBody .sd-sec-h b{font-size:17px;font-weight:700;color:var(--ink);letter-spacing:.2px}
#sdBody .sd-sec-h .muted{font-size:11.5px;color:var(--muted2)}
#sdBody .sd-sec-h .cnt{margin-left:auto;font-size:11.5px;color:var(--muted2);background:none;padding:0;font-weight:500}
#sdBody .sd-todo-list{display:block;background:var(--surface);border-radius:var(--r-card);
  box-shadow:var(--sh-card);padding:4px 24px}
#sdBody .sd-todo{display:flex;align-items:center;gap:14px;border:0;border-radius:0;padding:14px 0;
  background:none;border-bottom:1px solid color-mix(in srgb,var(--line) 55%,transparent);transition:none}
#sdBody .sd-todo:last-child{border-bottom:0}
#sdBody .sd-todo:hover{box-shadow:none;transform:none}
#sdBody .sd-todo .ic{width:27px;height:27px;border-radius:8px;background:var(--brand-soft);color:var(--brand-dark);
  display:grid;place-items:center;font-size:12px;font-weight:700;flex-shrink:0;line-height:1}
#sdBody .sd-todo .bd{min-width:0;flex:1}
#sdBody .sd-todo .tt{font-size:13px;font-weight:600;color:var(--ink)}
#sdBody .sd-todo .ss{font-size:11.5px;color:var(--muted2);margin-top:3px}
#sdBody .sd-todo .ac{display:flex;gap:8px;flex-shrink:0}
#sdBody .sd-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(310px,1fr));gap:14px}
#sdBody .sd-card{border:0;border-radius:var(--r-card);background:var(--surface);box-shadow:var(--sh-card);
  padding:18px 20px;transition:box-shadow .15s}
#sdBody .sd-card:hover{box-shadow:var(--sh-hover)}
#sdBody .sd-card.overdue{box-shadow:var(--sh-card),inset 3px 0 0 var(--warn)}
#sdBody .sd-card .top b{font-size:14px;font-weight:600;color:var(--ink)}
#sdBody .sd-card .line{font-size:11.5px;color:var(--muted);margin-top:5px;line-height:1.6}
#sdBody .sd-card .line.muted{color:var(--muted2);font-size:11px}
#sdBody .sd-card .acts{display:flex;gap:8px;margin-top:14px;flex-wrap:wrap}
#sdBody .sd-filter{display:flex;gap:18px;flex-wrap:wrap;margin-bottom:22px}
#sdBody .sd-pill{font-size:11.5px;color:var(--muted);background:none;border:0;padding:0;font-weight:500}
#sdBody .sd-pill b{font-size:13px;font-weight:700;color:var(--ink);margin-left:5px;font-variant-numeric:tabular-nums}
#sdBody .sd-pill.in b{color:var(--ok)}
#sdBody .sd-done{text-align:left;padding:0}
#sdBody .sd-chainbar{display:flex;gap:9px;align-items:center;flex-wrap:wrap;margin-bottom:22px}
#sdBody .sd-chainbar .inp{height:33px;padding:0 12px;border:1px solid var(--line);border-radius:9px;
  background:var(--surface);font-family:inherit;font-size:12.5px;min-width:260px}
#sdBody .sd-chainbar .sp{flex:1 1 auto}
#sdBody .sd-chainlist{background:var(--surface);border-radius:var(--r-card);box-shadow:var(--sh-card);padding:4px 24px}
#sdBody .sd-chain{border:0;border-radius:0;background:none;border-bottom:1px solid color-mix(in srgb,var(--line) 55%,transparent)}
#sdBody .sd-chain:last-child{border-bottom:0}
#sdBody .sd-chain .head{padding:15px 0;gap:14px}
#sdBody .sd-chain .who b{font-size:13.5px;font-weight:600}
#sdBody .sd-chain .meta{font-size:11.5px;color:var(--muted2)}

/* ---------- 教务台：子页收敛 ---------- */
#jxTools .jx-gran{border:1px solid var(--line);border-radius:9px;overflow:hidden;display:inline-flex}
#jxTools .jx-gran button{height:31px;padding:0 13px;border:0;border-radius:0;background:var(--surface);
  font-size:12px;font-weight:600;color:var(--muted);box-shadow:none}
#jxTools .jx-gran button.on{background:var(--brand);color:#fff}
#jxTools .jx-zoom{display:inline-flex;border:1px solid var(--line);border-radius:9px;overflow:hidden}
#jxTools .jx-zoom button{height:31px;padding:0 10px;border:0;border-radius:0;background:var(--surface);
  font-size:11.5px;font-weight:600;color:var(--muted);box-shadow:none}
#jxTools .jx-zoom button:hover{background:color-mix(in srgb,var(--brand) 6%,var(--surface));color:var(--brand-dark)}
#jxBody .jx-cls{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:14px}
#jxBody .jx-c{border:0;border-radius:var(--r-card);background:var(--surface);box-shadow:var(--sh-card);padding:18px 20px}
#jxBody .jx-c .h{display:flex;align-items:flex-start;gap:12px}
#jxBody .jx-c .nm{font-size:14px;font-weight:600;color:var(--ink)}
#jxBody .jx-c .sub{font-size:11.5px;color:var(--muted2);margin-top:4px;line-height:1.6}
#jxBody .jx-c .bar{height:4px;border-radius:2px;background:color-mix(in srgb,var(--line) 60%,transparent);
  margin:12px 0 0;overflow:hidden}
#jxBody .jx-c .bar i{display:block;height:100%;border-radius:2px;background:var(--brand)}
#jxBody .jx-c .ft{display:flex;gap:8px;margin-top:15px;flex-wrap:wrap}
#jxBody .jx-stutb{background:var(--surface);border-radius:var(--r-card);box-shadow:var(--sh-card);padding:4px 24px}
#jxBody .jx-stu{display:flex;align-items:center;gap:14px;padding:14px 0;
  border-bottom:1px solid color-mix(in srgb,var(--line) 55%,transparent)}
#jxBody .jx-stu:last-child{border-bottom:0}
#jxBody .jx-stu .nm b{font-size:13px;font-weight:600;color:var(--ink)}
#jxBody .jx-stu .ph{font-size:11.5px;color:var(--muted2);font-variant-numeric:tabular-nums}
#jxBody .jx-stu .bal{font-size:11.5px;color:var(--muted);white-space:nowrap}
#jxBody .jx-pill{font-size:10.5px;padding:2px 8px;border-radius:999px;background:color-mix(in srgb,var(--line) 45%,transparent);
  color:var(--muted);font-weight:600;white-space:nowrap}
#jxBody .jx-pill.on{background:color-mix(in srgb,var(--ok) 13%,transparent);color:var(--ok)}
#jxBody .jx-pill.wait{background:color-mix(in srgb,var(--warn) 15%,transparent);color:var(--warn)}
#jxBody .jx-pill.cancel{background:color-mix(in srgb,var(--danger) 12%,transparent);color:var(--danger)}
#jxBody .jx-row{display:flex;align-items:center;gap:14px;padding:14px 0;
  border-bottom:1px solid color-mix(in srgb,var(--line) 55%,transparent)}
#jxBody .jx-row:last-child{border-bottom:0}
/* 课表格子本身就是白卡，外层不再套一层卡（否则卡中卡） */
#jxBody .jx-week{background:transparent;box-shadow:none;padding:0}
#jxBody .jx-rowh{border:1px solid var(--line);border-radius:10px;background:var(--surface)}
#jxBody .jx-day{border:1px solid var(--line);border-radius:10px;background:var(--surface)}
#jxBody .jx-rhact{font-size:10.5px;color:var(--muted2);cursor:pointer;padding:0 2px}
#jxBody .jx-rhact:hover{color:var(--brand-dark)}
/* v5.50 页签里的数字角标（销售待办数 / 全链数） */
.tmk-tabs .tab b{margin-left:7px;font-size:11px;padding:1px 6px;border-radius:9px;font-weight:700;
  background:color-mix(in srgb,var(--brand) 10%,transparent);color:var(--brand-dark)}
.tmk-tabs .tab.on b{background:var(--brand);color:#fff}

/* v5.50 销售台：等级/标记/表格令牌化（去掉硬编码暖色） */
#sdBody .lv{font-size:10.5px;font-weight:700;padding:1px 7px;border-radius:7px;
  background:color-mix(in srgb,var(--line) 45%,transparent);color:var(--muted)}
#sdBody .lv-h{background:color-mix(in srgb,var(--danger) 12%,transparent);color:var(--danger)}
#sdBody .lv-a{background:color-mix(in srgb,var(--warn) 15%,transparent);color:var(--warn)}
#sdBody .lv-b{background:color-mix(in srgb,var(--brand) 11%,transparent);color:var(--brand-dark)}
#sdBody .lv-c{background:color-mix(in srgb,var(--line) 45%,transparent);color:var(--muted2)}
#sdBody .sd-flag{font-size:10.5px;font-weight:600;padding:1px 7px;border-radius:7px;
  background:color-mix(in srgb,var(--warn) 14%,transparent);color:var(--warn)}
#sdBody .shop-wrap{background:var(--surface);border-radius:var(--r-card);box-shadow:var(--sh-card);padding:6px 24px}
#sdBody .shop-tb th{font-size:11px;font-weight:600;color:var(--muted2);padding:12px 8px;
  border-bottom:1px solid var(--line)}
#sdBody .shop-tb td{padding:13px 8px;border-bottom:1px solid color-mix(in srgb,var(--line) 55%,transparent);color:var(--ink)}
#sdBody .shop-tb tr:last-child td{border-bottom:0}
#sdBody .shop-tip{font-size:11.5px;color:var(--muted2);margin-top:12px}
#sdBody .shop-st{display:inline-block;font-size:11px;padding:2px 8px;border-radius:999px;font-weight:600;
  background:color-mix(in srgb,var(--line) 45%,transparent);color:var(--muted)}
#sdBody .shop-st.wait{background:color-mix(in srgb,var(--warn) 15%,transparent);color:var(--warn)}
#sdBody .shop-st.ok{background:color-mix(in srgb,var(--ok) 13%,transparent);color:var(--ok)}
#sdBody .shop-st.off{background:color-mix(in srgb,var(--line) 45%,transparent);color:var(--muted2)}
#sdBody .shop-paidtip{font-size:11px;color:var(--warn);margin-top:3px}

/* v5.50 班级周历：格子内只放摘要卡（窄列塞满按钮会挤成三行） */
#jxBody .jx-c.compact{padding:12px 13px;box-shadow:none;border:1px solid var(--line);border-radius:10px;
  background:var(--surface);transition:border-color .15s}
#jxBody .jx-c.compact:hover{border-color:color-mix(in srgb,var(--brand) 45%,var(--line))}
#jxBody .jx-c.compact .nm{font-size:12.5px;font-weight:600;line-height:1.35}
#jxBody .jx-c.compact .sub{font-size:10.5px;margin-top:3px;line-height:1.45}
#jxBody .jx-c.compact .cf{display:flex;align-items:center;gap:6px;margin-top:6px;flex-wrap:wrap}
#jxBody .jx-c.compact .cf .sub{margin:0}
#jxBody .jx-c.compact .bar{margin-top:8px;height:3px}
#jxBody .jx-clsday{border:1px solid var(--line);background:var(--surface);border-radius:10px}
#jxBody .jx-clsday.today{background:color-mix(in srgb,var(--brand) 5%,var(--surface));
  border-color:color-mix(in srgb,var(--brand) 40%,var(--line))}
#jxBody .jx-clsday .none{color:var(--muted2)}
#jxBody .jx-clswknav .btn{height:28px}
#jxBody .jx-clswknav b{font-size:12.5px;color:var(--ink)}

/* v5.50 班级周历：列只做容器（透明），卡是白块，避免「卡里套卡」 */
#jxBody .jx-clsgrid{grid-template-columns:repeat(7,minmax(0,1fr));overflow:visible}
#jxBody .jx-clsday{border:0;background:transparent;padding:0;min-height:0}
#jxBody .jx-clsday.today{background:transparent;border:0}
#jxBody .jx-clsday .dh{font-size:11.5px;font-weight:600;color:var(--muted2);padding:0 2px 1px}
#jxBody .jx-clsday.today .dh{color:var(--brand-dark);font-weight:700}
#jxBody .jx-c.compact{border:0;box-shadow:var(--sh-card);background:var(--surface);border-radius:10px}
#jxBody .jx-c.compact:hover{box-shadow:var(--sh-hover)}
#jxBody .jx-clsday .none{font-size:11px;color:var(--muted2);padding:14px 2px;text-align:left}

/* v5.50 学员表：一行一人，各列定宽，报班列省略（原来 flex-wrap 会折成三行，行高撑到 130px） */
#jxBody .jx-stutb{display:block;padding:4px 24px}
#jxBody .jx-stu{display:flex;align-items:center;flex-wrap:nowrap;gap:18px;padding:13px 0;border-radius:0}
#jxBody .jx-stu:hover{background:transparent}
#jxBody .jx-stu .nm{min-width:76px;font-weight:600}
#jxBody .jx-stu .ph{min-width:100px}
#jxBody .jx-stu .g{flex:1;min-width:0;font-size:11.5px;color:var(--muted2);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#jxBody .jx-stu .bal{min-width:104px}
#jxBody .jx-stu .bal b.low{color:var(--danger)}
#jxBody .jx-stu .muted{font-size:11px;color:var(--muted2);white-space:nowrap}
#jxBody .jx-stu .btn{margin-left:auto;flex-shrink:0}

/* v5.50 通用表格（学员表 / 后续其他页可复用）：表头 11px、行线 55% 淡、末行无线 */
.wb-tbl{width:100%;border-collapse:collapse;font-size:12.5px}
.wb-tbl th{font-size:11px;font-weight:600;color:var(--muted2);text-align:left;padding:11px 10px;
  border-bottom:1px solid var(--line);white-space:nowrap}
.wb-tbl td{padding:13px 10px;border-bottom:1px solid color-mix(in srgb,var(--line) 55%,transparent);
  color:var(--ink);vertical-align:middle}
.wb-tbl tr:last-child td{border-bottom:0}
.wb-tbl td.nm{font-size:13px;font-weight:600;color:var(--ink)}
.wb-tbl td.mono{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:11.5px;color:var(--muted2)}
.wb-tbl td.mini{font-size:11.5px;color:var(--muted2);font-variant-numeric:tabular-nums}
.wb-tbl td.ell{max-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;color:var(--muted)}
.wb-tbl td b.low{color:var(--danger)}
.wb-tbl tr.link{cursor:pointer}
.wb-tbl tr.link:hover td{background:color-mix(in srgb,var(--brand) 4%,transparent)}
#jxBody .wb-tbl .jx-pill{display:inline-block;margin-left:4px}
/* 剩余课时列不换行 */
#jxBody .wb-tbl td:nth-child(4){white-space:nowrap}


/* ==================== v6.0 今日任务台 ==================== */
.ops-list{display:flex;flex-direction:column;gap:10px}
.ops-task{border:1px solid var(--line-soft);border-radius:12px;background:#fff;padding:13px 15px}
.ops-task:hover{border-color:#dde4ef;box-shadow:0 4px 14px rgba(16,24,40,.06)}
.ops-task.ok{opacity:.62}
.ops-task.off{opacity:.5}
.ops-task .hd{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.ops-task .hd .kd{font-size:11.5px;font-weight:600;color:var(--muted);background:#eef1f6;border-radius:6px;padding:2px 8px;flex:none}
.ops-task .hd b{font-size:13.5px;color:#243044;font-weight:700;flex:1;min-width:120px}
.ops-task .hd .st{font-size:11px;color:var(--muted2);flex:none}
.ops-task.ing .hd .st{color:#b45309}
.ops-task.ok .hd .st{color:#0f8a5f}
.ops-task .meta{font-size:11.5px;color:var(--muted2);margin-top:5px}
.ops-task .ac{display:flex;gap:7px;flex-wrap:wrap;margin-top:10px}
.ops-task .ac .btn{padding:4px 10px;font-size:12px;text-decoration:none;line-height:1.5}


/* ============================================================
   v6.2 今日作战台
   ============================================================ */
.hero{display:flex;gap:26px;align-items:center;flex-wrap:wrap;
      background:linear-gradient(120deg,#fff 0%,#fff 55%,#fbfcfe 100%)}
.heroL{flex:1 1 420px;min-width:300px}
.heroTag{font-size:11.5px;font-weight:700;color:#A0082F;letter-spacing:1.5px}
.heroAi{font-size:16px;font-weight:600;color:#1f2733;line-height:1.6;margin:6px 0 14px}
.heroBar{height:9px;background:#eef1f6;border-radius:6px;overflow:hidden}
.heroBarIn{height:100%;background:linear-gradient(90deg,#A0082F,#d41447);border-radius:6px;transition:width .6s}
.heroTxt{font-size:12px;color:#7c8698;margin-top:7px}
.heroR{flex:0 0 auto;display:flex;gap:22px;flex-wrap:wrap}
.hn{text-align:center;min-width:74px}
.hnb{font-size:23px;font-weight:700;color:#1f2733;line-height:1.2}
.hnl{font-size:11px;color:#8a93a6;margin-top:3px}
.inbox{display:flex;align-items:center;gap:14px;padding:11px 13px;border:1px solid #eef1f6;
       border-radius:11px;margin-top:9px;background:#fff;transition:.15s}
.inbox:hover{background:#f6f8fb}
.inbox.late{border-left:3px solid #A0082F;background:#fff7f9}
.ibL{flex:1;min-width:0}
.ibT{font-size:14px;font-weight:600;color:#243044}
.ibS{font-size:11.5px;color:#8a93a6;margin-top:3px}
.ibR{display:flex;gap:8px;flex:0 0 auto}
.btn.sm{padding:6px 12px;font-size:12px;border-radius:8px;text-decoration:none;display:inline-block}

/* ===== v6.5 角色身份条 ===== */
.rolebar{padding:10px 14px 12px;margin-bottom:6px;border-bottom:1px solid var(--line-soft,#eef1f6)}
.rolebar .rb-t{font-size:11px;color:#8a93a6;letter-spacing:.5px;margin-bottom:6px}
.rolebar .rb-btns{display:flex;flex-wrap:wrap;gap:5px}
.rolebar .rb-btns button{font-size:11.5px;padding:4px 9px;border-radius:9px;cursor:pointer;
  border:1px solid #e3e8f0;background:#fff;color:#33405a;line-height:1.5}
.rolebar .rb-btns button:hover{background:#f6f8fb}
.rolebar .rb-btns button.on{background:#1f2733;border-color:#1f2733;color:#fff;font-weight:600}
.rolebar .rb-note{margin-top:7px;font-size:11px;color:#8a93a6;line-height:1.6}
.nav a.nav-hidden{display:none !important}


/* ==================== v11.17 加微作业台 ==================== */
.adwx-row{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--line,#eef1f6);flex-wrap:wrap}
.adwx-row:last-of-type{border-bottom:0}
.adwx-row.done{opacity:.62}
.adwx-l{display:flex;align-items:center;gap:8px;min-width:230px;flex-wrap:wrap}
.adwx-l b{font-size:13.5px;font-weight:600;color:var(--ink,#1f2733)}
.adwx-num{font-size:13px;font-family:var(--mono,ui-monospace,Menlo,monospace);color:var(--brand,#6E8BF0);cursor:pointer;letter-spacing:.2px}
.adwx-num:hover{text-decoration:underline}
.adwx-tag{font-size:11px;padding:1px 7px;border-radius:6px;background:var(--brand-soft,#EEF1FD);color:var(--brand-dark,#4A5FA8)}
.adwx-tag.warn{background:#FDF3E3;color:#8a5a12}
.adwx-tag.danger{background:#FDECEC;color:#a33}
.adwx-m{flex:1;min-width:200px;font-size:12px;color:var(--muted2,#9AA0B4)}
.adwx-a{display:flex;gap:6px;flex-wrap:wrap}
.adwx-b{height:28px;padding:0 11px;border-radius:8px;border:1px solid var(--line,#e4e7f3);background:#fff;
  font-size:12px;color:var(--ink2,#33405a);cursor:pointer}
.adwx-b:hover{border-color:var(--brand,#6E8BF0);color:var(--brand,#6E8BF0)}
.adwx-b.pri{background:var(--brand,#6E8BF0);border-color:var(--brand,#6E8BF0);color:#fff}
.adwx-b.pri:hover{opacity:.9;color:#fff}
.adwx-n{font-size:12px;color:var(--muted2,#9AA0B4);margin-right:10px}
.adwx-n b{font-size:14px;color:var(--ink,#1f2733);margin-left:3px}
.adwx-mini{font-size:12px;color:var(--brand,#6E8BF0);cursor:pointer;margin-left:10px}
.adwx-mini:hover{text-decoration:underline}
@media(max-width:900px){.adwx-m{min-width:100%}.adwx-a{width:100%}}

/* ===== 小助手 · 冷单雷达（2026-10-29 一期） ===== */
.ai-fab-dot{position:absolute;top:-3px;right:-3px;min-width:19px;height:19px;padding:0 5px;border-radius:10px;background:#e5484d;color:#fff;font-size:11px;font-weight:600;line-height:19px;align-items:center;justify-content:center;box-shadow:0 0 0 2px var(--surface);animation:aiDotIn .25s ease}
@keyframes aiDotIn{from{transform:scale(.4);opacity:0}to{transform:scale(1);opacity:1}}
.agent-card{border-color:color-mix(in srgb,#e5484d 32%,var(--line))!important;background:color-mix(in srgb,#e5484d 5%,var(--surface))!important}
@media (prefers-reduced-motion:reduce){.ai-fab-dot{animation:none}}
