/* ============================================================
   后台项目 · 统一样式（暖色宣纸 · 文化质感）
   ============================================================ */
:root{
  --paper:#f1e6d2; --card:#fbf6ec; --card-2:#f6eedd;
  --ink:#3a2f26; --soft:#6f6152; --faint:#a3947f;
  --line:#e2d3ba; --line-2:#ecdfc8;
  --cinnabar:#b6452f; --cinnabar-d:#983724;
  --ochre:#c08a3e; --jade:#5e7a5a; --blue:#5a7186;
  --shadow:0 18px 40px -24px rgba(80,52,24,.5);
  --sidebar-w:214px;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  min-height:100vh;color:var(--ink);
  font-family:"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  background:
    radial-gradient(1000px 400px at 105% -10%, rgba(192,138,62,.13), transparent 60%),
    radial-gradient(700px 400px at -10% 110%, rgba(182,69,47,.08), transparent 55%),
    var(--paper);
}
a{color:inherit;text-decoration:none}

/* ---------------- 侧栏 ---------------- */
.sidebar{
  position:fixed;top:0;left:0;bottom:0;width:var(--sidebar-w);z-index:30;
  background:linear-gradient(180deg,#4a3a2c,#3a2c20);
  color:#e9ddc8;display:flex;flex-direction:column;padding:22px 14px 16px;
}
.brand{display:flex;align-items:center;gap:11px;padding:4px 8px 20px}
.brand .seal{
  width:38px;height:38px;border-radius:8px;flex:none;
  background:linear-gradient(145deg,#c24b33,#a23522);color:#f7ead6;
  display:flex;align-items:center;justify-content:center;
  font-family:"Noto Serif SC",serif;font-weight:700;font-size:12px;letter-spacing:1px;
  transform:rotate(-5deg);
}
.brand b{font-family:"Noto Serif SC",serif;font-size:15.5px;letter-spacing:1px;display:block;line-height:1.3}
.brand small{font-size:10.5px;color:#b6a58b;letter-spacing:2px}
.nav-section-label{font-size:10.5px;letter-spacing:2px;color:#9b8a70;padding:14px 10px 7px}

/* 一级分组（原生 details，无需 JS） */
.menu-group{margin-bottom:2px}
.menu-head{
  display:flex;align-items:center;gap:10px;padding:11px 11px;border-radius:9px;
  color:#f0e5d2;font-size:14px;font-weight:600;cursor:pointer;user-select:none;
  list-style:none;list-style-type:none;transition:background .15s;
}
.menu-head::-webkit-details-marker{display:none}
.menu-head:hover{background:rgba(255,255,255,.07)}
.menu-mark{
  width:22px;height:22px;border-radius:6px;display:grid;place-items:center;
  background:linear-gradient(145deg,#c24b33,#a83825);color:#fdf3e4;font-size:12.5px;
  box-shadow:0 6px 12px -8px rgba(0,0,0,.7);flex:none;
}
.menu-name{flex:1}
.menu-caret{
  width:7px;height:7px;border-right:1.6px solid #b6a58b;border-bottom:1.6px solid #b6a58b;
  transform:rotate(-45deg);transition:transform .22s ease;flex:none;margin-top:-3px;
}
.menu-group[open] .menu-caret{transform:rotate(45deg);margin-top:1px}

/* 子菜单（details 开合） */
.menu-subs{padding:2px 0 4px}
.menu-sub{
  display:block;padding:8px 11px 8px 43px;border-radius:8px;
  color:#c8b89e;font-size:13px;position:relative;transition:background .15s,color .15s;
}
.menu-sub::before{
  content:"";position:absolute;left:25px;top:50%;width:5px;height:5px;border-radius:50%;
  background:#6d5d45;transform:translateY(-50%);transition:.15s;
}
.menu-sub:hover{background:rgba(255,255,255,.06);color:#fff}
.menu-sub:hover::before{background:#b6a58b}
.menu-sub.active{color:#f6d9b0;background:rgba(194,75,51,.22)}
.menu-sub.active::before{background:#e8a06b;box-shadow:0 0 0 3px rgba(232,160,107,.2)}
.sidebar .foot{margin-top:auto;font-size:11px;color:#8f7e65;padding:10px;line-height:1.7}

/* ---------------- 主区 ---------------- */
.main{margin-left:var(--sidebar-w);min-height:100vh;padding:24px 28px 50px}
.topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px}
.page-title{font-family:"Noto Serif SC",serif;font-size:22px;font-weight:700;letter-spacing:2px;margin:0}
.page-title .sub{font-family:sans-serif;font-size:12.5px;color:var(--faint);font-weight:400;letter-spacing:0;margin-left:12px}
.user-chip{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--soft)}
.user-chip .avatar{width:32px;height:32px;border-radius:50%;background:linear-gradient(145deg,#c98a45,#b6452f);
  color:#fff;display:flex;align-items:center;justify-content:center;font-size:13px}
.user-chip a{color:var(--faint);font-size:12.5px}
.user-chip a:hover{color:var(--cinnabar)}

/* ---------------- 卡片 ---------------- */
.card{
  background:var(--card);border:1px solid var(--line);border-radius:14px;
  box-shadow:var(--shadow);padding:20px 22px;margin-bottom:18px;
}
.card-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}
.card-h h3{font-family:"Noto Serif SC",serif;font-size:15.5px;margin:0;letter-spacing:1px;display:flex;align-items:center;gap:9px}
.card-h h3::before{content:"";width:5px;height:15px;border-radius:2px;background:var(--cinnabar)}
.card-h .opt{font-size:12.5px;color:var(--faint)}

/* ---------------- 指标 ---------------- */
.metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px;margin-bottom:18px}
.metric{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:17px 18px;box-shadow:var(--shadow)}
.metric .lab{font-size:12px;color:var(--faint);letter-spacing:1px;margin-bottom:9px}
.metric .val{font-family:"Noto Serif SC",serif;font-size:27px;font-weight:700;line-height:1}
.metric .val.cinnabar{color:var(--cinnabar)} .metric .val.jade{color:var(--jade)}
.metric .val.ochre{color:var(--ochre)} .metric .val.blue{color:var(--blue)}

.grid2{display:grid;grid-template-columns:1fr 1fr;gap:18px}

/* ---------------- 表单 ---------------- */
label.fld{display:block;margin-bottom:15px}
label.fld .lab{display:block;font-size:13px;color:var(--soft);margin-bottom:7px}
label.fld .lab .tip{color:var(--faint);font-size:11.5px;margin-left:6px}
input[type=text],input[type=password],input[type=url],input[type=number],select,textarea{
  width:100%;border:1px solid var(--line);background:#fffdf8;border-radius:10px;
  padding:11px 12px;font-size:14px;color:var(--ink);font-family:inherit;outline:none;
  transition:border-color .15s,box-shadow .15s;
}
textarea{resize:vertical;line-height:1.7;word-break:break-all;min-height:120px}
select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23a3947f' stroke-width='1.6' fill='none'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 13px center;padding-right:34px}
input:focus,textarea:focus,select:focus{border-color:var(--ochre);box-shadow:0 0 0 3px rgba(192,138,62,.15)}
.hint-text{font-size:12px;color:var(--faint);margin-top:6px;line-height:1.6}

/* 动态字段行 */
.dyn-row{display:flex;gap:8px;margin-bottom:9px;align-items:center}
.dyn-row input{flex:1}
.dyn-row input.key{max-width:150px}
.icon-btn{flex:none;width:38px;height:38px;border:1px solid var(--line);background:#fff;border-radius:9px;
  cursor:pointer;color:var(--cinnabar);font-size:16px}
.icon-btn:hover{background:#f8e7e1}

/* ---------------- 按钮 ---------------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:7px;
  border:1px solid var(--line);background:#fff;color:var(--ink);
  border-radius:10px;padding:11px 18px;font-size:14px;cursor:pointer;font-family:inherit;
  transition:transform .1s,background .15s,border-color .15s;
}
.btn:active{transform:translateY(1px)}
.btn-primary{background:linear-gradient(145deg,#c24b33,#a93a26);border-color:transparent;color:#faf0e0;
  font-family:"Noto Serif SC",serif;letter-spacing:2px;padding:12px 26px;box-shadow:0 12px 22px -12px rgba(160,50,25,.8)}
.btn-primary:hover{filter:brightness(1.05)}
.btn-ochre{background:linear-gradient(145deg,#c98a45,#b0762f);border-color:transparent;color:#fff}
.btn-ghost{background:transparent;color:var(--soft)}
.btn-ghost:hover{border-color:var(--ochre);color:var(--ochre)}
.btn-sm{padding:7px 13px;font-size:12.5px;border-radius:8px}
.btn-block{width:100%}
.btn:disabled{opacity:.55;cursor:not-allowed}
.row-actions{display:flex;gap:10px;flex-wrap:wrap}

/* ---------------- 表格 ---------------- */
.table-wrap{overflow-x:auto;border:1px solid var(--line-2);border-radius:11px}
table.data{width:100%;border-collapse:collapse;font-size:13px;background:#fffdf8}
table.data th{text-align:left;padding:11px 14px;background:var(--card-2);color:var(--soft);
  font-weight:600;font-size:12px;letter-spacing:.5px;white-space:nowrap;border-bottom:1px solid var(--line)}
table.data td{padding:11px 14px;border-bottom:1px solid var(--line-2);vertical-align:middle}
table.data tr:last-child td{border-bottom:none}
table.data tr:hover td{background:#fdf9f0}

/* .table-wrap 内通用表格：淡色单元格边框 + 列宽随内容自适应 */
.table-wrap table{width:100%;border-collapse:collapse;font-size:13px;background:#fffdf8;
  table-layout:auto}
.table-wrap th,.table-wrap td{padding:10px 14px;border:1px solid var(--line-2);vertical-align:middle;
  text-align:left;line-height:1.55;word-break:break-word;white-space:normal}
.table-wrap th{background:var(--card-2);color:var(--soft);font-weight:600;font-size:12px;
  letter-spacing:.5px;white-space:nowrap;border-color:var(--line)}
.table-wrap tr:hover td{background:#fdf9f0}
/* ID 等窄列不换行 */
.table-wrap td code{white-space:nowrap}
.mono{font-family:ui-monospace,Consolas,"Courier New",monospace;font-size:12px;color:var(--soft)}

/* 模板库列表：内容块 */
.tpl-content-cell{min-width:280px;max-width:520px}
.tpl-content{display:flex;flex-direction:column;gap:5px}
.tpl-line{display:flex;gap:8px;align-items:baseline;font-size:13px;line-height:1.5}
.tpl-meta{display:flex;gap:8px;align-items:baseline;font-size:12px;padding-top:5px;margin-top:2px;border-top:1px dashed var(--line-2)}
.tpl-k{flex:0 0 auto;min-width:56px;color:var(--soft);font-size:12px}
.tpl-v{color:var(--ink);word-break:break-word;white-space:pre-wrap}
.tpl-meta .tpl-v{color:var(--faint);font-size:11.5px}
.tpl-empty{color:var(--faint);font-size:12px}

/* 状态徽章 */
.badge{display:inline-block;padding:3px 10px;border-radius:20px;font-size:11.5px;letter-spacing:.5px;white-space:nowrap}
.b-pending{background:#f3e6cc;color:#a9762c}
.b-sending{background:#e4ecf2;color:#5a7186}
.b-success{background:#e3ede1;color:#4b6b48}
.b-failed,.b-error{background:#f7e2db;color:#a23926}
.b-done{background:#e3ede1;color:#4b6b48}
.b-running{background:#f3e6cc;color:#a9762c}

/* ---------------- 提示条 ---------------- */
.flashs{margin-bottom:16px}
.flash{border-radius:10px;padding:11px 15px;font-size:13.5px;margin-bottom:9px;line-height:1.6;
  border:1px solid transparent}
.flash.success{background:#e7f0e5;border-color:#c4dac1;color:#42643f}
.flash.error{background:#f8e7e1;border-color:#ecc7bd;color:#983724}
.flash.info{background:#fdf3e2;border-color:#ecd9b4;color:#92662a}

/* ---------------- 触发链接 ---------------- */
.trigger-box{display:flex;gap:8px}
.trigger-box input{flex:1;background:var(--card-2);font-size:12.5px}

/* 分页 */
.pager{display:flex;gap:6px;justify-content:flex-end;margin-top:14px;align-items:center}
.pager a,.pager span{padding:6px 11px;border:1px solid var(--line);border-radius:8px;font-size:12.5px;color:var(--soft)}
.pager a:hover{border-color:var(--ochre);color:var(--ochre)}
.pager .cur{background:var(--card-2);color:var(--ink)}

/* ---------------- 登录页 ---------------- */
.login-body{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:20px}
.login-card{width:100%;max-width:400px;background:var(--card);border:1px solid var(--line);
  border-radius:16px;box-shadow:0 28px 60px -28px rgba(80,52,24,.55);padding:34px 32px;position:relative}
.login-card .seal{position:absolute;top:-18px;right:26px;width:44px;height:44px;border-radius:9px;
  background:linear-gradient(145deg,#c24b33,#a23522);color:#f7ead6;display:flex;align-items:center;
  justify-content:center;font-family:"Noto Serif SC",serif;font-weight:700;font-size:12px;
  letter-spacing:1px;transform:rotate(6deg)}
.login-card .kick{font-size:11px;letter-spacing:4px;color:var(--ochre);margin-bottom:8px}
.login-card h1{font-family:"Noto Serif SC",serif;font-size:24px;margin:0 0 6px;letter-spacing:2px}
.login-card .sub{color:var(--soft);font-size:13px;margin:0 0 24px;line-height:1.7}

/* 移动端汉堡 */
.hamburger{display:none;border:1px solid var(--line);background:#fff;border-radius:9px;
  width:40px;height:40px;font-size:18px;cursor:pointer;margin-right:12px}
.scrim{display:none;position:fixed;inset:0;background:rgba(40,28,18,.45);z-index:29}

@media (max-width:860px){
  .sidebar{transform:translateX(-100%);transition:transform .25s;box-shadow:0 0 40px rgba(0,0,0,.4)}
  .sidebar.open{transform:none}
  .scrim.show{display:block}
  .main{margin-left:0;padding:18px 14px 40px}
  .hamburger{display:inline-block}
  .grid2{grid-template-columns:1fr}
}

/* ===== 筛选标签 ===== */
.filter-tabs{display:flex;flex-wrap:wrap;gap:8px}
.filter-tabs .tab{padding:6px 16px;border-radius:999px;background:var(--paper2,#f3ece1);
  color:var(--ink-soft,#6b5d4d);font-size:13px;text-decoration:none;border:1px solid transparent;transition:.15s}
.filter-tabs .tab:hover{color:var(--primary,#b3422f)}
.filter-tabs .tab.active{background:var(--primary,#b3422f);color:#fff}

/* 客户标签小胶囊 */
.cust-tag{display:inline-block;padding:2px 10px;margin:2px 4px 2px 0;border-radius:999px;
  font-size:11.5px;color:#8a5a2b;background:#f4e8d2;border:1px solid var(--line);white-space:nowrap}
.cust-tag.ent{color:#5a6b34;background:#eef1de;border-color:#d7deba}
.cust-tag.per{color:#8a4a63;background:#f6e6ee;border-color:#e6cddd}
/* 现有标签清单：客户单元格 */
.cust-cell{display:flex;align-items:center;gap:8px}
.cust-ava{width:32px;height:32px;border-radius:50%;object-fit:cover;flex:none;background:#efe7d8}
.cust-nm{font-size:13px;color:var(--ink,#3b3026);line-height:1.3}
.cust-sub{font-size:11px;color:#a9967a}
/* 分页：跳页 */
.jump-pager .jump-box{display:inline-flex;align-items:center;gap:5px;margin-left:8px;font-size:12.5px;color:var(--soft,#8a7a63)}
.jump-input{width:52px;padding:3px 6px;border:1px solid var(--line,#e3d9c8);border-radius:6px;
  font-size:13px;text-align:center;background:#fffdf8}
.jump-go{padding:3px 10px}
/* 客户全字段表：分组表头与多行单元格 */
table.cust-full th.grp{background:#efe2c8;color:#7a5230;font-size:12.5px;text-align:center;letter-spacing:1px}
.cell-line{font-size:12px;line-height:1.7;color:var(--soft);word-break:break-all}

/* ===== 客户勾选网格 ===== */
.cust-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:8px;max-height:340px;overflow:auto;padding:2px}
.cust-item{display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--line,#e3d9c8);
  border-radius:10px;cursor:pointer;font-size:13px;background:#fffdf8;transition:.15s}
.cust-item:hover{border-color:var(--primary,#b3422f)}
.cust-item input{margin:0;accent-color:var(--primary,#b3422f)}
.cust-item span{display:flex;align-items:center;gap:6px;overflow:hidden}
.cust-item img{width:22px;height:22px;border-radius:50%;flex-shrink:0}

/* ===== 链接表单 ===== */
.link-form{display:grid;gap:8px}

/* 附件类型切换 / 小程序附件 */
.attach-switch{display:flex;flex-wrap:wrap;gap:18px;margin-bottom:12px;font-size:14px}
.attach-switch label{display:inline-flex;align-items:center;gap:5px;cursor:pointer}
.attach-panel{padding:12px 14px;background:var(--card-2,#f7efe1);border:1px solid var(--line-2,#e8dcc5);border-radius:10px}
.mp-form{display:flex;flex-direction:column;gap:9px}
.mp-form input{width:100%}
.mp-cover{display:flex;align-items:center;flex-wrap:wrap;gap:8px}
.hint-text{font-size:12px;color:var(--muted,#9a8c72)}
.btn-sm{padding:5px 14px;font-size:13px}
.btn-danger{background:#b23a2e;color:#fff;border:1px solid #b23a2e}
.btn-danger:hover{background:#9c2f24;border-color:#9c2f24}
.key-row{display:flex;gap:8px}
.key-row input{flex:1;min-width:0}

/* 推送记录详情 */
.detail-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px 18px;margin-bottom:18px}
.detail-item{display:flex;flex-direction:column;gap:4px;font-size:14px}
.detail-item .k{font-size:12px;color:var(--muted,#9a8c72)}
.detail-block{margin-bottom:14px}
.detail-label{font-size:13px;font-weight:600;margin-bottom:6px;color:var(--ink,#4a3b2a)}
.detail-block pre{background:var(--card-2,#f7efe1);border:1px solid var(--line-2,#e8dcc5);border-radius:8px;padding:11px 13px;font-size:12.5px;line-height:1.6;overflow:auto;margin:0;white-space:pre-wrap;word-break:break-word}
.empty{color:var(--muted,#9a8c72)}

/* 客户分批同步 */
.sync-box{margin-top:14px}
.sync-controls{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end}
.sync-controls label{font-size:13px;color:var(--ink,#4a3b2a);display:flex;flex-direction:column;gap:4px}
.sync-progress{margin-top:14px}
.sync-bar{height:10px;background:var(--card-2,#f7efe1);border:1px solid var(--line-2,#e8dcc5);border-radius:6px;overflow:hidden}
.sync-bar .fill{height:100%;width:0;background:linear-gradient(90deg,#c2703f,#a23f2e);transition:width .3s ease}
.sync-bar-fill{height:100%;width:0;background:linear-gradient(90deg,#c2703f,#a23f2e);transition:width .3s ease}
.sync-text{font-size:13px;margin-top:8px;color:var(--ink,#4a3b2a);line-height:1.7}
.sync-errors{margin-top:8px;font-size:12px;color:#8a3a2e;background:#fbeee8;border:1px solid #ecd3c8;border-radius:6px;padding:8px 10px;line-height:1.7;max-height:180px;overflow:auto}

/* ===== 表格行高亮 ===== */
tr.row-active{background:#fbf1e3}
.text-link{color:var(--primary,#b3422f);text-decoration:none;font-size:13px}
.text-link:hover{text-decoration:underline}

/* ===== 状态徽章扩展 ===== */
/* ===== 状态徽章 ===== */
.status-badge{display:inline-block;padding:3px 10px;border-radius:999px;font-size:12px;line-height:1.6}
.status-badge.st-success{background:#e8f3e4;color:#3f7a35}
.status-badge.st-danger{background:#fbe6e1;color:#b3422f}
.status-badge.st-warning{background:#fdf0d9;color:#9a6a1a}
.status-badge.st-muted{background:#efe9df;color:#9a8d7b}

/* ===== 分页微调 ===== */
.pager .info{margin-left:auto;color:var(--ink-soft,#9a8d7b);font-size:12px}

/* 客户列表「列显示」面板 */
.col-chk{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--ink);
  padding:4px 2px;cursor:pointer;white-space:nowrap}
.col-chk:hover{color:var(--accent,#a23f2e)}
.col-chk input{margin:0}
