/* ============ 云犀视界 · 浅色科技蓝设计系统 ============ */
:root{
  --bg:#eef3fb;            /* 页面浅蓝灰底 */
  --surface:#ffffff;       /* 卡片白 */
  --surface-2:#f5f8fe;     /* 次级底 */
  --primary:#2f6bff;       /* 科技蓝主色 */
  --primary-soft:#e7efff;  /* 主色浅底 */
  --primary-deep:#1d4ed8;
  --cyan:#16c2c2;          /* 点缀青 */
  --ink:#1f2a44;           /* 主文字 */
  --ink-2:#5a6b8c;         /* 次文字 */
  --ink-3:#9aa7c2;         /* 弱文字 */
  --line:#e3eaf6;          /* 描边 */
  --ok:#15b86b; --ok-bg:#e6f8f0;
  --warn:#f5a623; --warn-bg:#fef3e0;
  --err:#f0506e; --err-bg:#fdeaef;
  --info:#2f6bff; --info-bg:#e7efff;
  --radius:14px;
  --shadow:0 6px 22px rgba(31,42,68,.07);
  --shadow-sm:0 2px 8px rgba(31,42,68,.06);
  --rail-w:188px;
  --top-h:64px;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  font-family:"PingFang SC","Microsoft YaHei","Segoe UI",system-ui,sans-serif;
  background:var(--bg); color:var(--ink); font-size:14px; line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
a{color:var(--primary);text-decoration:none}
button{font-family:inherit;cursor:pointer}
input,select,textarea{font-family:inherit;font-size:14px;color:var(--ink)}

/* ---------- 布局：左图标导航条 + 顶栏 ---------- */
.app{display:flex;min-height:100vh}
.rail{
  width:var(--rail-w);flex:0 0 var(--rail-w);background:linear-gradient(180deg,#1b2a4e,#22365f);
  display:flex;flex-direction:column;padding:14px 10px;position:fixed;top:0;bottom:0;left:0;height:100vh;z-index:30;
}
.rail .logo{display:flex;align-items:center;gap:8px;color:#fff;font-weight:800;font-size:14px;margin-bottom:12px;padding:2px 4px;white-space:nowrap}
.rail .logo .badge{width:30px;height:30px;border-radius:9px;background:linear-gradient(135deg,var(--primary),var(--cyan));
  display:flex;align-items:center;justify-content:center;font-size:15px;box-shadow:0 4px 12px rgba(47,107,255,.4);flex:0 0 auto}
.rail .nav{display:flex;flex-direction:column;gap:2px;width:100%;overflow-y:auto;flex:1;min-height:0;padding-right:2px;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.22) transparent}
.rail .nav::-webkit-scrollbar{width:4px}
.rail .nav::-webkit-scrollbar-thumb{background:rgba(255,255,255,.22);border-radius:4px}
.rail .nav::-webkit-scrollbar-track{background:transparent}
.rail .nav-item{display:flex;align-items:center;gap:8px;padding:9px 10px;border-radius:10px;color:#c2cde0;font-size:12.5px;cursor:pointer;transition:.15s;position:relative;white-space:nowrap}
.rail .nav-item .ic{font-size:17px;line-height:1;flex:0 0 auto}
.rail .nav-item:hover{background:rgba(255,255,255,.08);color:#fff}
.rail .nav-item.active{background:var(--primary);color:#fff;box-shadow:0 6px 14px rgba(47,107,255,.45)}
.rail .nav-item.active::before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:4px;height:20px;background:var(--cyan);border-radius:0 4px 4px 0}

/* 折叠分组 */
.rail .nav-group{margin:2px 0}
.rail .nav-group-head{display:flex;align-items:center;gap:8px;padding:9px 10px;border-radius:10px;color:#c2cde0;font-size:12.5px;cursor:pointer;transition:.15s;user-select:none}
.rail .nav-group-head:hover{background:rgba(255,255,255,.06);color:#fff}
.rail .nav-group-head.active{color:#fff}
.rail .nav-group-head .ic{font-size:16px;line-height:1;flex:0 0 auto}
.rail .nav-group-head .lbl{flex:1;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rail .nav-group-head .chev{font-size:10px;transition:transform .15s;color:#8fa0c0;flex:0 0 auto}
.rail .nav-group-head .chev.open{transform:rotate(90deg)}
.rail .nav-group-body{display:flex;flex-direction:column;gap:1px;margin:1px 0 6px;padding-left:10px}
.rail .nav-group-body .nav-item.sub{padding:7px 10px;font-size:12px;color:#aeb9d2;gap:8px}
.rail .nav-group-body .nav-item.sub .dot{width:6px;height:6px;border-radius:50%;background:#5b6b8c;flex:0 0 auto}
.rail .nav-group-body .nav-item.sub.active{background:rgba(47,107,255,.22);color:#fff;box-shadow:none}
.rail .nav-group-body .nav-item.sub.active::before{background:var(--cyan);height:16px}
.rail .nav-group-body .nav-item.sub.active .dot{background:var(--cyan)}
.rail .spacer{flex:0 0 auto;min-height:4px}
.rail .me{display:flex;align-items:center;gap:8px;color:#aebbd6;font-size:12px;cursor:pointer;padding:10px 8px;border-top:1px solid rgba(255,255,255,.08);margin-top:8px}
.rail .me .av{width:32px;height:32px;border-radius:50%;background:var(--cyan);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;flex:0 0 auto}

.main{margin-left:var(--rail-w);flex:1;display:flex;flex-direction:column;min-width:0}
.topbar{height:var(--top-h);background:var(--surface);border-bottom:1px solid var(--line);display:flex;align-items:center;
  justify-content:space-between;padding:0 26px;position:sticky;top:0;z-index:20;box-shadow:var(--shadow-sm)}
.topbar .title{font-size:17px;font-weight:700;color:var(--ink)}
.topbar .title small{color:var(--ink-3);font-weight:400;margin-left:8px;font-size:12px}
.topbar .right{display:flex;align-items:center;gap:16px}
.topbar .pill{background:var(--primary-soft);color:var(--primary-deep);padding:5px 12px;border-radius:20px;font-size:12px;font-weight:600}
.topbar .pill.cyan{background:#e1f7f7;color:#0e9b9b}
.topbar .user{display:flex;align-items:center;gap:8px;font-size:13px}
.topbar .user .av{width:30px;height:30px;border-radius:50%;background:linear-gradient(135deg,var(--primary),var(--cyan));color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:12px}
.topbar .logout{color:var(--ink-2);font-size:13px;padding:6px 12px;border:1px solid var(--line);border-radius:8px;background:#fff}
.topbar .logout:hover{color:var(--err);border-color:var(--err)}

.content{padding:24px 26px 40px;flex:1}

/* ---------- 卡片 ---------- */
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px 20px}
.card .card-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.card .card-h h3{font-size:15px;font-weight:700}
.card .card-h .sub{color:var(--ink-3);font-size:12px}

/* ---------- 统计卡 ---------- */
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:16px;margin-bottom:22px}
.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px 20px;position:relative;overflow:hidden}
.stat::after{content:"";position:absolute;right:-18px;top:-18px;width:70px;height:70px;border-radius:50%;background:var(--primary-soft);opacity:.6}
.stat .lab{color:var(--ink-2);font-size:13px;position:relative}
.stat .num{font-size:28px;font-weight:800;color:var(--ink);margin-top:6px;position:relative}
.stat .num .u{font-size:13px;font-weight:500;color:var(--ink-3);margin-left:4px}
.stat .trend{font-size:12px;color:var(--ok);margin-top:4px;position:relative}
.stat.cyan::after{background:#e1f7f7}
.stat.cyan .num{color:var(--cyan)}
.stat.warn::after{background:var(--warn-bg)}
.stat.warn .num{color:var(--warn)}

/* ---------- 工具栏 ---------- */
.toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:12px;background:var(--surface);
  border:1px solid var(--line);border-radius:14px;padding:10px 12px;box-shadow:var(--shadow-sm)}
.toolbar .grow{flex:1}
.field{display:flex;align-items:center;gap:6px;background:var(--surface-2);border:1px solid var(--line);border-radius:9px;padding:0 10px;height:34px;transition:.15s}
.field:focus-within{border-color:var(--primary);background:#fff;box-shadow:0 0 0 3px var(--primary-soft)}
.field input,.field select{border:none;outline:none;background:transparent;height:32px;width:100%;font-size:13px}
.toolbar .search{width:212px}
/* 页面级说明条（如 API 密钥的模型/并发口径） */
/* 页面说明条：块级排版（早前用 flex 会把说明里的 inline 元素拆成窄列，导致文字竖排挤压） */
.page-note{background:#f4f8ff;border:1px solid #dbe7fb;border-radius:10px;padding:8px 12px;margin:-4px 0 12px;font-size:12px;color:var(--ink-2);line-height:1.6}
.page-note .pn-ico{display:inline-flex;align-items:center;justify-content:center;flex:none;width:16px;height:16px;border-radius:50%;background:var(--primary);color:#fff;font-size:11px;font-weight:700;margin-right:6px;vertical-align:-3px;font-style:normal}
.btn{height:34px;padding:0 14px;border-radius:9px;border:1px solid var(--line);background:#fff;color:var(--ink);font-weight:600;font-size:13px;display:inline-flex;align-items:center;gap:6px;transition:.15s;white-space:nowrap}
.btn:hover{border-color:var(--primary);color:var(--primary);box-shadow:0 2px 8px rgba(47,107,255,.12)}
.btn.primary{background:var(--primary);border-color:var(--primary);color:#fff;box-shadow:0 4px 12px rgba(47,107,255,.28)}
.btn.primary:hover{background:var(--primary-deep);color:#fff}
.btn.cyan{background:var(--cyan);border-color:var(--cyan);color:#fff;box-shadow:0 4px 12px rgba(22,194,194,.26)}
.btn.cyan:hover{background:#12adad;border-color:#12adad;color:#fff}
.btn.ghost{background:transparent}
.btn.sm{height:27px;padding:0 9px;font-size:11.5px;border-radius:7px;font-weight:600;gap:4px}
.btn.danger{color:var(--err);border-color:#f6c9d3}
.btn.danger:hover{background:var(--err);color:#fff;border-color:var(--err);box-shadow:0 2px 8px rgba(240,80,110,.25)}
.btn:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}

/* ---------- 表格（紧凑排版：矮行高 / 吸附操作列 / 超长省略） ---------- */
.tbl-wrap{overflow:auto;border:1px solid var(--line);border-radius:14px;background:var(--surface);box-shadow:var(--shadow-sm);max-height:calc(100vh - 262px);scrollbar-width:thin;scrollbar-color:#cfdbef transparent}
.tbl-wrap::-webkit-scrollbar{width:9px;height:9px}
.tbl-wrap::-webkit-scrollbar-thumb{background:#cfdbef;border-radius:9px;border:2px solid #fff}
.tbl-wrap::-webkit-scrollbar-track{background:transparent}
table.tbl{width:100%;border-collapse:separate;border-spacing:0;font-size:12.5px}
table.tbl thead th{position:sticky;top:0;z-index:3;background:linear-gradient(180deg,#f8fbff,#edf3fd);color:var(--ink-2);
  font-weight:700;font-size:11.5px;letter-spacing:.3px;text-align:left;padding:10px 10px;white-space:nowrap;border-bottom:1px solid #dfe8f7}
table.tbl td{padding:8px 10px;border-bottom:1px solid #eef2fa;color:var(--ink);vertical-align:middle;white-space:nowrap;max-width:280px}
table.tbl tbody tr:nth-child(even) td{background:#fcfdff}
table.tbl tbody tr:hover td{background:#eff5ff}
table.tbl tbody tr:last-child td{border-bottom:none}
table.tbl td > span:not(.tag),table.tbl td > a,table.tbl td > b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:300px}
table.tbl .mono{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:11.5px;color:var(--ink-2)}
table.tbl td.muted,table.tbl td.muted > span{color:var(--ink-3);font-size:11.5px;font-weight:400}
table.tbl .idc{color:var(--ink-3);font-size:11.5px;font-variant-numeric:tabular-nums}
table.tbl .dt{color:var(--ink-2);font-size:11.5px;font-variant-numeric:tabular-nums}
/* 操作列吸附右侧，横向滚动时始终可点 */
table.tbl th.col-act,table.tbl td.col-act{position:sticky;right:0;box-shadow:-10px 0 14px -12px rgba(31,42,68,.28)}
/* 操作列按按钮实际宽度自适应，避免被定宽列挤压导致按钮被裁切 */
table.tbl th.col-act{width:1%;white-space:nowrap}
table.tbl th.col-act{z-index:4;background:#edf3fd}
table.tbl td.col-act{z-index:2;background:var(--surface)}
table.tbl tbody tr:nth-child(even) td.col-act{background:#fcfdff}
table.tbl tbody tr:hover td.col-act{background:#eff5ff}
/* ---------- 定宽列（cfg.fixedLayout）：列宽严格按配置生效，超长内容省略号截断 ---------- */
/* 未配置宽度的列（通常是「标题」）自动占满剩余空间，窄列不再被长文本撑开 */
table.tbl-fixed{table-layout:fixed}
table.tbl-fixed td{overflow:hidden;text-overflow:ellipsis}
table.tbl-fixed td > span:not(.tag),table.tbl-fixed td > a,table.tbl-fixed td > b{max-width:100%}
table.tbl-fixed td > .tag{max-width:100%;overflow:hidden}
/* 定宽表行列更舒展：上下留白加大，左右统一 12px，读起来不拥挤 */
table.tbl-fixed thead th{padding:9px 12px}
table.tbl-fixed td{padding:9px 12px}
table.tbl-fixed th.col-sel,table.tbl-fixed td.col-sel{width:40px;min-width:40px;padding-right:0}
table.tbl-fixed th.col-act,table.tbl-fixed td.col-act{width:128px;min-width:128px}
/* 列对齐：短字段（ID/状态/归属/时间）居中更整齐，长文本列保持左对齐 */
table.tbl th.ta-center,table.tbl td.ta-center{text-align:center}
/* 居中列窄内边距：标签居中显示不受影响，但内容区多出 8px，短标签列（状态/发布策略等）不再截断 */
table.tbl td.ta-center{padding-left:6px;padding-right:6px}
table.tbl th.ta-right,table.tbl td.ta-right{text-align:right}
table.tbl td.ta-center > .tag{justify-content:center}
/* 表格内标签瘦身：外壳（内边距+圆点+间距）从 28px 减到 22px，短标签列不再被撑截断 */
table.tbl td .tag{gap:4px;padding:3px 7px}
table.tbl td .tag::before{width:4px;height:4px}
.empty{padding:44px 20px;text-align:center;color:var(--ink-3);font-size:13px;line-height:1.9}

/* ---------- 状态标签（不换行，色块更紧） ---------- */
.tag{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:7px;font-size:11.5px;font-weight:700;white-space:nowrap;line-height:1.45}
.tag::before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor;flex:0 0 auto}
.tag.green{background:var(--ok-bg);color:var(--ok)}
.tag.gray{background:#eef1f6;color:var(--ink-3)}
.tag.blue{background:var(--info-bg);color:var(--info)}
.tag.cyan{background:#e1f7f7;color:#0e9b9b}
.tag.orange{background:var(--warn-bg);color:var(--warn)}
.tag.red{background:var(--err-bg);color:var(--err)}
.tag.purple{background:#efe9fb;color:#7c3aed}
.tag.indigo{background:#eceafd;color:#5b51e0}

/* ---------- 分页 ---------- */
.pager{display:flex;align-items:center;justify-content:space-between;margin-top:14px;flex-wrap:wrap;gap:10px}
.pager .info{color:var(--ink-3);font-size:12px}
.pager .pages{display:flex;gap:6px;align-items:center}
.pager .pg{min-width:32px;height:32px;padding:0 8px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink-2);font-size:13px}
/* 每页条数选择（15/20/50/100/200，与后端上限 200 对齐） */
.pager .size-sel{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-3)}
.pager .size-sel select{height:30px;border:1px solid var(--line);border-radius:8px;padding:0 6px;font-size:12px;background:#fff;color:var(--ink-1)}
.pager .size-sel select:hover{border-color:var(--primary)}
.pager .size-sel select:focus{outline:none;border-color:var(--primary)}
.pager .pg.active{background:var(--primary);border-color:var(--primary);color:#fff}
.pager .pg:hover:not(.active){border-color:var(--primary);color:var(--primary)}

/* ---------- 弹层（统一体系：头 / 滚动体 / 固定底栏） ---------- */
.modal-mask{position:fixed;inset:0;background:rgba(17,25,45,.42);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;z-index:1200;padding:26px 18px}
.modal{background:var(--surface);border-radius:16px;width:640px;max-width:calc(100vw - 36px);max-height:88vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 28px 72px rgba(15,23,42,.3);animation:pop .18s ease}
.modal.sm{width:470px}
.modal.wide{width:780px}
.modal.lg{width:900px}
.modal.xwide{width:1080px}
@keyframes pop{from{transform:translateY(10px) scale(.985);opacity:0}to{transform:none;opacity:1}}
.modal-h,.modal .m-h{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 20px;flex:0 0 auto;
  background:linear-gradient(180deg,#fff,#f7fafe);border-bottom:1px solid var(--line)}
.modal-h h3,.modal .m-h h3{font-size:14.5px;font-weight:700;color:var(--ink);display:flex;align-items:center;gap:8px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.modal-h h3::before,.modal .m-h h3::before{content:"";width:3px;height:15px;border-radius:2px;background:linear-gradient(180deg,var(--primary),var(--cyan));flex:0 0 auto}
.modal-x,.modal .m-h .x{border:none;background:transparent;width:26px;height:26px;border-radius:8px;color:var(--ink-3);font-size:15px;line-height:1;cursor:pointer;flex:0 0 auto;transition:.15s;display:inline-flex;align-items:center;justify-content:center}
.modal-x:hover,.modal .m-h .x:hover{background:#eef2fa;color:var(--err)}
.modal-b,.modal .m-b{padding:16px 20px;overflow:auto;flex:1 1 auto;min-height:0}
.modal-f,.modal .m-f{padding:11px 20px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:9px;flex:0 0 auto;background:#fafcff}
/* 弹窗内表单：6 列栅格（默认半宽=3，整行=6，三分之一=2） */
.form-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:14px 18px}
.form-grid .form-row{grid-column:span 3;margin-bottom:0;min-width:0}
.form-grid .form-row.full{grid-column:1/-1}
.form-grid .form-row.third{grid-column:span 2}

/* 抖音扫码登录弹窗 */
.qr-modal .modal-b{padding:20px;text-align:center}
.qr-box{display:inline-block;padding:12px;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow-sm)}
.qr-box img,.qr-box canvas{display:block;margin:0 auto;width:240px!important;height:240px!important}
code{background:#eef2f8;padding:1px 5px;border-radius:4px;font-size:12px;color:#1d4ed8;font-family:ui-monospace,Consolas,monospace}
.muted code{color:#5a6b8c}
.form-grid > .hint{grid-column:1/-1}
/* 弹窗里由插槽塞进来的信息卡（如退款依据）必须整行铺开：
   不写这条会被当成普通 grid item 挤进 6 列网格里的 1 列（宽度 ~90px，文字竖排成一列） */
.form-grid > .act-pre{grid-column:1/-1}
.form-row{margin-bottom:12px;min-width:0}
.form-row:last-child{margin-bottom:0}
.form-row label{display:block;font-size:12.5px;color:var(--ink-2);margin-bottom:5px;font-weight:600}
.form-row label .req{color:var(--err);margin-left:3px}
.form-row input,.form-row select,.form-row textarea{width:100%;border:1px solid var(--line);border-radius:9px;padding:8px 11px;outline:none;background:var(--surface);font-size:13px;transition:.15s}
.form-row input{height:36px}
.form-row input:focus,.form-row select:focus,.form-row textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}
.form-row textarea{min-height:126px;resize:vertical;line-height:1.7}
.form-row .row-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:5px}
.form-row .row-head label{margin-bottom:0}
.form-row .row-tools{display:inline-flex;align-items:center;gap:8px}
.form-row .fmt-sel{height:30px;padding:2px 8px;font-size:12px;width:auto;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink-1);outline:none}
.form-row .fmt-sel:focus{border-color:var(--primary)}
.form-row .html-preview{margin-top:0;border:1px solid var(--line);border-radius:9px;padding:8px 11px;min-height:126px;max-height:360px;overflow:auto;background:var(--surface);font-size:13px;line-height:1.7;word-break:break-word}
.form-row .html-preview:empty::before{content:'（预览为空，请先在「编辑」中填写内容）';color:var(--ink-3);font-size:12px}
.form-row .html-preview{cursor:text}
.form-row .html-preview pre.hp-text{white-space:pre-wrap;background:transparent;padding:0;margin:0;font-family:inherit}
.form-row .preview-tip{margin-top:5px;font-size:11.5px;color:var(--ink-3);line-height:1.5}
.form-row .html-preview h1,.form-row .html-preview h2,.form-row .html-preview h3,.form-row .html-preview h4{margin:6px 0}
.form-row .html-preview img{max-width:100%}
.form-row .html-preview a{color:var(--primary)}
.form-row .html-preview pre{white-space:pre-wrap;background:var(--surface-2);padding:8px 10px;border-radius:7px;overflow:auto}
/* 可直接在预览区编辑（HTML/文本）：聚焦高亮，明确可改 */
.form-row .html-preview.hp-editable{outline:none}
.form-row .html-preview.hp-editable:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}
.form-row .html-preview.hp-editable:empty::before{content:'（预览区为空，请先在「编辑」中填写内容，或直接在下方输入）'}
/* HTML 富文本字段：可视化/源码切换在上，编辑区在下 */
.form-row .html-field{display:flex;flex-direction:column;gap:6px}
.form-row .html-field .seg{align-self:flex-start}
.form-row .html-field-note{font-size:12px;color:#a05a00;background:#fff7e6;border:1px solid #ffe2b0;border-radius:7px;padding:6px 9px;line-height:1.5}
/* 预览弹窗右上角的格式标记 */
.fmt-badge{display:inline-block;margin-left:8px;font-size:11px;font-weight:600;color:var(--primary);background:var(--primary-soft);border-radius:6px;padding:2px 8px;vertical-align:middle}
.article-preview pre.hp-text{white-space:pre-wrap;word-break:break-word;background:transparent;padding:0;margin:0;font-family:inherit;font-size:13.5px;line-height:1.85;color:var(--ink-2)}
.form-row .hint{color:var(--ink-3);font-size:11.5px;margin-top:3px;line-height:1.5}
/* 权限复选框组（管理员账号表单） */
.perm-box{border:1px solid var(--line);border-radius:10px;padding:12px 14px;background:var(--surface-2)}
.perm-note{display:block;color:var(--ink-3);font-size:12px;line-height:1.6}
.perm-use-default{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--ink-2);margin-bottom:10px;font-weight:600;cursor:pointer}
.perm-use-default input{width:auto}
.perm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px 12px}
.perm-chk{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--ink-1);cursor:pointer}
.perm-chk input{width:auto;accent-color:var(--primary)}

/* ---------- 登录 ---------- */
.login{position:relative;height:100vh;display:flex;align-items:center;justify-content:center;background:
  radial-gradient(900px 500px at 12% -10%,#dbe7ff 0,transparent 60%),
  radial-gradient(800px 500px at 110% 120%,#d6f6f6 0,transparent 55%),var(--bg)}
.login .box{width:400px;max-width:92vw;background:var(--surface);border-radius:20px;box-shadow:0 24px 70px rgba(31,42,68,.16);padding:34px 32px;border:1px solid var(--line)}
.login .brand{display:flex;align-items:center;gap:12px;margin-bottom:6px}
.login .brand .lg{width:46px;height:46px;border-radius:13px;background:linear-gradient(135deg,var(--primary),var(--cyan));color:#fff;font-weight:800;font-size:20px;display:flex;align-items:center;justify-content:center;box-shadow:0 6px 16px rgba(47,107,255,.4)}
.login h1{font-size:21px;font-weight:800}
.login .desc{color:var(--ink-3);font-size:13px;margin:6px 0 22px}
.login .form-row input{height:44px}
.login .btn.primary{width:100%;height:44px;justify-content:center;font-size:15px;margin-top:6px}
.login .tip{margin-top:16px;font-size:12px;color:var(--ink-3);text-align:center;background:var(--surface-2);border-radius:9px;padding:10px}
.login .err{color:var(--err);font-size:13px;margin-bottom:10px;text-align:center}

/* ---------- 小工具 ---------- */
/* 操作按钮一行排开，空间不足时横向滚动，不折行 */
.row-actions{display:flex;gap:4px;flex-wrap:nowrap}
/* 操作按钮绝不能被 flex 压缩（列一多就会出现「编 / 删 / 重」这类截断），宁可让表格横向滚动 */
.row-actions .btn{flex:0 0 auto;white-space:nowrap}
/* 行内操作按钮紧凑化：小字号 + 窄内边距，6 个按钮也能单行放下，行高随之压缩 */
.row-actions .btn.sm{height:22px;padding:0 6px;font-size:11px;border-radius:6px}
/* cfg.actionWrap：行操作按钮多（6~8 个）时允许换行并靠右，配合 cfg.actionWidth 使用，避免单行溢出被裁 */
table.tbl.act-wrap .row-actions{flex-wrap:wrap;justify-content:flex-end}
table.tbl.act-wrap td.col-act{padding-top:7px;padding-bottom:7px}
.muted{color:var(--ink-3)}
/* 表格单元里的红字提示（如「缺回链·补齐中」）：只用于文字，不改变行高 */
.txt-red{color:var(--err);font-size:11.5px;white-space:nowrap}
.small{font-size:11.5px}
/* 抖音账号管理：操作按钮较多，允许换行并给操作列最小宽度，避免被裁切 */
.douyin-view .tbl th:last-child{min-width:460px}
.douyin-view .row-actions{flex-wrap:wrap;max-width:470px}

/* 个人号扫码登录主卡片 */
.dy-scan-card{background:linear-gradient(180deg,#f7fbff 0%,#ffffff 100%);border:1px solid #d9e6fb;border-radius:14px;padding:16px 18px;margin-bottom:12px;box-shadow:var(--shadow-sm)}
.dy-scan-card .dsc-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.dy-scan-card .dsc-head strong{font-size:15.5px;color:var(--ink)}
.dy-scan-card .dsc-head .grow{flex:1 1 auto}
.dy-scan-card .dsc-head .btn.primary{flex:none;white-space:nowrap}
.dy-scan-card .dsc-desc{margin:8px 0 10px;font-size:12.5px;line-height:1.8;color:var(--ink-2)}
.dy-scan-card .dsc-steps{display:flex;flex-wrap:wrap;gap:8px 18px;font-size:11.5px;color:var(--ink-2)}
.dy-scan-card .dsc-steps span{display:inline-flex;align-items:center;gap:6px}
.dy-scan-card .dsc-steps i{flex:none;width:16px;height:16px;border-radius:50%;background:var(--primary);color:#fff;font-style:normal;font-size:10.5px;font-weight:700;display:inline-flex;align-items:center;justify-content:center}
.dy-scan-card .dsc-warn{margin-top:10px;background:#fff7e6;border:1px solid #f6dfae;color:#b45309;border-radius:8px;padding:8px 10px;font-size:11.5px;line-height:1.7}

/* 账号单元格：头像 + 名称 + 昵称/UID */
.dy-acc{display:flex;align-items:center;gap:9px;min-width:0}
.dy-avatar{width:34px;height:34px;border-radius:50%;object-fit:cover;flex:none;background:#eef2f8;border:1px solid var(--line)}
.dy-avatar--ph{display:flex;align-items:center;justify-content:center;font-size:15px}
.dy-acc-t{display:flex;flex-direction:column;gap:1px;min-width:0}
.dy-acc-t b{font-size:12.5px;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:180px}
.dy-acc-t .small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:180px}
.dy-state-d{display:block;margin-top:2px;line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* 扫码弹窗：二维码与状态 */
.dy-qr-wrap{display:flex;align-items:center;justify-content:center;min-height:200px}
.dy-qr-img{width:200px;height:200px;border:1px solid var(--line);border-radius:10px;background:#fff;padding:6px}
.dy-qr-ph{width:200px;height:200px;display:flex;align-items:center;justify-content:center;border:1px dashed var(--line);border-radius:10px;font-size:12px}
.dy-scan-tip{display:inline-flex;align-items:center;gap:7px;margin-top:10px;font-size:12px;color:var(--ink-2);background:#f5f8ff;border:1px solid #e2ebfb;border-radius:20px;padding:4px 12px}
.dy-dot{width:7px;height:7px;border-radius:50%;background:var(--primary);animation:dypulse 1.3s ease-in-out infinite}
.dy-scan-tip--scanned{background:#eefaf3;border-color:#c6ecd8;color:#0e7a4a}
.dy-scan-tip--scanned .dy-dot{background:var(--ok)}
@keyframes dypulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.75)}}
.dy-scan-ok{padding:10px 0 4px}
.dy-scan-ok-ico{width:46px;height:46px;border-radius:50%;background:var(--ok-bg);color:var(--ok);font-size:24px;display:flex;align-items:center;justify-content:center;margin:0 auto 10px}
.dy-scan-ok-t{font-size:14px;font-weight:600;color:var(--ink);margin-bottom:6px}
.dy-scan-ok-note{font-size:12px;line-height:1.8;color:var(--ink-2);background:#f4fbf7;border:1px solid #cfeddd;border-radius:10px;padding:9px 12px;text-align:left;margin-top:4px}
.dy-scan-ok-note b{color:var(--ink)}
.dy-scan-ok-btns{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-top:12px}

/* 扫码后需要补验证（短信验证码 / 身份验证）——窗口必须保持打开 */
.dy-scan-verify{background:#fffbeb;border:1px solid #f3e0ae;border-radius:12px;padding:14px 16px;text-align:left}
.dsv-ico{font-size:22px;text-align:center;margin-bottom:4px}
.dsv-t{font-size:13.5px;font-weight:700;color:#92400e;text-align:center;margin-bottom:6px}
.dsv-m{font-size:12px;line-height:1.7;color:#7c4a03;background:#fff;border:1px solid #f5e6bd;border-radius:8px;padding:8px 10px;word-break:break-word}
.dsv-steps{margin:10px 0 6px;padding-left:20px;font-size:12px;line-height:1.85;color:#7c4a03}
.dsv-steps b{color:#5b3502}

/* 扫码弹窗内的远程窗口画面（服务器部署：虚拟屏上的登录窗口投到网页里操作） */
.qr-remote{margin-top:14px;border:1px solid var(--line);border-radius:12px;background:#fbfcfe;padding:10px;text-align:left}
.qr-remote-h{display:flex;align-items:center;gap:8px;margin-bottom:8px;flex-wrap:wrap}
.qr-remote-h b{font-size:12.5px}
.qr-remote-url{max-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qr-remote-body{background:#0f172a;border-radius:8px;padding:4px;display:flex;justify-content:center}
.qr-remote-img{width:100%;max-width:720px;height:auto;display:block;border-radius:6px;cursor:crosshair}
.qr-remote-ph{min-height:180px;display:flex;align-items:center;justify-content:center;color:#cbd5e1;font-size:12px;width:100%}
.qr-remote-tip{margin:6px 0 8px}
.qr-remote-in{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.qr-remote-in input{flex:1 1 180px;min-width:0}
/* 远程窗口（noVNC 实时画面）：扫码时用户在自己浏览器里直接操作服务器上的登录窗口 */
.qr-modal--vnc{width:min(96vw,1080px);max-width:min(96vw,1080px)}
.qr-remote-body--vnc{padding:0;background:#0b1220}
.qr-vnc-frame{width:100%;height:min(62vh,620px);border:0;border-radius:8px;display:block;background:#0b1220}
.qr-remote--full{position:fixed;inset:12px;z-index:9999;margin:0;padding:12px;background:#f8fafc;border-radius:12px;box-shadow:0 24px 70px rgba(2,6,23,.45);display:flex;flex-direction:column}
.qr-remote--full .qr-remote-body{flex:1 1 auto;min-height:0}
.qr-remote--full .qr-vnc-frame{height:100%}

/* 账号管理面板 */
.dy-acc--big{align-items:center;gap:12px}
.dy-acc--big .tag:last-child{margin-left:auto;flex:none}
.dy-avatar--lg{width:52px;height:52px;font-size:22px}
.dy-acc-name{font-size:15px !important}
.dy-manage{margin-top:14px;border:1px solid var(--line);border-radius:12px;padding:4px 14px;background:#fbfcfe}
.mg-row{display:flex;gap:12px;padding:9px 0;border-bottom:1px dashed var(--line);align-items:flex-start}
.mg-row:last-child{border-bottom:none}
.mg-k{flex:none;width:82px;font-size:12px;color:var(--ink-2)}
.mg-v{flex:1 1 auto;min-width:0;font-size:12.5px;color:var(--ink);line-height:1.65;word-break:break-all}
.mg-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
/* 发布间隔：数字输入 + 快捷秒数 */
.mg-row--interval .mg-v{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.mg-row--interval input[type=number]{height:30px;padding:0 8px;border:1px solid var(--line);border-radius:8px;font-size:12.5px;text-align:center}
.dy-int-quick{display:flex;gap:6px;flex-wrap:wrap;width:100%}
.btn.xs{height:24px;padding:0 8px;font-size:11px;border-radius:6px;font-weight:600}
/* ---------- 发布范围（通用 / 指定客户）---------- */
.scope{display:flex;flex-direction:column;gap:10px;max-width:460px}
/* 分段控件 */
.seg{display:inline-flex;background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:3px;gap:3px;width:fit-content}
.seg-i{border:none;background:transparent;color:var(--ink-2);font-size:12.5px;font-weight:600;padding:6px 14px;border-radius:7px;transition:all .15s ease;white-space:nowrap}
.seg-i:hover{color:var(--primary)}
.seg-i.on{background:var(--surface);color:var(--primary);box-shadow:var(--shadow-sm)}
.seg-i.on:hover{color:var(--primary)}
/* 通用说明卡 */
.scope-note{display:flex;gap:8px;align-items:flex-start;background:var(--info-bg);border:1px solid #d4e2ff;border-radius:10px;padding:10px 12px;font-size:12px;line-height:1.7;color:var(--ink-2)}
.scope-note-ic{flex:0 0 auto;width:16px;height:16px;border-radius:50%;background:var(--primary);color:#fff;font-size:10px;line-height:16px;text-align:center;margin-top:2px}
/* 指定客户面板 */
.scope-box{border:1px solid var(--line);border-radius:12px;background:var(--surface);overflow:hidden}
.scope-box-head{display:flex;align-items:center;gap:10px;padding:10px 12px;border-bottom:1px solid var(--line);background:var(--surface-2)}
.scope-search{flex:1 1 auto;min-width:0;height:30px;padding:0 10px;border:1px solid var(--line);border-radius:8px;font-size:12.5px;background:#fff;transition:border-color .15s}
.scope-search:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(47,107,255,.12)}
.scope-count{flex:0 0 auto;font-size:11.5px;color:var(--ink-3);white-space:nowrap}
.scope-count b{color:var(--primary);font-weight:700}
.scope-list{max-height:188px;overflow-y:auto;padding:4px}
.scope-item{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:8px;cursor:pointer;transition:background .12s}
.scope-item:hover{background:var(--surface-2)}
.scope-item.on{background:var(--primary-soft)}
.scope-item input[type=checkbox]{position:absolute;opacity:0;width:0;height:0}
.scope-check{flex:0 0 auto;width:17px;height:17px;border:1.5px solid var(--line);border-radius:5px;background:#fff;position:relative;transition:all .15s}
.scope-item.on .scope-check{background:var(--primary);border-color:var(--primary)}
.scope-check::after{content:"";position:absolute;left:5px;top:2px;width:4px;height:8px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg);opacity:0;transition:opacity .12s}
.scope-item.on .scope-check::after{opacity:1}
.scope-name{flex:1 1 auto;min-width:0;font-size:12.5px;color:var(--ink);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.scope-item.on .scope-name{color:var(--primary-deep)}
.scope-tip{padding:9px 12px;font-size:11px;line-height:1.6;color:var(--ink-3);background:var(--surface-2);border-top:1px solid var(--line)}
.scope-empty{padding:18px 12px;text-align:center;font-size:12px;color:var(--ink-3)}
.scope-save{align-self:flex-start;margin-top:2px}
.mg-danger{margin-top:16px;padding-top:12px;border-top:1px solid var(--line)}
.mg-danger-t{font-size:11.5px;font-weight:700;color:#b3261e;margin-bottom:2px}
.mg-readonly{margin-top:14px;padding:10px 12px;border:1px dashed var(--warn);background:var(--warn-bg);border-radius:10px;font-size:12px;color:var(--ink-2);line-height:1.7}

/* 个人号半自动发布提示 */
.dy-semi{margin-top:4px;background:#f7f9fd;border:1px solid #e3eaf7;border-radius:10px;padding:10px 12px;font-size:11.5px;line-height:1.75;color:var(--ink-2)}
.dy-semi b{color:var(--ink)}
.dy-semi-btns{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}

/* 扫码失败提示块（替代原来单行红标签，给出可操作原因与兜底入口） */
.qr-err{background:#fff6f6;border:1px solid #f5d3d3;border-radius:10px;padding:12px 14px;text-align:left}
.qr-err-t{font-weight:700;color:#c62828;font-size:13px;margin-bottom:4px}
.qr-err-m{color:#7a2b2b;font-size:12px;line-height:1.7;white-space:pre-wrap;word-break:break-word}
.right{text-align:right}
.cols-2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px}
/* 投稿箱：左=正文表单，右=目标发布平台（吸顶常驻，选平台与写正文不用来回滚）
   平台数 35+ 时列表本身很高，所以右栏内部滚动，额度合计固定在底部，一屏内始终看得见余额 */
.submit-cols{display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,402px);gap:16px;align-items:start}
/* 高度要按「卡片顶端到视口底部」算（页头 ~100px），否则整块比视口还高，底部额度合计会被裁掉 */
.submit-cols .plat-side{position:sticky;top:14px;display:flex;flex-direction:column;max-height:calc(100vh - 142px);padding-bottom:14px}
.submit-cols .plat-side .card-h{flex:0 0 auto}
.submit-cols .plat-side .card-h h3 .req{color:var(--err);margin-left:3px;font-weight:700}
/* 窄栏里搜索框独占一行，第二行放「共 N 个 · 全选 · 清空」，避免按钮被挤成两截 */
.submit-cols .plat-side .plat-tool{flex:0 0 auto}
.submit-cols .plat-side .plat-tool .plat-search{flex:1 1 100%}
.submit-cols .plat-side .plat-tool .plat-total{flex:1 1 auto;margin-left:0}
/* grid-auto-rows:min-content 不能省：容器有 max-height 时，auto 行高会被压扁去适配高度
   （实测 40px 的卡片被压成 18px，平台名互相叠在一起），必须锁死按内容高度排、超出的滚动 */
.submit-cols .plat-side .plat-list{flex:1 1 auto;min-height:150px;overflow-y:auto;align-content:start;grid-auto-rows:min-content;padding-right:2px}
.submit-cols .plat-side .plat-sum{flex:0 0 auto;margin-top:10px}
@media (max-width:1180px){
  /* 窄屏（含平板/手机）：退化成单列，平台栏不再吸顶，避免把正文挤成一窄条 */
  .submit-cols{grid-template-columns:minmax(0,1fr)}
  .submit-cols .plat-side{position:static;max-height:none}
  .submit-cols .plat-side .plat-list{overflow:visible;max-height:none}
}
/* 关键词/标签：一行一个批量粘贴，下列是解析后的标签预览 */
.tags-ta{min-height:76px;resize:vertical;line-height:1.6}
.tags-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:8px}
.tags-count{font-size:12px;color:var(--ink-3)}
.tags-count b{color:var(--primary);font-size:13px}
.kw-chip{padding:3px 9px;border-radius:999px;background:var(--primary-soft);color:var(--primary);font-size:11.5px;font-weight:600;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tag-line{display:flex;gap:8px;flex-wrap:wrap}
.kpi-mini{display:flex;gap:18px;flex-wrap:wrap}
.kpi-mini .k{background:var(--surface-2);border-radius:10px;padding:10px 14px}
.kpi-mini .k b{font-size:18px;color:var(--primary)}
.bar{display:flex;flex-direction:column;gap:8px}
.bar .bi{display:flex;align-items:center;gap:10px;font-size:13px}
.bar .bi .nm{width:90px;color:var(--ink-2)}
.bar .bi .track{flex:1;height:10px;background:var(--surface-2);border-radius:6px;overflow:hidden}
.bar .bi .fill{height:100%;background:linear-gradient(90deg,var(--primary),var(--cyan));border-radius:6px}
.bar .bi .vv{width:40px;text-align:right;color:var(--ink-2)}
.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--ink-2)}
.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:middle}

/* ---------- 门户专有（企业/代理商/公开报告） ---------- */
.welcome{font-size:15px;color:var(--ink-2);margin-bottom:16px}
.welcome b{color:var(--ink)}
.balance-bar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;background:linear-gradient(135deg,#eef3ff,#e1f7f7);border:1px solid var(--line);border-radius:var(--radius);padding:16px 20px;margin-bottom:20px}
.balance-bar .bb{display:grid;grid-template-columns:auto auto;justify-content:start;align-items:baseline;column-gap:4px;background:var(--surface);border-radius:12px;padding:10px 18px;min-width:150px;box-shadow:var(--shadow-sm)}
.balance-bar .bb .l{grid-column:1/-1;font-size:12px;color:var(--ink-3)}
.balance-bar .bb b{font-size:24px;font-weight:800;color:var(--primary)}
.balance-bar .bb.cyan b{color:var(--cyan)}
.balance-bar .bb.indigo b{color:#5b51e0}
.balance-bar .bb small{font-size:12px;color:var(--ink-3)}
.balance-bar .grow{flex:1}
.balance-bar .bb-note{flex:1 1 260px;min-width:200px;font-size:12px;color:var(--ink-3);line-height:1.7}
.balance-bar .btn{height:42px}
.rank-badge{display:inline-flex;align-items:center;justify-content:center;min-width:38px;padding:2px 8px;border-radius:8px;font-weight:800;background:var(--surface-2);color:var(--ink-2)}
.rank-badge.top{background:linear-gradient(135deg,var(--primary),var(--cyan));color:#fff}

/* ---------- 公开排名报告页 ---------- */
.rp{max-width:1100px;margin:0 auto;padding:28px 22px 50px}
.rp-hero{background:linear-gradient(135deg,#1b2a4e,#22365f);color:#fff;border-radius:18px;padding:32px 30px;box-shadow:var(--shadow);margin-bottom:20px}
.rp-hero .brand{display:flex;align-items:center;gap:10px;font-size:14px;color:#c7d3ec;margin-bottom:12px}
.rp-hero .brand .lg{width:34px;height:34px;border-radius:10px;background:linear-gradient(135deg,var(--primary),var(--cyan));display:flex;align-items:center;justify-content:center;font-weight:800;color:#fff}
.rp-hero h1{font-size:24px;font-weight:800;margin-bottom:8px}
.rp-hero p{color:#c7d3ec;font-size:13px;max-width:760px;line-height:1.7}
.rp-hero .actions{margin-top:16px}
.btn.light{background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.3);color:#fff;height:38px}
.btn.light:hover{background:rgba(255,255,255,.24);color:#fff}
.rp-toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:16px}
.rp-toolbar input{height:38px;border:1px solid var(--line);border-radius:9px;padding:0 12px;background:#fff;min-width:160px}
.rp-summary{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:16px}
.rp-summary .s{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px 18px;min-width:130px;box-shadow:var(--shadow-sm)}
.rp-summary .s .l{font-size:12px;color:var(--ink-3)}
.rp-summary .s .n{font-size:22px;font-weight:800;color:var(--primary);margin-top:2px}
.rp-empty{padding:50px;text-align:center;color:var(--ink-3);background:var(--surface);border:1px dashed var(--line);border-radius:14px}

/* ---------- 做单工作台（紧凑版） ---------- */
.mk-wrap{max-width:1240px}
.mk-wrap .subt{font-size:12px;color:var(--ink-3);margin-left:6px}
.mk-card .card-h{margin-bottom:7px;padding-bottom:7px;border-bottom:1px dashed var(--line)}
.mk-card .card-h h3{font-size:13.5px;display:flex;align-items:center;gap:6px}
.mk-card .card-h .sub{font-size:11.5px;text-align:right;max-width:52%}
.mk-row{display:flex;gap:8px 12px;flex-wrap:wrap}
.mk-field{flex:1 1 190px;margin-bottom:8px}
/* 卡片内最后一个控件不留多余下边距，消除卡片底部的空档 */
.mk-card > :last-child{margin-bottom:0}
.mk-card > .mk-row:last-child .mk-field{margin-bottom:0}
.mk-card > .mk-field:last-child{margin-bottom:0}
.mk-field label{display:block;font-size:12.5px;color:var(--ink-2);margin-bottom:5px;font-weight:600}
.mk-field select,.mk-field input,.mk-field textarea{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:9px;font-size:13px;background:#fff;color:var(--ink);font-family:inherit;transition:.15s;outline:none}
.mk-field select,.mk-field input{height:34px;padding:0 10px}
.mk-field select:focus,.mk-field input:focus,.mk-field textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}
.mk-field select:disabled,.mk-field input:disabled{background:var(--surface-2);color:var(--ink-2)}
.mk-field textarea{min-height:96px;resize:vertical;line-height:1.6}
.mk-toggle-field .mk-toggle{display:flex;align-items:center;gap:8px;font-weight:400;font-size:13px;color:var(--ink-2);padding-top:4px}
/* 审核方式：平台审核 / 客户先审 两个开关并排，与输入框同高同底线 */
.mk-toggle-group{display:flex;align-items:center;gap:8px}
.mk-toggle-group .mk-toggle{flex:0 0 auto;padding-top:0;white-space:nowrap}
/* 勾选做成与输入框同高的方框，四列底部齐平 */
.mk-toggle-box{height:34px;padding:0 10px !important;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--ink) !important;cursor:pointer;transition:.15s}
.mk-toggle-box:hover{border-color:#b9cdf5;background:#f7faff}
.mk-toggle-box.on{border-color:var(--primary);background:var(--primary-soft);color:var(--primary-deep) !important}
.mk-toggle-box input{height:auto !important;padding:0 !important;border:0 !important;box-shadow:none !important}
.mk-toggle input{width:auto;margin-right:4px}
.mk-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:6px}
.mk-err{color:var(--err);font-size:13px}
.mk-result .stat-grid.mini{margin:14px 0}
.mk-result .stat-grid.mini .stat{padding:12px 16px}
.mk-gen-banner{margin:0 0 10px;padding:8px 12px;border-radius:9px;background:#fff7e6;border:1px solid #ffe0a3;color:#9a6200;font-size:12px;line-height:1.5}
.mk-kws{margin-top:6px;display:flex;gap:6px;flex-wrap:wrap}
.mk-kw{display:inline-block;background:#e8f0ff;color:#2b5fd6;border-radius:20px;padding:3px 11px;font-size:12px}
.mk-kws-readonly{margin-top:4px;display:flex;gap:6px;flex-wrap:wrap}
/* 做单：提示词预览 + 媒体多选 */
.mk-prompt-preview{margin-top:12px;background:#f3f8ff;border:1px solid #d7e6ff;border-radius:11px;padding:12px 14px;display:flex;gap:8px;align-items:flex-start;flex-wrap:wrap}
.mk-prompt-preview .mk-prompt-text{color:var(--ink-2);font-size:13px;line-height:1.6;flex:1;min-width:220px}
.mk-prompt-preview .mk-prompt-vis{font-size:12px;color:var(--ink-3);align-self:center}
.mk-tag{display:inline-flex;align-items:center;border-radius:7px;padding:2px 9px;font-size:12px;font-weight:700;color:#fff;background:var(--primary)}
.mk-tag.tp-仿写{background:#2b5fd6}
.mk-tag.tp-知识{background:#0fa3a3}
.mk-tag.tp-推广{background:#e0823d}
.mk-platforms{display:flex;flex-wrap:wrap;gap:6px;row-gap:6px;margin-top:2px;align-items:flex-start}
/* 媒体分组标题（投喂平台 / 抖音号 独立分组，抖音不混入投喂平台） */
.mk-plat-group-h{display:flex;align-items:center;gap:8px;margin:13px 0 6px;font-size:11.5px;font-weight:700;color:var(--ink-2);letter-spacing:.3px}
.mk-plat-group-h:first-of-type{margin-top:4px}
.mk-plat-group-h::before{content:'';width:3px;height:12px;border-radius:2px;background:var(--primary);flex:0 0 auto}
/* 分组标题右侧渐隐细线：让「投喂平台 / 自媒体账号 / 企业官网」三层的层次一眼分明 */
.mk-plat-group-h::after{content:'';flex:1 1 auto;height:1px;margin-left:2px;background:linear-gradient(90deg,var(--line) 0%,rgba(227,234,246,0) 92%)}
.mk-plat-group-h--dy::before{background:#111}
.mk-plat-group-tip{font-weight:400;color:var(--ink-3);font-size:11px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:0 1 auto}
.mk-plat--dy.on{border-color:#111;background:#f4f4f5;box-shadow:0 2px 10px rgba(0,0,0,.10)}
.mk-plat--dy.on .mk-plat-name{color:#111}
/* 企业官网一键投稿（一对一）：绿色调，与抖音黑、投喂平台蓝区分 */
.mk-plat-group-h--web::before{background:#16a34a}
.mk-plat--web.on{border-color:#16a34a;background:#f0fdf4;box-shadow:0 2px 10px rgba(22,163,74,.12)}
.mk-plat--web.on .mk-plat-name{color:#15803d}
.mk-plat.off{opacity:.55;cursor:not-allowed;background:#fafafa}
/* 自媒体多平台（抖音/头条/小红书/百家号）：分组头与选中态各用平台主色，一眼区分 */
/* 自媒体账号：四平台合并为一组，竖条用「抖音墨黑 → 头条红 → 百家蓝」渐变，账号前小圆点即平台标识 */
.mk-plat-group-h--sm::before{background:linear-gradient(180deg,#161823 0%,#f04142 55%,#2932e1 100%)}
.sm-plat-dot{width:7px;height:7px;border-radius:50%;flex:0 0 auto;margin-left:-1px;box-shadow:0 0 0 2px #fff}
.sm-plat-dot--douyin{background:#161823}
.sm-plat-dot--toutiao{background:#f04142}
.sm-plat-dot--xiaohongshu{background:#ff2442}
.sm-plat-dot--baijiahao{background:#2932e1}
.mk-plat.sm-plat{padding:5px 9px 5px 8px;gap:5px}
.mk-plat.sm-plat--douyin.on{border-color:#161823;background:#f4f4f5;box-shadow:0 2px 10px rgba(0,0,0,.10)}
.mk-plat.sm-plat--douyin.on .mk-plat-name{color:#161823}
.mk-plat.sm-plat--toutiao.on{border-color:#f04142;background:#fff5f5;box-shadow:0 2px 10px rgba(240,65,66,.14)}
.mk-plat.sm-plat--toutiao.on .mk-plat-name{color:#d32c2d}
.mk-plat.sm-plat--xiaohongshu.on{border-color:#ff2442;background:#fff4f6;box-shadow:0 2px 10px rgba(255,36,66,.14)}
.mk-plat.sm-plat--xiaohongshu.on .mk-plat-name{color:#e01a37}
.mk-plat.sm-plat--baijiahao.on{border-color:#2932e1;background:#f3f4ff;box-shadow:0 2px 10px rgba(41,50,225,.14)}
.mk-plat.sm-plat--baijiahao.on .mk-plat-name{color:#1e27b8}
.mk-sched-media .dot.dot-douyin{background:#161823;box-shadow:0 0 0 3px #e7e9ee}
.mk-sched-media .dot.dot-toutiao{background:#f04142;box-shadow:0 0 0 3px #ffe6e6}
.mk-sched-media .dot.dot-xiaohongshu{background:#ff2442;box-shadow:0 0 0 3px #ffe6ec}
.mk-sched-media .dot.dot-baijiahao{background:#2932e1;box-shadow:0 0 0 3px #e8eaff}
/* 媒体卡宽度随内容自适应，不再固定列宽 */
.mk-plat{display:inline-flex;align-items:center;gap:6px;flex:0 0 auto;max-width:100%;border:1px solid var(--line);border-radius:9px;padding:5px 9px;min-height:28px;background:#fff;cursor:pointer;font-size:12px;transition:.15s;min-width:0}
.mk-plat:hover{border-color:#b9cdf5;background:#f7faff}
.mk-plat.on{border-color:var(--primary);background:var(--primary-soft);box-shadow:0 2px 10px rgba(47,107,255,.14)}
.mk-plat input{width:auto;margin:0;accent-color:var(--primary);flex:0 0 auto}
.mk-plat-name{font-weight:600;color:var(--ink);font-size:12px;max-width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mk-plat.on .mk-plat-name{color:var(--primary-deep)}
/* 接入方式标签紧跟媒体名（不再靠右），给后续增加更多媒体留出横向空间 */
.mk-plat-badge{margin-left:1px;font-size:10px;color:var(--ink-3);background:var(--surface-2);border-radius:5px;padding:1px 4px;white-space:nowrap;flex:0 0 auto}
.mk-plat-badge.auto{color:#1a6fd6;background:#e9f1ff}
.mk-plat-badge.manual{color:#b25e00;background:#fff4e5}
.mk-plat.on .mk-plat-badge{background:#fff}
.mk-empty-tip{font-size:11.5px;color:var(--ink-3);padding:4px 2px;line-height:1.55}
/* 复制新建提示条：说明「配置已带出、提交是新建任务」，排程顺延时追加一行 */
.mk-copy-note{display:flex;flex-direction:column;gap:2px;margin:0 0 7px;padding:6px 10px;border-radius:8px;background:var(--primary-soft);border:1px solid rgba(47,107,255,.22);font-size:12px;color:var(--ink-2);line-height:1.5}
.mk-copy-note b{color:var(--ink)}
.mk-copy-shift{color:#b45309}
/* 做单：运营专员做单方式切换（做已有订单 / 新建订单） */
.mk-radio{display:flex;gap:18px;flex-wrap:wrap;padding:8px 2px 2px}
.mk-radio label{display:inline-flex;align-items:center;gap:7px;font-size:13px;color:var(--ink-2);cursor:pointer}
.mk-radio input{width:auto;margin:0}
.mk-meta{display:flex;gap:20px;flex-wrap:wrap;margin:12px 0 6px}
.mk-meta-row{display:flex;align-items:center;gap:8px;font-size:13px}
.mk-meta-row .lab{color:var(--ink-3)}
.mk-meta-row b{color:var(--ink)}
.mk-meta-row .mk-llm-ok{color:var(--ok,#12a150)}
.mk-meta-row .mk-llm-warn{color:#c2410c}

/* ===== 提示词模板专用编辑器（PromptEditor）：左编辑 + 右变量，无横向滚动 ===== */
.modal.pe{width:1040px}
.pe-body{display:grid;grid-template-columns:minmax(0,1fr) 316px;gap:18px;padding:16px 20px;align-items:start}
.pe-left{min-width:0}
.pe-2col{display:grid;grid-template-columns:minmax(0,1fr) 126px;gap:12px}
.pe-left .form-row{margin-bottom:12px}
.pe-left .form-row:last-child{margin-bottom:0}
.pe-prompt{min-height:158px !important;font-family:ui-monospace,Consolas,monospace;font-size:12.5px;line-height:1.7}
.pe-example{min-height:90px !important;font-size:12.5px;line-height:1.7}
.pe-label-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
.pe-label-row label{margin-bottom:0}
.pe-html-preview{margin-top:8px;border:1px dashed var(--line);border-radius:10px;padding:10px 12px;max-height:160px;overflow:auto;background:#fbfcff;font-size:12.5px;line-height:1.7}
.pe-html-preview h1,.pe-html-preview h2,.pe-html-preview h3{margin:6px 0}
.pe-checks{display:grid;grid-template-columns:1fr 1fr;gap:8px 14px;margin-top:2px;padding:10px 12px;background:var(--surface-2);border-radius:10px;border:1px solid var(--line)}
.pe-ck{display:flex;align-items:center;gap:7px;font-size:12.5px;color:var(--ink-2);cursor:pointer;white-space:nowrap}
.pe-ck input{width:auto;margin:0;accent-color:var(--primary)}
.pe-vars-panel{background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:12px 12px 14px}
.pe-right{position:sticky;top:0}
.pe-vars-title{font-size:12.5px;font-weight:700;color:var(--ink);margin-bottom:9px;display:flex;align-items:center;gap:6px}
.pe-vars-title::before{content:"";width:3px;height:12px;border-radius:2px;background:var(--primary)}
.pe-var{display:flex;align-items:center;gap:5px;margin-bottom:6px;background:#fff;border:1px solid var(--line);border-radius:8px;padding:5px 7px;cursor:grab;transition:.12s}
.pe-var:hover{border-color:var(--primary)}
.pe-var.dragging{opacity:.45}
.pe-var.over{border-color:var(--primary);box-shadow:0 0 0 2px var(--primary-soft)}
.pe-grip{color:var(--ink-3);cursor:grab;font-size:14px;flex:none}
.pe-var input{border:1px solid var(--line);border-radius:7px;padding:6px 9px;font-size:12px;outline:none;min-width:0}
.pe-var input:focus{border-color:var(--primary)}
.pe-var-name{width:38%;flex:none}
.pe-var-ph{flex:1}
.pe-del{flex:none;color:var(--ink-3);cursor:pointer;font-size:13px;padding:2px 5px;border-radius:6px}
.pe-del:hover{color:var(--err);background:#fdecec}
.pe-addvar{width:100%;border:1px dashed var(--line);background:transparent;border-radius:9px;padding:9px;color:var(--ink-2);font-size:13px;cursor:pointer;margin:4px 0 10px;transition:.15s}
.pe-addvar:hover{border-color:var(--primary);color:var(--primary);background:#f6f9ff}
.pe-imit{margin-top:4px}
.pe-sample{display:flex;align-items:center;gap:8px;margin-top:8px;font-size:12px;color:var(--ink-3)}
.pe-sample input{width:90px;border:1px solid var(--line);border-radius:7px;padding:5px 9px;outline:none}

/* ===== 做单页：模板变量 + 案例预览消费 ===== */
.mk-vars{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:8px}
.mk-vars-lab{font-size:12px;color:var(--ink-3)}
.mk-var-chip{font-size:12px;color:var(--primary-deep);background:var(--primary-soft);border-radius:6px;padding:2px 8px}
.mk-var-chip i{font-style:normal;color:var(--ink-3)}
.mk-example{margin-top:8px;font-size:12px;color:var(--ink-2)}
.mk-example summary{cursor:pointer;color:var(--primary);user-select:none}
.mk-example-body{margin-top:6px;border:1px dashed var(--line);border-radius:8px;padding:10px 12px;max-height:200px;overflow:auto;background:#fbfcff;font-size:13px;line-height:1.7}

/* ===== 做单页：模板变量填写表单 ===== */
.mk-var-form{margin-top:10px;border-top:1px dashed var(--line);padding-top:10px}
.mk-var-form-title{font-size:13px;font-weight:700;color:var(--ink);margin-bottom:8px}
.mk-var-form-title .sub{font-weight:400;font-size:12px;color:var(--ink-3);margin-left:6px}
.mk-var-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:8px 12px}
.mk-var-item{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--ink-2)}
.mk-var-name{font-weight:600;color:var(--ink)}
.mk-var-name i{font-style:normal;font-size:11px;color:var(--ink-3);background:var(--surface-2);border-radius:5px;padding:0 5px;margin-left:5px}
.mk-var-item input{border:1px solid var(--line);border-radius:8px;padding:7px 10px;font-size:13px;outline:none;background:#fff}
.mk-var-item input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}
.mk-var-item input:disabled{background:var(--surface-2);color:var(--ink-3)}

/* ===== 做单页：主区（填写 + 媒体） + 最右栏（提示词预览 + 概览） ===== */
.mk-grid{display:grid;grid-template-columns:minmax(0,1fr) 420px;gap:12px;align-items:start}
.mk-main{min-width:0;display:flex;flex-direction:column;gap:10px}
/* 客户/策略/篇数/审核同一行：按内容取宽、左对齐不铺满，输入框与审核方框底部齐平 */
.mk-row-main{display:grid;grid-template-columns:minmax(0,240px) 132px 88px max-content;gap:6px 10px;align-items:start;justify-content:start}
.mk-row-main .mk-field{flex:none;min-width:0;margin-bottom:0}
@media (max-width:760px){.mk-row-main{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}
/* 带订单进入（旧链路）时客户单字段也不拉满整行 */
.mk-intro > .mk-field.mk-narrow{max-width:260px}
.mk-field.mk-narrow{flex:0 1 260px}
.mk-field.mk-narrow2{flex:0 1 150px}
.mk-field.mk-narrow3{flex:0 1 132px}
.mk-field.mk-toggle-field{flex:1 1 180px}
.mk-field.mk-grow textarea{min-height:118px}
/* 提示词卡（位于最右侧栏） */
.mk-pv-card{border-top:3px solid var(--primary)}
.mk-pv-label-row{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:4px;flex-wrap:wrap}
.mk-pv-label-row .mk-pv-label{margin-bottom:0}
.mk-pv-card .mk-pv-badges{margin-bottom:0}
.mk-pv-card .mk-var-form{margin-top:8px;padding-top:8px}
.mk-pv-card .mk-var-form-title{font-size:12px;margin-bottom:6px}
.mk-pv-card .mk-var-list{gap:5px}
/* 变量项：标签在左、输入在右，一屏放得下更多变量 */
.mk-pv-card .mk-var-list .mk-var-item{display:grid;grid-template-columns:84px minmax(0,1fr);align-items:center;gap:6px;font-size:11.5px}
.mk-pv-card .mk-var-name{font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mk-pv-card .mk-var-ta,.mk-pv-card .mk-var-sel{min-width:0}
.mk-pv-card .mk-example{margin-top:6px;font-size:11.5px}
.mk-pv-card .mk-example-body{max-height:168px;font-size:12px;padding:8px 10px}
/* 变量填写：多行文本可拖拽右下角改高度；品牌知识类变量为下拉 */
.mk-var-ta,.mk-var-sel,.mk-var-input{width:100%;border:1px solid var(--line);border-radius:7px;background:#fff;color:var(--ink);font-family:inherit;font-size:12px;outline:none;transition:.15s}
.mk-var-ta{min-height:30px;padding:5px 8px;line-height:1.5;resize:vertical;overflow:auto;display:block}
.mk-var-sel{height:30px;padding:0 8px}
.mk-var-input{height:30px;padding:0 8px;line-height:30px}
.mk-var-ta:focus,.mk-var-sel:focus,.mk-var-input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}
.mk-var-ta::placeholder{color:var(--ink-3)}
.mk-pick-req{color:var(--err);margin-left:3px;font-weight:400}
.mk-pick-sel{width:100%;height:32px;padding:0 9px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);font-size:12.5px;outline:none;font-family:inherit;transition:.15s}
.mk-pick-sel:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}
.mk-pick-body{margin-top:8px}
.mk-pick-content{max-height:112px;font-size:12px;line-height:1.6;padding:8px 10px;background:#fff;border:1px solid var(--line)}
.mk-main .mk-card{margin-bottom:0}
/* 右栏现在放「选择媒体」：内容比提示词长，不再吸顶（否则下半截滚不到） */
.mk-aside{display:flex;flex-direction:column;gap:12px}
.mk-preview-card{border-top:3px solid var(--primary)}
.mk-live-dot{font-size:11.5px;color:var(--primary);background:var(--primary-soft);border-radius:20px;padding:2px 9px;font-weight:600}
.mk-pv-badges{display:flex;gap:6px;margin-bottom:8px}
.mk-badge{font-size:11px;color:#b25e00;background:#fff4e5;border-radius:5px;padding:2px 8px;font-weight:600}
.mk-badge.gray{color:var(--ink-3);background:var(--surface-2)}
.mk-pv-section{margin-bottom:10px}
.mk-pv-label{font-size:12px;color:var(--ink-3);margin-bottom:4px;font-weight:600}
.mk-pv-content{font-size:13px;color:var(--ink-2);line-height:1.7;background:var(--surface-2);border-radius:9px;padding:10px 12px;max-height:170px;overflow:auto;white-space:pre-wrap;word-break:break-word}
.mk-var-list{display:flex;flex-direction:column;gap:8px}
.mk-var-list .mk-var-item{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--ink-2)}
.mk-prompt-hint{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--ink-3);background:var(--surface-2);border:1px dashed var(--line);border-radius:9px;padding:7px 11px;margin-top:2px}
.mk-hint-ico{color:var(--primary);font-size:14px}
@media (max-width:1120px){.mk-grid{grid-template-columns:1fr}.mk-aside{position:static}}

/* ===== 做单工作台新版布局：提示词在左（主栏）、媒体在右（侧栏） ===== */
/* 提示词卡搬到主栏后改为宽版：关键词独立成块，其它变量两列排布 */
.mk-pv-card--main .mk-pick-content{max-height:150px}
.mk-pv-card--main .mk-var-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:8px 12px}
.mk-pv-card--main .mk-var-list .mk-var-item{display:flex;flex-direction:column;gap:4px;font-size:12px}
.mk-pv-card--main .mk-var-name{font-size:12px;white-space:normal}
.mk-pv-card--main .mk-var-form{margin-top:10px}
/* 关键词块：就是提示词里的「关键词」占位，直接在这里填，不再单独占一行 */
.mk-kw-box{margin-top:9px;border:1px solid var(--line);border-radius:10px;background:#fbfcff;padding:9px 11px}
.mk-kw-head{display:flex;align-items:center;gap:8px;margin-bottom:6px;flex-wrap:wrap}
.mk-kw-tip{font-size:11.5px;color:var(--ink-3)}
.mk-kw-count{margin-left:auto;font-size:11px;font-weight:600;color:var(--primary);background:var(--primary-soft);border-radius:20px;padding:1px 8px}
.mk-kw-ta,.mk-kw-input{width:100%;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);font-family:inherit;font-size:13px;outline:none;transition:.15s}
.mk-kw-ta{min-height:88px;padding:8px 10px;line-height:1.65;resize:vertical;display:block}
.mk-kw-input{height:34px;padding:0 10px}
.mk-kw-ta:focus,.mk-kw-input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}
.mk-kw-ta::placeholder,.mk-kw-input::placeholder{color:var(--ink-3)}
/* 媒体卡在窄侧栏：清单不再自己限高（滚动交给整张媒体卡，见下方「做单弹窗骨架」），排程由一行改两行堆叠 */
.mk-media-card .mk-platforms{overflow:visible;padding-right:0}
/* 独立做单页（非弹窗）没有外层滚动区，清单仍限高滚动，避免 38 个平台把页面拉得很长 */
.mk-wrap:not(.mk-embedded) .mk-media-card .mk-platforms{max-height:330px;overflow-y:auto;padding-right:2px;
  overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#ccd8ee transparent}
.mk-media-card .mk-plat{flex:0 1 auto;max-width:100%}
.mk-media-card .mk-plat-name{max-width:100%}
.mk-media-card .mk-sched-batch{flex-direction:column;align-items:stretch;gap:7px}
.mk-media-card .mk-sched-batch-row{gap:7px}
.mk-media-card .mk-sched-batch-row input[type=date]{width:126px}
.mk-media-card .mk-sched-batch-row input[type=time]{width:96px}
.mk-media-card .mk-sched-row{flex-direction:column;align-items:stretch;gap:5px;padding:8px 10px}
.mk-media-card .mk-sched-media{width:100%;min-width:0}
.mk-media-card .mk-sched-fields{margin-left:0;width:100%;gap:6px}
.mk-media-card .mk-sched-fields input[type=date]{width:126px;flex:1 1 126px;min-width:0}
.mk-media-card .mk-sched-fields input[type=time]{width:96px;flex:0 0 96px}

/* 媒体搜索添加：输入即过滤平台清单，回车/「全部加入」把搜索结果批量勾上 */
.mk-plat-search{margin:0 0 6px}
.mk-plat-search-box{display:flex;align-items:center;gap:6px;height:30px;padding:0 8px;border:1px solid var(--line);border-radius:9px;background:#fff;transition:.15s}
.mk-plat-search-box:focus-within{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}
.mk-plat-search-ico{width:13px;height:13px;flex:0 0 auto;color:var(--ink-3)}
.mk-plat-search-in{flex:1 1 auto;min-width:0;height:26px;border:0;outline:none;background:transparent;font-family:inherit;font-size:12px;color:var(--ink)}
.mk-plat-search-in::placeholder{color:var(--ink-3)}
.mk-plat-search-x{flex:0 0 auto;border:0;background:transparent;color:var(--ink-3);font-size:11px;line-height:1;cursor:pointer;padding:2px 3px;border-radius:5px}
.mk-plat-search-x:hover{color:var(--ink);background:var(--surface-2)}
.mk-plat-search-act{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:5px;font-size:11.5px;color:var(--ink-3)}
.mk-plat-search-act .btn.sm{height:24px;padding:0 9px;font-size:11.5px;flex:0 0 auto}
.mk-plat-search-act .btn.sm[disabled]{opacity:.55;cursor:default}
/* 分组标题行：标题不折行（避免「自媒体账号」被挤成两行），右侧说明单行省略、悬停看全文 */
.mk-plat-group-h > span:first-child{white-space:nowrap;flex:0 0 auto}
.mk-plat-group-h .mk-plat-group-tip{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ① 做单信息卡：整体上收一点，减少上下留白（弹窗里尤其明显） */
.card.mk-intro{padding-top:8px;padding-bottom:8px}
.mk-embedded .card.mk-intro{padding-top:8px;padding-bottom:8px}
.mk-intro .card-h, .mk-embedded .mk-card.mk-intro .card-h{margin-bottom:4px;padding-bottom:5px}
.mk-intro .mk-row-main .mk-field label{margin-bottom:2px}
.mk-intro .mk-row-main .mk-field select, .mk-intro .mk-row-main .mk-field input{height:32px}

/* ===== 做单表单视觉分层：① 要填的 ② 说明/填写要求 ③ 只读预览，三层一眼可分 ===== */
/* ① 字段名：更深更粗，和下面的说明文字拉开对比 */
.mk-field > label:first-child{font-size:13px;font-weight:700;color:#2b3752;letter-spacing:.2px;margin-bottom:6px}
.mk-var-name,.mk-var-form-title{color:#2b3752}
.mk-var-name{font-weight:700}
/* ① 可填控件：白底 + 实线描边 + 极轻内阴影 —— 像「可以写字的格子」浮在卡片上 */
.mk-field select,.mk-field input,.mk-field textarea,
.mk-kw-ta,.mk-kw-input,.mk-pick-sel,.mk-var-ta,.mk-var-sel,.mk-toggle-box,
.mk-plat-search-box{background:#fff;border:1px solid #ccd9ee;box-shadow:0 1px 2px rgba(24,42,80,.05)}
.mk-field select:hover,.mk-field input:hover,.mk-field textarea:hover,
.mk-kw-ta:hover,.mk-kw-input:hover,.mk-pick-sel:hover,.mk-var-ta:hover,.mk-var-sel:hover,
.mk-plat-search-box:hover{border-color:#a9bce2}
.mk-field select:focus,.mk-field input:focus,.mk-field textarea:focus,
.mk-kw-ta:focus,.mk-kw-input:focus,.mk-pick-sel:focus,.mk-var-ta:focus,.mk-var-sel:focus,
.mk-plat-search-box:focus-within{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft);background:#fff}
.mk-field input::placeholder,.mk-field textarea::placeholder,
.mk-kw-ta::placeholder,.mk-kw-input::placeholder,.mk-var-ta::placeholder{color:#b6c1d6}
/* ② 说明 / 填写要求：统一浅灰小字（只在「解释」层面出现，不参与填写） */
.mk-kw-tip,.mk-empty-tip,.mk-plat-group-tip,.mk-card .card-h .sub,.mk-prompt-hint,.mk-var-form-title .sub{color:#8b98b1;font-size:11px}
.mk-empty-tip,.mk-prompt-hint{font-size:11.5px}
.mk-card .card-h .sub,.mk-plat-group-tip{color:#9aa7c2}
.mk-kw-tip{background:#f4f7fd;border-radius:6px;padding:1px 7px;line-height:1.9}
.mk-kw-tip::before{content:"ⓘ";margin-right:4px;color:#a9b6cd}
.mk-prompt-hint{background:#f7f9fe;border-color:#d9e4f6;color:#8b98b1}
/* ③ 只读预览（系统提示词 / 案例正文）：淡蓝底 + 虚线框，明确「只能看不能改」 */
.mk-pick-content,.mk-pv-content,.mk-example-body{background:#f8fafe;border:1px dashed #cfdff8;color:#46536f}
/* 「只读预览」小标：贴在系统提示词标签后面，和可填区域再拉开一层语义 */
.mk-ro-tag{font-style:normal;margin-left:6px;font-size:10.5px;font-weight:600;color:#6b83ab;background:#edf3ff;border:1px solid #d6e4fa;border-radius:4px;padding:1px 6px;vertical-align:1px}
/* 分组容器（关键词块）：浅底托住白底控件，形成「容器 > 填写格」的层次 */
.mk-kw-box{background:#f7f9fd;border-color:#e8eefa}

/* ===== 通用视图：批量管理 + 任务展开 + 文章预览 ===== */
.batch-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:8px 12px;margin-bottom:12px}
.batch-bar .sel-count{font-size:13px;color:var(--ink-2);margin-right:4px}
.batch-bar .sel-count b{color:var(--primary)}
.col-sel{width:36px;text-align:center}
.col-exp{width:36px;text-align:center}
/* 自定义排序列（投喂平台等）：序号 + 上移/下移，调整的是全局顺序 */
.col-sort{width:104px}
.sort-btns{display:flex;align-items:center;gap:4px}
.sort-btns.dim{opacity:.45}
.sort-idx{min-width:20px;font-size:11.5px;font-weight:700;color:var(--ink-3);text-align:right}
.sort-btn{width:20px;height:20px;padding:0;border:1px solid var(--line);border-radius:5px;background:#fff;color:var(--ink-3);
  font-size:9px;line-height:1;cursor:pointer;font-family:inherit;transition:.15s;display:inline-flex;align-items:center;justify-content:center}
.sort-btn:hover:not(:disabled){border-color:var(--primary);color:var(--primary);background:var(--primary-soft)}
.sort-btn:disabled{opacity:.5;cursor:not-allowed}
.exp-btn{width:23px;height:23px;border-radius:7px;border:1px solid var(--line);background:#fff;color:var(--ink-2);font-size:10px;line-height:1;
  display:inline-flex;align-items:center;justify-content:center;transition:.15s;font-family:inherit;padding:0}
.exp-btn:hover{border-color:var(--primary);color:var(--primary);background:var(--primary-soft)}
.exp-btn.open{background:var(--primary);border-color:var(--primary);color:#fff;box-shadow:0 2px 8px rgba(47,107,255,.3)}
.col-sel input,.col-sel input{width:auto;margin:0;accent-color:var(--primary)}
.exp-row td{background:#fbfcff;border-bottom:2px solid var(--primary-soft)}
.exp-inner{padding:6px 4px}
.exp-title{font-size:13px;font-weight:700;color:var(--ink);margin-bottom:8px}
.exp-loading{color:var(--primary);font-weight:400;margin-left:8px}
.exp-empty{font-size:12px;color:var(--ink-3);padding:6px 0}
.exp-art{display:flex;align-items:center;justify-content:space-between;gap:12px;background:#fff;border:1px solid var(--line);border-radius:9px;padding:8px 12px;margin-bottom:6px}
.exp-art-main{display:flex;align-items:center;gap:10px;min-width:0}
.exp-art-status{font-size:11px;font-weight:600;border-radius:5px;padding:2px 8px;flex:none}
.exp-art-status.st-orange{color:#b25e00;background:#fff4e5}
.exp-art-status.st-gray{color:var(--ink-3);background:var(--surface-2)}
.exp-art-status.st-green{color:#15803d;background:#e7f6ec}
.exp-art-status.st-red{color:#c0392b;background:#fdecec}
.exp-art-status.st-cyan{color:#0e7490;background:#e3f4f8}
.exp-art-title{font-size:13px;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.exp-art-wc{font-size:12px;color:var(--ink-3);flex:none}
.exp-art-actions{display:flex;gap:6px;flex:none}
/* 文章正文预览弹窗（尺寸/结构继承统一弹窗体系，此处只定义正文排版） */
.article-preview{font-size:13.5px;line-height:1.85;color:var(--ink-2)}
.article-preview h1{font-size:20px;color:var(--ink);margin:4px 0 12px}
.article-preview h2{font-size:17px;color:var(--ink);margin:18px 0 8px;border-left:3px solid var(--primary);padding-left:10px}
.article-preview h3{font-size:15px;color:var(--ink);margin:14px 0 6px}
.article-preview p{margin:8px 0}
.article-preview ul{margin:8px 0;padding-left:22px}
.article-preview li{margin:4px 0}
.article-preview blockquote{background:var(--surface-2);border-left:3px solid var(--primary);margin:8px 0;padding:8px 12px;color:var(--ink-3);border-radius:0 8px 8px 0}
.article-preview blockquote div{margin:2px 0}
.article-preview ol{margin:8px 0;padding-left:24px}
.article-preview hr{border:none;border-top:1px dashed var(--line);margin:16px 0}
.article-preview img{max-width:100%;height:auto;border-radius:8px;margin:8px 0}
.article-preview a{color:var(--primary);text-decoration:none}
.article-preview a:hover{text-decoration:underline}
.article-preview strong{color:var(--ink);font-weight:700}
.article-preview code{background:var(--surface-2);border-radius:5px;padding:1px 5px;font-size:12.5px;font-family:ui-monospace,Menlo,Consolas,monospace}
.article-preview pre{background:var(--surface-2);border-radius:9px;padding:10px 12px;overflow:auto;margin:10px 0;white-space:pre-wrap}
.article-preview pre code{background:transparent;padding:0}
.article-preview table{border-collapse:collapse;width:100%;margin:10px 0;font-size:12.5px}
.article-preview th,.article-preview td{border:1px solid var(--line);padding:6px 9px;text-align:left}

/* ---------- 法律页（隐私政策 / 用户协议） ---------- */
.legal{max-width:880px;margin:0 auto;padding:32px 20px 56px;min-height:100vh;background:var(--bg)}
.legal-bar{display:flex;align-items:center;justify-content:space-between;padding-bottom:16px;border-bottom:1px solid var(--line);margin-bottom:24px}
.legal-brand{display:flex;align-items:center;gap:8px;font-size:16px;color:var(--ink)}
.legal-brand .lg{width:30px;height:30px;border-radius:9px;background:linear-gradient(135deg,var(--primary),var(--cyan));color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700}
.legal .article-preview h1{margin-bottom:6px}
.legal-updated{color:var(--ink-3);font-size:12px;margin:0 0 18px}
.legal-note{margin-top:18px;padding:10px 14px;background:var(--primary-soft);border-radius:10px;color:var(--primary-deep);font-size:13px}
.legal-foot{margin-top:32px;padding-top:16px;border-top:1px solid var(--line);display:flex;gap:14px;align-items:center;color:var(--ink-3);font-size:12px}
.legal-foot a{color:var(--ink-3);text-decoration:none}
.legal-foot a:hover{color:var(--primary);text-decoration:underline}
/* 注册页：同意条款勾选 */
.agree{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--ink-2);margin:2px 0 4px;cursor:pointer}
.agree input{width:15px;height:15px;accent-color:var(--primary)}
.agree a{color:var(--primary);text-decoration:none}
.agree a:hover{text-decoration:underline}
.tip.links{margin-top:6px}
.tip.links a{color:var(--primary);text-decoration:none}
.tip.links a:hover{text-decoration:underline}

/* ---------- 品牌知识库（两级维护视图） ---------- */
.kb-tip{background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--primary);border-radius:10px;padding:10px 14px;font-size:13px;color:var(--ink-2);margin-bottom:14px}
.kb-head{display:flex;align-items:center;gap:14px;margin-bottom:14px}
.kb-head-txt h3{margin:0 0 2px;font-size:16px}
.kb-head-txt p{margin:0;font-size:12px;color:var(--ink-3)}
.kb-count{display:inline-block;min-width:26px;text-align:center;background:var(--primary-soft);color:var(--primary);border-radius:999px;padding:2px 9px;font-weight:700;font-size:12px}
.kb-count.zero{background:var(--surface-2);color:var(--ink-3);font-weight:400}
.kb-st{display:inline-block;padding:2px 9px;border-radius:999px;font-size:12px}
.kb-st.on{background:rgba(34,197,94,.12);color:#16a34a}
.kb-st.off{background:var(--surface-2);color:var(--ink-3)}
.kb-kw{display:inline-block;background:rgba(47,107,255,.08);color:var(--primary);border-radius:6px;padding:1px 7px;font-size:12px;margin:1px 4px 1px 0}
.kb-view-kw{margin-bottom:12px;font-size:13px}
.kb-view-kw label{font-weight:600;color:var(--ink-2);margin-right:4px}
.kb-view-content{white-space:pre-wrap;background:var(--surface-2);border-radius:10px;padding:14px 16px;font-size:13px;line-height:1.75;color:var(--ink);max-height:52vh;overflow:auto}

/* ---------- 做单 · 循环发布排程 ---------- */
.mk-loop-inline{display:flex;align-items:center;gap:8px;color:var(--ink-2);font-size:13px}
.mk-loop-inline input{width:92px;text-align:center}

/* ---------- 做单 · 按媒体发布排程（紧凑工具条 + 轻表格） ---------- */
.mk-sched{margin-top:8px;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#fff}
.mk-sched-batch{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;
  background:linear-gradient(90deg,#f1f6ff,#f3fbfb);padding:8px 12px;border-bottom:1px solid var(--line)}
.mk-sched-title{font-weight:700;font-size:12.5px;display:flex;align-items:center;gap:7px;color:var(--ink)}
.mk-sched-title::before{content:"";width:3px;height:12px;border-radius:2px;background:linear-gradient(180deg,var(--primary),var(--cyan))}
.mk-sched-title i{font-style:normal;font-weight:400;font-size:11.5px;color:var(--ink-3);margin-left:2px}
.mk-sched-batch-row{display:flex;align-items:center;gap:9px;font-size:12px;color:var(--ink-2);flex-wrap:wrap}
.mk-sched-batch-row label{display:flex;align-items:center;gap:5px;white-space:nowrap}
.mk-sched-batch-row input{height:30px;padding:0 8px;border:1px solid var(--line);border-radius:8px;font-size:12px;background:#fff;color:var(--ink);outline:none}
.mk-sched-batch-row input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}
.mk-sched-batch-row input[type=date]{width:134px}
.mk-sched-batch-row input[type=time]{width:100px}
.mk-sched-batch-row input[type=number]{width:62px;text-align:center}
.mk-sched .btn.sm{height:30px}
/* 按媒体排程：一行一媒体的轻量列表（替代原先拥挤的表格） */
.mk-sched-list{display:flex;flex-direction:column}
.mk-sched-row{display:flex;align-items:center;gap:12px;padding:8px 12px;border-bottom:1px solid #f2f6fd;flex-wrap:wrap}
.mk-sched-row:last-child{border-bottom:none}
.mk-sched-row:nth-child(even){background:#fcfdff}
.mk-sched-media{display:flex;align-items:center;gap:7px;font-size:12.5px;font-weight:600;color:var(--ink);min-width:132px}
.mk-sched-media .dot{width:6px;height:6px;border-radius:50%;background:var(--primary);box-shadow:0 0 0 3px var(--primary-soft);flex:0 0 auto}
.mk-sched-media .dot.dy{background:#111;box-shadow:0 0 0 3px #e7e9ee}
.mk-sched-tag{font-size:10.5px;color:var(--ink-3);background:var(--surface-2);border-radius:5px;padding:1px 6px;font-weight:400;white-space:nowrap}
.mk-sched-fields{display:flex;align-items:center;gap:10px;margin-left:auto;flex-wrap:wrap}
.mk-sched-fields label{display:flex;align-items:center;gap:5px;font-size:11.5px;color:var(--ink-3);white-space:nowrap}
.mk-sched-fields input{height:30px;padding:0 8px;border:1px solid var(--line);border-radius:8px;font-size:12px;background:#fff;color:var(--ink);outline:none}
.mk-sched-fields input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}
.mk-sched-fields input[type=date]{width:138px}
.mk-sched-fields input[type=time]{width:100px}
.mk-sched-fields input[type=number]{width:58px;text-align:center}
/* 提交区：右栏媒体卡下方的独立卡片（提示与标题同行、按钮一行，高度压到最小） */
.mk-submit-card{border-top:3px solid var(--primary);background:linear-gradient(180deg,#fbfdff,#f6faff)}
.mk-submit-card .card-h{border-bottom:none;padding-bottom:0;margin-bottom:6px}
.mk-submit-card .card-h h3{font-size:13.5px;flex:0 0 auto}
.mk-submit-hint{font-size:11.5px;color:var(--ink-3);line-height:1.35;position:relative;padding-left:14px;
  margin-left:10px;margin-right:auto;min-width:0;text-align:left;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mk-submit-hint::before{content:"ⓘ";position:absolute;left:0;top:0;color:var(--primary);font-size:12px}
.mk-submit-card .mk-actions{margin-top:0;gap:8px;flex-wrap:wrap}
.mk-submit-card .mk-actions .mk-err{flex:1 0 100%;margin-bottom:2px}
/* 「清空/还原」按内容取宽，「提交」按钮吃掉剩余宽度 */
.mk-submit-card .mk-actions .btn{flex:0 0 auto;height:32px;padding:0 12px}
.mk-submit-card .mk-actions .btn.primary{flex:1 1 auto;justify-content:center;min-width:150px}
/* 弹窗内再收一档：卡片内边距 */
.mk-embedded .mk-card.mk-submit-card{padding-top:9px;padding-bottom:9px}

/* 密钥余额不足 / 未绑定：强制确认提示条（未经同意绝不借用其他客户/企业/代理商密钥） */
.mk-warn{display:flex;gap:12px;padding:12px 14px;border:1px solid #f3c28a;border-radius:12px;background:#fff8ec;margin:10px 0}
.mk-warn-ico{font-size:20px;line-height:1.4}
.mk-warn-body{flex:1;min-width:0}
.mk-warn-title{font-weight:700;color:#b9760a;font-size:14px;margin-bottom:4px}
.mk-warn-msg{font-size:13px;color:#8a5a18;white-space:pre-line;line-height:1.6}
.mk-warn-actions{display:flex;gap:10px;margin-top:10px;flex-wrap:wrap}

/* ---------- 列表标题链接（点击预览） ---------- */
.tbl .lnk{color:var(--primary);cursor:pointer;text-decoration:none}
.tbl .lnk:hover{text-decoration:underline}
/* 回链列：超长链接截断省略，完整地址放 title，点击新窗口打开 */
.tbl .lnk-url{display:inline-block;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}
/* 真实链接列（列配置 urlText）：直接展示完整回链地址，超长按列宽省略，完整地址在 title 悬浮。
   字号 11.5px 是为了让 https:// 开头的长地址在「与标题平分」的列宽里也完整显示（少占 ~10px） */
.tbl .lnk-url-full{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  vertical-align:bottom;font-size:11.5px;font-variant-numeric:tabular-nums;letter-spacing:-.1px}

/* ---------- 生成任务：新建 / 编辑任务弹窗（内容 = 做单工作台） ---------- */
.modal.mk-modal{width:1200px;max-width:calc(100vw - 36px);max-height:92vh}
.modal.mk-modal .modal-h{padding:13px 18px;background:linear-gradient(180deg,#fff,#f1f6ff)}
.mk-modal-b{padding:12px 14px;background:var(--bg)}
.mk-modal-f{display:flex;align-items:center;gap:10px;padding:10px 18px;border-top:1px solid var(--line);background:#fafcff;flex:0 0 auto}
.mk-modal-f .sub{font-size:12px;color:var(--ok);font-weight:600}
.mk-modal-f .grow{flex:1}
/* 弹窗内的做单工作台：左侧填写 + 提示词，最右栏选择媒体 */
.mk-embedded{max-width:none}
.mk-embedded .mk-grid{grid-template-columns:minmax(0,1fr) 420px;gap:10px}
/* 右侧栏内容较长，不吸顶，随弹窗一起滚动，避免底部被截断 */
.mk-embedded .mk-aside{position:static;align-self:start;gap:9px}
/* 弹窗内右栏＝「媒体卡（唯一滚动区）＋提交卡（常驻可见）」：
   媒体卡自然铺满剩余高度，滚动只发生在这一层，杜绝「弹窗 / 媒体卡 / 清单」三层滚动条叠在一起 */
.mk-embedded .mk-media-card{max-height:none}
/* ---------- 做单弹窗骨架：高度按 92vh 分配，滚动下沉到右栏 ---------- */
.modal.mk-modal .mk-modal-b{flex:1 1 auto;min-height:0;overflow:hidden;display:flex}
.modal.mk-modal .mk-wrap.mk-embedded{flex:1 1 auto;min-width:0;min-height:0;display:flex;flex-direction:column}
.mk-embedded .mk-grid{flex:1 1 auto;min-height:0;grid-template-rows:minmax(0,1fr);align-items:stretch}
.mk-embedded .mk-main{min-height:0;overflow-y:auto;overflow-x:hidden;padding-right:2px;scrollbar-width:thin;scrollbar-color:#d3ddec transparent}
.mk-embedded .mk-aside{min-height:0;overflow:hidden;align-self:stretch}
.mk-embedded .mk-media-card{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;
  scrollbar-width:thin;scrollbar-color:#ccd8ee transparent}
.mk-embedded .mk-media-card::-webkit-scrollbar{width:8px}
.mk-embedded .mk-media-card::-webkit-scrollbar-track{background:transparent}
.mk-embedded .mk-media-card::-webkit-scrollbar-thumb{background:#ccd8ee;border:2px solid transparent;border-radius:8px;background-clip:content-box}
.mk-embedded .mk-media-card::-webkit-scrollbar-thumb:hover{background:#a9bce2;background-clip:content-box}
/* 媒体卡里「投喂平台」分组标题 + 搜索框吸顶：向下翻平台时搜索始终在手边 */
.mk-embedded .mk-plat-head{position:sticky;top:-11px;z-index:6;background:var(--surface);
  margin:0 -14px;padding:0 14px 6px;border-radius:12px 12px 0 0;box-shadow:0 8px 10px -10px rgba(24,42,80,.28)}
/* 吸顶区下沿做一层渐变，滚动内容从下面淡入，避免硬切 */
.mk-embedded .mk-plat-head::after{content:'';position:absolute;left:0;right:0;bottom:-15px;height:15px;pointer-events:none;
  background:linear-gradient(rgba(255,255,255,.96) 0%,rgba(255,255,255,.62) 42%,rgba(255,255,255,0) 100%)}
.mk-embedded .mk-plat-head .mk-plat-group-h:first-of-type{margin-top:11px}
/* 弹窗内容区的兜底滚动条也做细（极窄屏才会出现） */
.mk-modal-b{scrollbar-width:thin;scrollbar-color:#c9d6ec transparent}
.mk-modal-b::-webkit-scrollbar{width:9px}
.mk-modal-b::-webkit-scrollbar-track{background:transparent}
.mk-modal-b::-webkit-scrollbar-thumb{background:#ccd8ee;border:3px solid transparent;border-radius:9px;background-clip:content-box}
.mk-modal-b::-webkit-scrollbar-thumb:hover{background:#a9bce2;background-clip:content-box}
.mk-embedded .card{padding:11px 14px;border-radius:12px;box-shadow:none;border-color:#e7eefa}
.mk-embedded .mk-card .card-h{margin-bottom:7px;padding-bottom:7px}
.mk-embedded .mk-main{gap:9px}
.mk-embedded .mk-pv-content{max-height:118px}
/* 提示词卡已在主栏，弹窗里不必再压到 118px */
.mk-embedded .mk-pv-card--main .mk-pick-content{max-height:150px}
/* 窄屏变单列：两栏上下排，退回「整页滚动」，不再做高度分配（否则第一行会被压扁） */
@media (max-width:1080px){
  .mk-embedded .mk-grid{grid-template-columns:1fr;grid-template-rows:none}
  .mk-embedded .mk-main,.mk-embedded .mk-aside{overflow:visible;min-height:0}
  .mk-embedded .mk-media-card{overflow:visible}
  .modal.mk-modal .mk-modal-b{overflow-y:auto;display:block}
  .modal.mk-modal .mk-wrap.mk-embedded{display:block}
}

/* ============ 视觉增强（增量，不改动既有规则） ============ */
/* ---------- 弹窗：遮罩淡入 + 回弹入场 + 略增玻璃模糊 ---------- */
.modal-mask{animation:maskIn .22s ease;backdrop-filter:blur(3px)}
.modal{animation:pop .24s cubic-bezier(.16,1,.3,1)}
@keyframes maskIn{from{opacity:0}to{opacity:1}}
/* 关闭按钮轻微放大反馈 */
.modal-x:hover,.modal .m-h .x:hover{transform:scale(1.08)}

/* ---------- 全局 Toast（接管 alert） ---------- */
.toast-wrap{position:fixed;top:18px;left:50%;transform:translateX(-50%);z-index:9999;display:flex;flex-direction:column;gap:10px;align-items:center;pointer-events:none;width:max-content;max-width:92vw}
.toast{display:flex;align-items:center;gap:9px;padding:11px 16px;border-radius:12px;font-size:13.5px;font-weight:600;line-height:1.45;
  box-shadow:0 12px 30px rgba(15,23,42,.18);border:1px solid transparent;background:#fff;color:var(--ink);
  max-width:92vw;pointer-events:auto;cursor:pointer;opacity:0;transform:translateY(-12px) scale(.96);
  transition:opacity .22s ease, transform .24s cubic-bezier(.16,1,.3,1)}
.toast.show{opacity:1;transform:none}
.toast.hide{opacity:0;transform:translateY(-10px) scale(.97);transition:opacity .2s ease, transform .2s ease}
.toast-ic{flex:0 0 auto;width:20px;height:20px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:800;color:#fff;font-style:normal}
.toast--success{background:#e6f8f0;color:#15803d;border-color:#bfe9d3}
.toast--success .toast-ic{background:#15b86b}
.toast--error{background:#fdeaef;color:#c0264e;border-color:#f6c9d3}
.toast--error .toast-ic{background:#f0506e}
.toast--info{background:#e7efff;color:#1d4ed8;border-color:#cfe0ff}
.toast--info .toast-ic{background:#2f6bff}
.toast--warn{background:#fef3e0;color:#b45309;border-color:#f6dfae}
.toast--warn .toast-ic{background:#f5a623}

/* ---------- 卡片 / 统计卡悬浮浮起 ---------- */
.card,.stat{transition:transform .18s ease, box-shadow .18s ease}
.card:hover,.stat:hover{transform:translateY(-2px);box-shadow:0 14px 34px rgba(31,42,68,.12)}

/* ---------- 按钮按压反馈 ---------- */
.btn:active{transform:translateY(1px)}
.btn.primary:active,.btn.cyan:active{box-shadow:0 2px 6px rgba(47,107,255,.28)}
.btn:disabled:active{transform:none}

/* ---------- 焦点可见性（键盘可达） ---------- */
:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:6px}
.form-row input:focus-visible,.form-row select:focus-visible,.form-row textarea:focus-visible,
.mk-field input:focus-visible,.mk-field select:focus-visible,.mk-field textarea:focus-visible,
.mk-var-ta:focus-visible,.mk-var-sel:focus-visible,.mk-pick-sel:focus-visible,
.pe-var input:focus-visible{outline:none}

/* ---------- 文本选中色 ---------- */
::selection{background:var(--primary-soft);color:var(--primary-deep)}

/* ---------- 空态图标（纯 CSS，无 emoji） ---------- */
.empty{position:relative}
.empty::before{content:"";display:block;width:46px;height:46px;margin:0 auto 12px;border-radius:14px;opacity:.7;
  background:linear-gradient(var(--ink-3),var(--ink-3)) center/16px 2px no-repeat, var(--surface-2);
  border:1px solid var(--line)}

/* ---------- 加载旋转 ---------- */
.spin{width:18px;height:18px;border:2px solid var(--primary-soft);border-top-color:var(--primary);border-radius:50%;display:inline-block;animation:spin .7s linear infinite;vertical-align:-3px}
@keyframes spin{to{transform:rotate(360deg)}}

/* ---------- 全局滚动条（细腻浅灰，不覆盖既有自定义滚动条） ---------- */
*::-webkit-scrollbar{width:10px;height:10px}
*::-webkit-scrollbar-thumb{background:#cfdbef;border-radius:10px;border:2px solid #fff}
*::-webkit-scrollbar-thumb:hover{background:#b6c6e0}
*::-webkit-scrollbar-track{background:transparent}
*::-webkit-scrollbar-corner{background:transparent}

/* ---------- 尊重「减少动画」系统偏好 ---------- */
@media (prefers-reduced-motion: reduce){
  *{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
}

/* ============================================================
   公开营销落地页（Landing）— 云犀视界品牌对外站点
   复用既有设计令牌，不引入第二套 .modal / 尺寸类
   ============================================================ */
.lp{max-width:1180px;margin:0 auto;padding:0 22px 60px;color:var(--ink-1);font-size:15px;line-height:1.7;-webkit-font-smoothing:antialiased}
.lp a{cursor:pointer}
.lp .btn{font-size:14px;padding:10px 20px;border-radius:10px;cursor:pointer;border:1px solid transparent;transition:transform .12s ease, box-shadow .2s ease, background .2s ease}
.lp .btn.primary{background:var(--primary);color:#fff;box-shadow:0 8px 20px rgba(47,107,255,.25)}
.lp .btn.primary:hover{transform:translateY(-2px);box-shadow:0 12px 26px rgba(47,107,255,.32)}
.lp .btn.light{background:#fff;color:var(--primary);border-color:var(--line)}
.lp .btn.light:hover{transform:translateY(-2px);box-shadow:0 8px 18px rgba(20,40,80,.08)}
.lp .btn.sm{padding:7px 14px;font-size:13px}

.lp-nav{display:flex;align-items:center;justify-content:space-between;padding:18px 0;position:sticky;top:0;background:rgba(238,243,251,.86);backdrop-filter:blur(8px);z-index:20}
.lp-logo{display:flex;align-items:center;gap:10px;font-weight:800;font-size:18px}
.lp-logo .lg{width:34px;height:34px;border-radius:9px;background:linear-gradient(135deg,var(--primary),var(--cyan));color:#fff;display:flex;align-items:center;justify-content:center;font-size:17px;font-weight:800;box-shadow:0 4px 12px rgba(47,107,255,.3)}
.lp-nav-links{display:flex;align-items:center;gap:18px;font-size:14px;color:var(--ink-2)}
.lp-nav-links a:hover{color:var(--primary)}

.lp-hero{text-align:center;padding:60px 0 40px}
.lp-hero-badge{display:inline-block;padding:6px 14px;border-radius:999px;background:#e6f0ff;color:var(--primary);font-size:13px;font-weight:600;margin-bottom:18px}
.lp-hero h1{font-size:42px;line-height:1.25;font-weight:800;letter-spacing:-.5px;margin:0 0 16px}
.lp-hero h1 .hl{background:linear-gradient(120deg,var(--primary),var(--cyan));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.lp-sub{max-width:680px;margin:0 auto;color:var(--ink-2);font-size:16px}
.lp-hero-actions{display:flex;gap:14px;justify-content:center;margin-top:28px;flex-wrap:wrap}

.lp-section{padding:54px 0}
.lp-section.alt{background:#f6f9fe;border-radius:24px;margin:0 -22px;padding:54px 22px}
.lp-sec-head{text-align:center;max-width:760px;margin:0 auto 36px}
.lp-sec-kicker{display:inline-block;font-size:13px;font-weight:700;color:var(--cyan);letter-spacing:1px;margin-bottom:8px}
.lp-sec-head h2{font-size:30px;font-weight:800;margin:0 0 12px}
.lp-sec-head p{color:var(--ink-2);margin:0}

.lp-feature-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.lp-feature{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:22px;position:relative;transition:transform .15s ease, box-shadow .2s ease, border-color .2s ease}
.lp-feature:hover{transform:translateY(-4px);box-shadow:0 16px 34px rgba(20,40,80,.1);border-color:#cfe0ff}
.lp-feature-no{position:absolute;top:16px;right:18px;font-size:13px;font-weight:800;color:var(--ink-3);opacity:.5}
.lp-feature-ic{width:46px;height:46px;border-radius:12px;background:#eef4ff;display:flex;align-items:center;justify-content:center;font-size:22px;margin-bottom:12px}
.lp-feature h3{font-size:17px;margin:0 0 8px}
.lp-feature p{color:var(--ink-2);font-size:14px;margin:0 0 14px}
.lp-feature-tag{display:inline-block;font-size:12px;color:var(--primary);background:#eef4ff;padding:4px 10px;border-radius:8px;font-weight:600}

.lp-steps{display:flex;gap:8px;overflow-x:auto;padding-bottom:6px}
.lp-step{flex:1;min-width:170px;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:20px;position:relative}
.lp-step-no{width:34px;height:34px;border-radius:9px;background:linear-gradient(135deg,var(--primary),var(--cyan));color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;margin-bottom:10px}
.lp-step h4{margin:0 0 6px;font-size:15px}
.lp-step p{margin:0;color:var(--ink-2);font-size:13px}
.lp-step-arrow{position:absolute;right:-10px;top:46%;font-size:18px;color:var(--ink-3);z-index:2}

.lp-scenarios{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.lp-scenario{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:26px;text-align:center;transition:transform .15s ease, box-shadow .2s ease}
.lp-scenario:hover{transform:translateY(-4px);box-shadow:0 16px 34px rgba(20,40,80,.1)}
.lp-sc-ic{font-size:34px;margin-bottom:10px}
.lp-scenario h3{font-size:18px;margin:0 0 8px}
.lp-scenario p{color:var(--ink-2);font-size:14px;margin:0}

.lp-faq{max-width:820px;margin:0 auto}
.lp-faq-item{background:#fff;border:1px solid var(--line);border-radius:12px;padding:0 18px;margin-bottom:12px;transition:border-color .2s ease}
.lp-faq-item[open]{border-color:#cfe0ff}
.lp-faq-item summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;padding:16px 0;font-weight:600;font-size:15px}
.lp-faq-item summary::-webkit-details-marker{display:none}
.lp-faq-ic{font-size:20px;color:var(--primary);font-weight:400;transition:transform .2s ease}
.lp-faq-item[open] .lp-faq-ic{transform:rotate(45deg)}
.lp-faq-a{padding:0 0 16px;color:var(--ink-2);font-size:14px}

.lp-cta{text-align:center;padding:60px 22px;background:linear-gradient(135deg,#eef4ff,#e6fbfb);border-radius:24px;margin-top:30px}
.lp-cta h2{font-size:28px;font-weight:800;margin:0 0 10px}
.lp-cta p{color:var(--ink-2);margin:0 0 22px}

/* 落地页页脚：品牌 / 简介 / 联系方式 三块严格并排同一行，一律不折行 */
.lp-foot{margin-top:46px;padding-top:30px;border-top:1px solid var(--line);color:var(--ink-2)}
.lp-foot-inner{max-width:none;display:flex;align-items:center;justify-content:space-between;gap:26px}
.lp-foot-brandtop{display:flex;align-items:center;gap:10px;flex:0 0 auto}
.lp-foot-brandtop .lg{width:32px;height:32px;border-radius:9px;background:linear-gradient(135deg,var(--primary),var(--cyan));color:#fff;display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:800;box-shadow:0 4px 12px rgba(47,107,255,.3);flex:0 0 auto}
.lp-foot-brandname{font-size:17px;font-weight:800;color:var(--ink-1);white-space:nowrap}
/* 简介：单行不折，宽屏下完整显示，极窄时才省略 */
.lp-foot-intro{font-size:12.5px;line-height:1.5;color:var(--ink-2);margin:0;flex:0 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* 联系方式：电话与地址并排一行，中间细竖线分隔 */
.lp-foot-contact{list-style:none;margin:0;padding:0;display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center;gap:0;font-size:13px;flex:0 0 auto;white-space:nowrap}
.lp-foot-contact li{display:flex;align-items:center;gap:7px;color:var(--ink-2);white-space:nowrap}
.lp-foot-contact li + li{margin-left:16px;padding-left:16px;border-left:1px solid var(--line)}
/* 图标：与品牌 logo 同一套渐变实心块 + 白色线性图形 */
.lp-foot-contact .ico{width:19px;height:19px;border-radius:6px;background:linear-gradient(135deg,var(--primary),var(--cyan));color:#fff;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;box-shadow:0 2px 6px rgba(47,107,255,.22)}
.lp-foot-contact .ico svg{width:11px;height:11px;display:block}
@media (max-width:1240px){
  /* 中等宽度：简介允许折行（仍三块并排），避免出现省略号 */
  .lp-foot-intro{white-space:normal;overflow:visible;text-overflow:clip;text-wrap:balance}
}
@media (max-width:880px){
  /* 窄屏：三块并排放不下，回退为「品牌 + 简介」在上、联系方式在下 */
  .lp-foot-inner{display:block}
  .lp-foot-brandtop{margin-bottom:12px}
  .lp-foot-intro{margin:0 0 12px;white-space:normal}
  .lp-foot-contact{flex-wrap:wrap;gap:6px 0}
  .lp-foot-contact li + li{margin-left:0;padding-left:0;border-left:0}
}
@media (max-width:560px){
  .lp-foot{padding-top:24px}
}

/* 登录页「了解云犀视界」角标入口 */
.home-link{position:absolute;top:18px;left:22px;font-size:13px;color:var(--primary);cursor:pointer;font-weight:600;opacity:.85;transition:opacity .15s ease}
.home-link:hover{opacity:1}

/* ============================================================
   排名报告 → 品牌可见度面板（rp-vis / pf-*）
   ============================================================ */
.rp-vis{display:flex;align-items:center;gap:26px;flex-wrap:wrap;background:linear-gradient(135deg,#ffffff,#f3f9ff);border:1px solid var(--line);border-radius:var(--radius);padding:22px 26px;margin-bottom:18px;box-shadow:0 6px 18px rgba(20,40,80,.05)}
.vis-left{display:flex;align-items:center;gap:18px}
.vis-ring{position:relative;width:96px;height:96px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;box-shadow:0 6px 16px rgba(22,194,194,.2)}
.vis-inner{position:absolute;inset:9px;background:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:26px;font-weight:800;color:var(--cyan)}
.vis-inner span{font-size:14px;font-weight:700;margin-left:1px}
.vis-title{font-size:18px;font-weight:800}
.vis-sub{font-size:13px;color:var(--ink-2);max-width:240px}
.vis-stats{display:flex;gap:14px;margin-left:auto;flex-wrap:wrap}
.vis-stats .vs{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 18px;text-align:center;min-width:84px}
.vis-stats .vs b{display:block;font-size:22px;font-weight:800;color:var(--primary)}
.vis-stats .vs span{font-size:12px;color:var(--ink-3)}

.rp-h3{font-size:16px;margin:6px 0 14px;font-weight:700}
.pf-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px;margin-bottom:18px}
.pf{background:#fff;border:1px solid var(--line);border-radius:12px;padding:16px;transition:transform .15s ease, box-shadow .2s ease}
.pf:hover{transform:translateY(-3px);box-shadow:0 10px 22px rgba(20,40,80,.08)}
.pf.top{border-color:#bfe9d6;background:linear-gradient(180deg,#f2fcf6,#ffffff)}
.pf.mid{border-color:#cfe6ff}
.pf.low{opacity:.85}
.pf-name{font-size:14px;font-weight:700;margin-bottom:6px}
.pf-rank{font-size:20px;font-weight:800;color:var(--primary)}
.pf.top .pf-rank{color:#0fae6e}
.pf-state{font-size:12px;color:var(--ink-3);margin-top:4px}

@media (max-width:880px){
  .lp-feature-grid,.lp-scenarios{grid-template-columns:1fr}
  .lp-hero h1{font-size:32px}
  .vis-stats{margin-left:0;width:100%}
}

/* ---------- 投稿 / 平台选择（recharge & submit） ---------- */
/* 工具栏：搜索 + 计数 + 全选/清空（平台较多时靠它快速定位） */
.plat-tool{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.plat-tool .plat-search{flex:1 1 200px;min-width:0;height:32px;padding:0 10px;border:1px solid var(--line);border-radius:8px;font-size:13px;background:#fff;color:var(--ink)}
.plat-tool .plat-search:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(47,107,255,.1)}
.plat-total{font-size:12px;color:var(--ink-3);white-space:nowrap}
.plat-total b{color:var(--ink);font-weight:700}
.plat-total .plat-picked{color:var(--primary)}
.plat-tool .btn{flex:0 0 auto;height:32px;padding:0 12px;font-size:12.5px}
/* 平台卡片：等宽网格（长名称单行省略），替代原先会被长名字撑破列宽的胶囊 */
.plat-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(178px,1fr));gap:8px;padding:0}
/* 平台卡片：用 .plat-list 前缀提升特异性——卡片是 <label>，否则会被 .form-row label{display:block} 覆盖掉 flex 布局 */
.plat-list .plat{box-sizing:border-box;display:flex;align-items:flex-start;gap:8px;min-width:0;margin:0;padding:8px 10px;border:1px solid var(--line);border-radius:10px;font-size:13px;font-weight:400;line-height:1.35;color:var(--ink);cursor:pointer;background:#fff;transition:border-color .15s ease,background .15s ease,box-shadow .15s ease;user-select:none;overflow:hidden}
.plat-list .plat:hover{border-color:var(--primary);background:#fbfcff}
.plat-list .plat.on{border-color:var(--primary);background:rgba(47,107,255,.08);box-shadow:inset 0 0 0 1px rgba(47,107,255,.3)}
.plat-list .plat input{display:none}
/* 自绘勾选框：15px 圆角方块，选中时填主色并画白色对勾 */
.plat-list .plat-box{position:relative;flex:0 0 auto;width:15px;height:15px;margin-top:2px;border:1.5px solid #cbd5e1;border-radius:5px;background:#fff;transition:all .15s ease}
.plat-list .plat.on .plat-box{border-color:var(--primary);background:var(--primary)}
.plat-list .plat.on .plat-box::after{content:'';position:absolute;left:4px;top:1px;width:5px;height:9px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}
/* 名称最多两行：尽量把带【…】后缀的完整平台名显示出来，超出才省略 */
.plat-list .plat-n{flex:1 1 0%;min-width:0;overflow:hidden;color:var(--ink);white-space:normal;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.plat-list .plat.on .plat-n{color:var(--primary);font-weight:600}
/* 平台单篇额度徽标（投稿箱：小红书 30 条 等） */
.plat-list .plat-c{flex:0 0 auto;align-self:center;font-style:normal;font-size:11px;line-height:1;padding:4px 7px;border-radius:999px;background:var(--primary-soft);color:var(--primary);font-weight:700;letter-spacing:.2px;white-space:nowrap}
.plat-list .plat-c.one{background:var(--surface-2);color:var(--ink-3);font-weight:500}
.plat-list .plat.on .plat-c{background:#fff;color:var(--primary)}
.plat-list .plat.on .plat-c.one{background:rgba(255,255,255,.72)}
.plat-empty{font-size:12.5px;color:var(--ink-3);padding:10px 2px}
.plat-empty a{color:var(--primary);text-decoration:none;margin-left:4px}
/* 卡片内表格：窄屏时不再把整页撑出横向滚动条（投稿页「我的投稿」等） */
.tbl-scroll{width:100%;overflow-x:auto}
.sub-tbl{table-layout:fixed}
.sub-tbl th:nth-child(1),.sub-tbl td:nth-child(1){width:46%}
.sub-tbl th:nth-child(2),.sub-tbl td:nth-child(2){width:22%}
.sub-tbl th:nth-child(3),.sub-tbl td:nth-child(3){width:18%}
.sub-tbl th:nth-child(4),.sub-tbl td:nth-child(4){width:14%}
.sub-tbl td > span{max-width:100%}
/* 额度合计条 */
.plat-sum{margin-top:10px;padding:9px 12px;border:1px dashed var(--line);border-radius:10px;background:var(--surface-2);font-size:12.5px;color:var(--ink-2);line-height:1.7}
.plat-sum--empty{font-size:12px;color:var(--ink-3)}
.ps-main{display:flex;flex-wrap:wrap;align-items:center;gap:7px}
.ps-i b{color:var(--ink);font-weight:700}
.ps-cost{color:var(--primary)!important;font-size:14px}
.ps-warn,.ps-warn b{color:var(--err)}
.ps-sep{color:var(--ink-3)}
.ps-detail{margin-top:3px;font-size:11.5px;color:var(--ink-3)}
/* 表格内「金额 + 单位」单行展示（避免 <b> 的 block 把单位挤到第二行） */
table.tbl td > span.amt{font-weight:700;color:var(--ink)}
/* 公开页左上角返回入口：做成胶囊更稳，不贴边 */
.home-link{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:999px;background:#fff;border:1px solid var(--line);box-shadow:0 2px 8px rgba(20,50,120,.06);transition:all .16s ease}
.home-link:hover{border-color:var(--primary);color:var(--primary);transform:translateX(-2px)}


/* ============ 排名采集工作台（RankMonitor） ============ */
/* 采集通道卡片：就绪=青绿边，缺密钥=灰底提示，一眼能看出哪个平台能跑 */
.rk-plats{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px}
.rk-plat{border:1px solid var(--line);border-radius:12px;padding:10px 12px;background:#fff}
.rk-plat.on{border-color:rgba(14,155,155,.45);background:rgba(14,155,155,.05)}
.rk-plat.off{background:var(--surface-2)}
.rk-plat-h{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:4px}
.rk-plat-m{font-size:12px;color:var(--ink-3);line-height:1.5;word-break:break-all}
.rk-plat-m.err{color:var(--err)}
.rk-calc{height:34px;display:flex;align-items:center;font-weight:800;color:var(--primary)}
.rk-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.plat.dis{opacity:.5;cursor:not-allowed}
.plat.dis:hover{border-color:var(--line)}

/* 试跑结果面板 */
.rk-probe{margin-top:14px;border:1px solid var(--line);border-radius:12px;padding:12px;background:var(--surface-2)}
.rk-probe-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.rk-probe-row{display:flex;gap:8px;font-size:13px;line-height:1.7;margin-bottom:4px;align-items:flex-start}
.rk-probe-row .lab{flex:0 0 44px;color:var(--ink-3)}
.rk-probe-err{color:var(--err);font-size:13px;line-height:1.6}
.rk-answer{margin:8px 0 0;padding:10px 12px;background:#fff;border:1px solid var(--line);border-radius:10px;
  font-size:12px;line-height:1.75;color:var(--ink-2);white-space:pre-wrap;word-break:break-word;max-height:280px;overflow:auto}

/* 进度条 */
.rk-progress{display:flex;flex-direction:column;gap:8px}
.rk-bar{height:10px;border-radius:999px;background:var(--surface-2);overflow:hidden}
.rk-bar > i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--primary),var(--cyan));transition:width .4s ease}
.rk-progress-meta{display:flex;align-items:center;gap:14px;flex-wrap:wrap;font-size:13px;color:var(--ink-3)}
.rk-progress-meta b{color:var(--ink);font-size:15px}
.rk-err{font-size:12px;color:var(--err);line-height:1.6;word-break:break-word}
.rk-head-actions{display:flex;gap:8px;flex-wrap:wrap}

/* 明细里的命中片段：单行省略，完整内容放 title */
.rk-snippet{display:block;max-width:420px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;color:var(--ink-2)}
.rk-backlink{display:block;font-size:11.5px;color:var(--cyan);max-width:420px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rank-badge.mention{background:rgba(245,158,11,.14);color:#b06a00;font-weight:700;min-width:46px}

/* 公开报告页脚注（数据截止时间） */
.rp-foot{text-align:center;font-size:12px;color:var(--ink-3);padding:14px 0 4px}

/* ============================================================
   排名采集工作台 2.0（RankMonitor · rk2-*）
   三段两栏：监测台(hero) → 主栏(配置/进度/矩阵/明细) + 侧栏(档案/计划/批次)
   设计口径：紧凑优先（12px 栅格、12–13px 字号），信息密度高但不拥挤
   ============================================================ */
.rk2{display:flex;flex-direction:column;gap:12px}

/* ---------- 顶部监测台 ---------- */
.rk2-hero{position:relative;overflow:hidden;display:flex;align-items:flex-start;justify-content:space-between;gap:20px;
  padding:15px 20px;border-radius:16px;color:#fff;
  background:linear-gradient(115deg,#17264a 0%,#1e3a6d 52%,#0d5468 100%);
  box-shadow:0 10px 28px rgba(23,38,74,.24)}
.rk2-hero::after{content:"";position:absolute;right:-70px;top:-90px;width:280px;height:280px;border-radius:50%;
  background:radial-gradient(circle,rgba(22,194,194,.32),transparent 62%);pointer-events:none}
.rk2-hero::before{content:"";position:absolute;left:-40px;bottom:-120px;width:240px;height:240px;border-radius:50%;
  background:radial-gradient(circle,rgba(47,107,255,.28),transparent 66%);pointer-events:none}
.rk2-hero-l{position:relative;z-index:1;min-width:0;flex:1 1 auto}
.rk2-eyebrow{display:flex;align-items:center;gap:7px;font-size:10.5px;letter-spacing:.14em;color:#8ea9d4;font-weight:700;margin-bottom:8px}
.rk2-eyebrow i{width:5px;height:5px;border-radius:50%;background:var(--cyan);box-shadow:0 0 0 3px rgba(22,194,194,.22)}
.rk2-brandrow{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.rk2-brand{height:38px;min-width:230px;max-width:100%;padding:0 34px 0 12px;border-radius:10px;font-size:15px;font-weight:700;color:#fff;
  background:rgba(255,255,255,.1) url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='M3 4.5L6 7.5L9 4.5' fill='none' stroke='%23cfe0ff' stroke-width='1.6' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat right 12px center;
  border:1px solid rgba(255,255,255,.2);outline:none;appearance:none;-webkit-appearance:none;transition:.15s}
.rk2-brand:hover{background-color:rgba(255,255,255,.15)}
.rk2-brand:focus{border-color:rgba(22,194,194,.7);box-shadow:0 0 0 3px rgba(22,194,194,.16)}
.rk2-brand option{color:var(--ink);background:#fff}
.rk2-ghost{height:32px;padding:0 12px;border-radius:9px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.22);
  color:#dbe7ff;font-size:12px;font-weight:600;transition:.15s;white-space:nowrap}
.rk2-ghost:hover{background:rgba(255,255,255,.18);color:#fff;border-color:rgba(255,255,255,.4)}

.rk2-targets{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin-top:9px;min-height:22px}
.rk2-tlab{font-size:11px;color:#8ea9d4;margin-right:1px;letter-spacing:.04em}
.rk2-tchip{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;border-radius:6px;font-size:11.5px;line-height:1.7;
  background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.16);color:#e3eeff;max-width:220px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rk2-tchip.base{background:linear-gradient(135deg,rgba(47,107,255,.9),rgba(22,194,194,.85));border-color:transparent;font-weight:700;color:#fff}
.rk2-tchip.base i{font-style:normal;font-size:9.5px;background:rgba(255,255,255,.24);border-radius:4px;padding:0 4px}
.rk2-tchip.dom{border-style:dashed;color:#9fe3e3;border-color:rgba(22,194,194,.5);background:rgba(22,194,194,.1)}
.rk2-ttip{font-size:11px;color:#8ea9d4}
.rk2-tadd{width:20px;height:20px;border-radius:6px;border:1px dashed rgba(255,255,255,.35);background:transparent;
  color:#cfe0ff;font-size:12px;line-height:1;display:inline-flex;align-items:center;justify-content:center;transition:.15s}
.rk2-tadd:hover{background:rgba(255,255,255,.18);border-color:#fff;color:#fff}

.rk2-kpis{position:relative;z-index:1;display:flex;gap:8px;flex:0 0 auto;flex-wrap:wrap}
.rk2-kpi{min-width:78px;padding:7px 12px;border-radius:11px;background:rgba(255,255,255,.08);
  border:1px solid rgba(255,255,255,.13);backdrop-filter:blur(4px)}
.rk2-kpi b{display:block;font-size:19px;font-weight:800;line-height:1.25;letter-spacing:-.3px;color:#fff;font-variant-numeric:tabular-nums}
.rk2-kpi b i{font-style:normal;font-size:11px;font-weight:600;color:#93a9cd;margin-left:1px}
.rk2-kpi span{display:block;font-size:10.5px;color:#93a9cd;margin-top:1px;white-space:nowrap}

/* ---------- 两栏骨架 ---------- */
.rk2-grid{display:grid;grid-template-columns:minmax(0,1fr) 322px;gap:12px;align-items:start}
.rk2-main{display:flex;flex-direction:column;gap:12px;min-width:0}
.rk2-side{display:flex;flex-direction:column;gap:12px;min-width:0}
@media (max-width:1180px){.rk2-grid{grid-template-columns:1fr}}

/* ---------- 卡片头 ---------- */
.rk2-card{padding:13px 15px}
.rk2-ch{display:flex;align-items:center;gap:8px;margin-bottom:11px;flex-wrap:wrap}
.rk2-ch h3{display:flex;align-items:center;gap:7px;font-size:13.5px;font-weight:700;color:var(--ink);margin:0}
.rk2-ch h3 > i{width:21px;height:21px;border-radius:7px;background:linear-gradient(135deg,var(--primary),var(--cyan));
  color:#fff;font-style:normal;font-size:10.5px;font-weight:800;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;
  box-shadow:0 3px 8px rgba(47,107,255,.28)}
.rk2-sub{font-size:11.5px;color:var(--ink-3)}
.rk2-est{margin-left:auto;font-size:11.5px;color:var(--ink-2);background:var(--surface-2);border:1px solid var(--line);
  border-radius:7px;padding:2px 9px;white-space:nowrap}
.rk2-est b{color:var(--primary);font-size:14px;font-weight:800}
.rk2-mut{font-size:11.5px;color:var(--ink-3)}
.rk2-link{border:none;background:transparent;color:var(--primary);font-size:11.5px;font-weight:600;padding:2px 4px;border-radius:5px;transition:.15s}
.rk2-link:hover{background:var(--primary-soft)}
.rk2-link.danger{color:var(--err)}
.rk2-link.danger:hover{background:var(--err-bg)}

/* ---------- 通道未就绪提示 ---------- */
.rk2-warn{display:flex;align-items:center;gap:11px;padding:9px 12px;margin-bottom:11px;border-radius:11px;
  background:#fffaf0;border:1px solid #f3ddae}
.rk2-warn-ico{width:20px;height:20px;border-radius:50%;background:var(--warn);color:#fff;font-weight:800;font-size:12px;
  display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}
.rk2-warn > div{flex:1 1 auto;min-width:0}
.rk2-warn b{font-size:12.5px;color:#8a5a18}
.rk2-warn p{font-size:11.5px;color:#a5762c;line-height:1.6;margin-top:1px}

/* ---------- 配置区 ---------- */
.rk2-body{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:14px}
@media (max-width:980px){.rk2-body{grid-template-columns:1fr}}
.rk2-sec{min-width:0}
.rk2-sec-h{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:5px}
.rk2-sec-h label{font-size:12px;font-weight:700;color:var(--ink-2)}
.rk2-tagbox{display:flex;flex-wrap:wrap;align-items:flex-start;gap:5px;min-height:38px;padding:5px 6px;
  border:1px solid var(--line);border-radius:10px;background:#fff;transition:.15s}
.rk2-tagbox:focus-within{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}
.rk2-tagbox.tall{min-height:64px;align-content:flex-start}
.rk2-kw{display:inline-flex;align-items:center;gap:4px;background:#eef4ff;color:#2b5fd6;border-radius:6px;
  padding:2px 7px;font-size:11.5px;line-height:1.7;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rk2-kw i{font-style:normal;color:#93a9cd;cursor:pointer;font-size:12px;line-height:1;padding:0 1px}
.rk2-kw i:hover{color:var(--err)}
.rk2-kw.base{background:linear-gradient(135deg,#2f6bff,#16c2c2);color:#fff;font-weight:700;gap:6px}
.rk2-kw.base em{font-style:normal;font-size:9.5px;font-weight:600;background:rgba(255,255,255,.22);border-radius:4px;padding:0 4px}
.rk2-tagin{flex:1 1 130px;min-width:120px;height:24px;border:none;outline:none;background:transparent;font-size:12.5px;color:var(--ink)}
.rk2-tagin::placeholder{color:var(--ink-3)}

.rk2-plats{display:grid;grid-template-columns:repeat(auto-fill,minmax(138px,1fr));gap:7px}
.rk2-plat{display:grid;grid-template-columns:auto 1fr;gap:2px 7px;align-items:center;text-align:left;
  padding:6px 9px;border:1px solid var(--line);border-radius:9px;background:#fff;transition:.15s;min-width:0}
.rk2-plat:hover:not(.dis){border-color:#b9cdf5;background:#f8fbff}
.rk2-dot{width:7px;height:7px;border-radius:50%;background:#c8d3e6;grid-column:1;grid-row:1}
.rk2-pname{grid-column:2;grid-row:1;font-size:12px;font-weight:700;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rk2-pmeta{grid-column:2;grid-row:2;font-size:10px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rk2-plat.on{border-color:var(--primary);background:linear-gradient(180deg,#f6f9ff,#edf4ff);box-shadow:0 2px 8px rgba(47,107,255,.12)}
.rk2-plat.on .rk2-dot{background:var(--ok);box-shadow:0 0 0 3px rgba(21,184,107,.14)}
.rk2-plat.on .rk2-pname{color:var(--primary-deep)}
.rk2-plat.dis{opacity:.6;cursor:not-allowed;background:#fafbfe}
.rk2-plat.dis .rk2-dot{background:var(--err);box-shadow:0 0 0 3px var(--err-bg)}

/* 底栏：轮次 + 操作 */
.rk2-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;
  margin-top:12px;padding-top:10px;border-top:1px dashed var(--line)}
.rk2-rounds{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.rk2-flab{font-size:11.5px;color:var(--ink-3);font-weight:600}
.rk2-rounds .seg-i{font-size:12px;padding:5px 12px}
.rk2-acts{display:flex;align-items:center;gap:8px;margin-left:auto}
.rk2-go{height:36px;padding:0 22px;font-size:13.5px;font-weight:800;letter-spacing:.02em}

/* 提问模板（折叠） */
.rk2-tpl{margin-top:9px}
.rk2-tplbtn{border:none;background:transparent;color:var(--ink-3);font-size:11.5px;font-weight:600;padding:0;transition:.15s}
.rk2-tplbtn:hover{color:var(--primary)}
.rk2-tplbody{margin-top:7px}
.rk2-tplbody input{width:100%;height:32px;border:1px solid var(--line);border-radius:8px;padding:0 10px;font-size:12.5px;outline:none}
.rk2-tplbody input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}

/* 试跑结果 */
.rk2-probe{margin-top:11px;border:1px solid var(--line);border-radius:11px;padding:10px 12px;background:var(--surface-2)}
.rk2-ph{display:flex;align-items:center;gap:9px;margin-bottom:7px}
.rk2-ph b{font-size:12.5px}
.rk2-ph .rk2-mut{margin-left:auto}
.rk2-x{border:none;background:transparent;color:var(--ink-3);font-size:14px;line-height:1;padding:2px 5px;border-radius:5px}
.rk2-x:hover{background:#eef2fa;color:var(--err)}
.rk2-prow{display:flex;align-items:center;gap:7px;font-size:12px;line-height:1.7;margin-bottom:4px;flex-wrap:wrap}
.rk2-prow .lab{flex:0 0 34px;color:var(--ink-3);font-size:11.5px}
.rk2-pq{color:var(--ink-2);flex:1 1 200px;min-width:0}
.rk2-perr{font-size:11.5px;color:var(--err);line-height:1.6;word-break:break-word}
.rk2-answer{margin:6px 0 0;padding:9px 11px;background:#fff;border:1px solid var(--line);border-radius:9px;
  font-size:11.5px;line-height:1.75;color:var(--ink-2);white-space:pre-wrap;word-break:break-word;max-height:240px;overflow:auto;
  font-family:ui-monospace,Menlo,Consolas,monospace}

/* ---------- 进度 ---------- */
.rk2-prog-top{display:flex;align-items:baseline;gap:10px;margin-bottom:6px;flex-wrap:wrap}
.rk2-prog-top b{font-size:24px;font-weight:800;letter-spacing:-.5px;line-height:1;
  background:linear-gradient(120deg,var(--primary),var(--cyan));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.rk2-prog-top b i{font-style:normal;font-size:12px;-webkit-text-fill-color:var(--ink-3)}
.rk2-prog-top span{font-size:12px;color:var(--ink-2);font-variant-numeric:tabular-nums}
.rk2-bar{height:8px;border-radius:999px;background:#e9eefa;overflow:hidden}
.rk2-bar > i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--primary),var(--cyan));transition:width .4s ease}

/* ---------- 矩阵 ---------- */
.rk2-legend{display:flex;align-items:center;gap:10px;margin-left:auto;font-size:10.5px;color:var(--ink-3);flex-wrap:wrap}
.rk2-legend span{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
.rk2-legend .d{width:8px;height:8px;border-radius:3px;display:inline-block}
.rk2-legend .d.top{background:#15b86b}
.rk2-legend .d.mid{background:#2f6bff}
.rk2-legend .d.low{background:#93a2bd}
.rk2-legend .d.mention{background:#f5a623}
.rk2-legend .d.miss{background:#dfe6f2}
.rk2-mx{overflow-x:auto;border:1px solid var(--line);border-radius:10px}
.rk2-mxt{width:100%;border-collapse:separate;border-spacing:0;font-size:12px}
.rk2-mxt th{background:linear-gradient(180deg,#f8fbff,#eff4fd);color:var(--ink-2);font-size:11px;font-weight:700;
  text-align:center;padding:7px 8px;border-bottom:1px solid #e3ebf8;white-space:nowrap}
.rk2-mxt th.kw,.rk2-mxt td.kw{text-align:left;min-width:170px;max-width:340px}
.rk2-mxt th.best,.rk2-mxt td.best{width:64px;text-align:center;background:#fbfcff;border-left:1px dashed var(--line)}
.rk2-mxt td{padding:6px 8px;border-bottom:1px solid #f0f4fb;vertical-align:middle;white-space:nowrap}
.rk2-mxt tbody tr:last-child td{border-bottom:none}
.rk2-mxt tbody tr:hover td{background:#f7faff}
.rk2-mxt td.kw{font-weight:600;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rk2-mxt td.best b{font-size:12.5px;color:var(--primary)}
.rk2-cell{display:inline-flex;align-items:center;justify-content:center;min-width:46px;padding:2px 8px;border-radius:7px;
  font-size:11.5px;font-weight:800;font-variant-numeric:tabular-nums}
.rk2-cell.top{background:linear-gradient(135deg,#15b86b,#3fd39a);color:#fff;box-shadow:0 2px 7px rgba(21,184,107,.28)}
.rk2-cell.mid{background:#e7efff;color:#1d4ed8}
.rk2-cell.low{background:#eef1f6;color:#6b7a96}
.rk2-cell.mention{background:#fef3e0;color:#b45309}
.rk2-cell.miss{background:#f6f8fc;color:#c2cbdc}

/* ---------- 明细列表 ---------- */
.rk2-list{display:flex;flex-direction:column}
.rk2-item{padding:8px 0;border-bottom:1px dashed var(--line)}
.rk2-item:first-child{padding-top:0}
.rk2-item:last-child{border-bottom:none;padding-bottom:0}
.rk2-irow{display:flex;align-items:center;gap:8px;min-width:0;flex-wrap:wrap}
.rk2-badge{display:inline-flex;align-items:center;justify-content:center;min-width:52px;padding:2px 8px;border-radius:7px;
  font-size:11px;font-weight:800;font-variant-numeric:tabular-nums;flex:0 0 auto}
.rk2-badge.top{background:linear-gradient(135deg,#15b86b,#3fd39a);color:#fff}
.rk2-badge.mid{background:#e7efff;color:#1d4ed8}
.rk2-badge.low{background:#eef1f6;color:#6b7a96}
.rk2-badge.mention{background:#fef3e0;color:#b45309}
.rk2-badge.miss{background:#f2f5fa;color:#9aa7c2}
.rk2-ikw{font-size:12.5px;color:var(--ink);font-weight:700;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:46%}
.rk2-iplat{font-size:11px;color:var(--primary-deep);background:var(--primary-soft);border-radius:5px;padding:1px 6px;flex:0 0 auto}
.rk2-idt{font-variant-numeric:tabular-nums}
/* 「看原文」推到行尾：时间紧跟在平台后面，避免时间孤零零漂在右侧 */
.rk2-irow .rk2-link{margin-left:auto;flex:0 0 auto}
.rk2-ibody{display:flex;align-items:baseline;gap:10px;margin:3px 0 0 60px;min-width:0;flex-wrap:wrap}
.rk2-snip{font-size:11.5px;color:var(--ink-2);flex:1 1 260px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rk2-bl{font-size:11px;color:var(--cyan);max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rk2-item .rk2-answer{margin-left:60px}
@media (max-width:760px){.rk2-ibody,.rk2-item .rk2-answer{margin-left:0}.rk2-ikw{max-width:100%}}

/* ---------- 空态 ---------- */
.rk2-empty{padding:26px 16px;text-align:center;border:1px dashed var(--line);border-radius:11px;background:#fbfcff}
.rk2-empty b{display:block;font-size:12.5px;color:var(--ink-2);margin-bottom:3px}
.rk2-empty p{font-size:11.5px;color:var(--ink-3);line-height:1.7;max-width:420px;margin:0 auto}
.rk2-empty.sm{padding:14px 10px;border:none;background:transparent}
.rk2-empty.sm b{font-size:12px}

/* ---------- 侧栏：档案 ---------- */
.rk2-dl{display:flex;flex-direction:column;gap:0;margin:0 0 9px}
.rk2-dl > div{display:flex;align-items:baseline;gap:8px;padding:5px 0;border-bottom:1px dashed #eef2fa}
.rk2-dl > div:last-child{border-bottom:none}
.rk2-dl dt{flex:0 0 60px;font-size:11px;color:var(--ink-3)}
.rk2-dl dd{flex:1 1 auto;min-width:0;font-size:11.5px;color:var(--ink);line-height:1.6;word-break:break-word;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.rk2-dl > div:last-child dd{color:var(--ink-2)}

/* ---------- 侧栏：计划 ---------- */
.rk2-plan{display:flex;align-items:center;gap:6px;margin-bottom:9px}
.rk2-plan select{flex:1 1 0;min-width:0;height:30px;border:1px solid var(--line);border-radius:8px;padding:0 8px;font-size:12px;
  background:#fff;color:var(--ink);outline:none}
.rk2-plan select:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}
.rk2-plan .btn.sm{flex:0 0 auto;height:30px}
.rk2-plist{display:flex;flex-direction:column}
.rk2-pitem{padding:7px 0;border-bottom:1px dashed var(--line)}
.rk2-pitem:last-child{border-bottom:none;padding-bottom:0}
.rk2-prow2{display:flex;align-items:baseline;justify-content:space-between;gap:8px;min-width:0}
.rk2-prow2 b{font-size:12px;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.rk2-prow2 + .rk2-prow2{margin-top:2px}
.rk2-pacts{display:flex;align-items:center;gap:2px;flex:0 0 auto}

/* ---------- 侧栏：历史批次 ---------- */
.rk2-rlist{display:flex;flex-direction:column;gap:3px}
.rk2-ritem{display:flex;align-items:center;gap:8px;width:100%;text-align:left;padding:6px 8px;border-radius:8px;
  border:1px solid transparent;background:transparent;transition:.13s;min-width:0}
.rk2-ritem:hover{background:var(--surface-2);border-color:var(--line)}
.rk2-ritem.on{background:var(--primary-soft);border-color:#cfe0ff}
.rk2-rno{flex:0 0 auto;font-size:10.5px;font-weight:800;color:var(--primary);background:#fff;border:1px solid #d8e5ff;
  border-radius:5px;padding:0 5px;font-variant-numeric:tabular-nums}
.rk2-ritem.on .rk2-rno{background:#fff}
.rk2-rmain{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:0}
.rk2-rmain b{font-size:12px;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
.rk2-rmain i{font-style:normal;font-size:10.5px;color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rk2-rhit{flex:0 0 auto;font-size:12px;font-weight:800;color:var(--ok);font-variant-numeric:tabular-nums}
.rk2-rhit i{font-style:normal;font-weight:600;color:var(--ink-3);font-size:10.5px}

/* ---------- 档案弹窗 ---------- */
.rk2-modal .m-b{padding:14px 18px;background:var(--bg)}
.rk2-fsec{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-bottom:11px;box-shadow:var(--shadow-sm)}
.rk2-fsec:last-child{margin-bottom:0}
.rk2-fh{display:flex;align-items:center;gap:8px;margin-bottom:9px;font-size:13px;font-weight:700;color:var(--ink)}
.rk2-fh > i{width:19px;height:19px;border-radius:6px;background:linear-gradient(135deg,var(--primary),var(--cyan));color:#fff;
  font-style:normal;font-size:10.5px;font-weight:800;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}
.rk2-fh span{font-weight:400;font-size:11.5px;color:var(--ink-3);margin-left:2px}
.rk2-frow{display:flex;align-items:center;gap:10px;margin-top:9px;flex-wrap:wrap}
.rk2-frow.col{flex-direction:column;align-items:stretch;gap:5px}
.rk2-frow > label{flex:0 0 62px;font-size:12px;color:var(--ink-2);font-weight:600}
.rk2-frow input,.rk2-frow textarea{flex:1 1 200px;min-width:0;border:1px solid var(--line);border-radius:8px;padding:7px 10px;
  font-size:12.5px;outline:none;background:#fff;color:var(--ink);font-family:inherit}
.rk2-frow input{height:32px}
.rk2-frow textarea{resize:vertical;line-height:1.6}
/* 纵向排列时 textarea 不参与 flex 拉伸：否则 flex-basis 会在高度方向撑到 200px+ */
.rk2-frow.col textarea{flex:0 0 auto;min-height:62px;max-height:150px;width:100%}
.rk2-frow input:focus,.rk2-frow textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}
.rk2-frow .seg-i{font-size:12px;padding:5px 13px}
.rk2-fhint{font-size:11px;color:var(--ink-3);line-height:1.7;margin-top:7px}

/* ============================================================
   平台外壳 v2（侧边栏 rail · 顶栏 topbar · 用户菜单）
   口径：深色导航 + 发光激活态 + 面包屑顶栏，层级更清晰、密度更紧凑
   ============================================================ */
.pop-mask{position:fixed;inset:0;z-index:19}
.rail{
  width:var(--rail-w);flex:0 0 var(--rail-w);padding:14px 11px 12px;
  background:linear-gradient(178deg,#182748 0%,#1e3059 46%,#1a2b4d 100%);
  border-right:1px solid rgba(255,255,255,.06);
  box-shadow:4px 0 24px rgba(15,23,42,.18);
}
.rail::before{content:"";position:absolute;left:0;right:0;top:0;height:190px;pointer-events:none;
  background:radial-gradient(120% 82% at 18% -12%,rgba(47,107,255,.22),transparent 70%)}
/* 品牌头 */
.rail-brand{position:relative;z-index:1;display:flex;align-items:center;gap:10px;padding:4px 8px 12px;margin-bottom:6px;
  border-bottom:1px solid rgba(255,255,255,.09)}
.rb-badge{width:31px;height:31px;border-radius:9px;flex:0 0 auto;background:linear-gradient(135deg,var(--primary),var(--cyan));
  color:#fff;font-weight:800;font-size:14.5px;display:flex;align-items:center;justify-content:center;
  box-shadow:0 5px 14px rgba(47,107,255,.45)}
.rb-txt{display:flex;flex-direction:column;min-width:0;line-height:1.35}
.rb-txt b{color:#fff;font-size:13px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rb-txt span{color:#7f92b5;font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* 导航项 */
.rail .nav{position:relative;z-index:1;gap:3px;padding-right:3px}
.rail .nav-item{padding:8px 9px;border-radius:10px;color:#b8c5dd;font-size:12px;gap:8px}
.rail .nav-item .ic{font-size:14px;line-height:1;width:17px;text-align:center}
.rail .nav-item .lbl{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis}
.rail .nav-item:hover{background:rgba(255,255,255,.07);color:#fff}
.rail .nav-item.active{background:linear-gradient(96deg,rgba(47,107,255,.96),rgba(47,107,255,.7));
  color:#fff;box-shadow:0 6px 16px rgba(47,107,255,.34)}
.rail .nav-item.active::before{background:var(--cyan);width:3px;height:18px;border-radius:0 3px 3px 0;left:-11px}
/* 分组 */
.rail .nav-group{position:relative;margin:0}
.rail .nav-group-head{padding:8px 9px;border-radius:10px;color:#b8c5dd;font-size:12px;gap:8px;border:1px solid transparent}
.rail .nav-group-head .ic{font-size:14px;width:17px;text-align:center}
.rail .nav-group-head .lbl{flex:1;min-width:0;font-weight:600}
.rail .nav-group-head .chev{font-size:13px;color:#7f92b5;transition:transform .18s}
.rail .nav-group-head .chev.open{transform:rotate(90deg)}
.rail .nav-group.open .nav-group-head{background:rgba(255,255,255,.05);border-color:rgba(255,255,255,.07)}
.rail .nav-group-body{position:relative;display:flex;flex-direction:column;gap:1px;margin:2px 0 4px;padding:2px 0 3px 20px}
.rail .nav-group-body::before{content:"";position:absolute;left:10px;top:2px;bottom:10px;width:1px;background:rgba(255,255,255,.1)}
.rail .nav-group-body .nav-item.sub{padding:5px 8px 5px 9px;font-size:11.5px;color:#a3b1cd;gap:7px;border-radius:8px}
.rail .nav-group-body .nav-item.sub .dot{position:absolute;left:-13px;top:50%;transform:translateY(-50%);
  width:5px;height:5px;border-radius:50%;background:#4f648c;transition:.15s}
.rail .nav-group-body .nav-item.sub:hover .dot{background:#8fa4c8}
.rail .nav-group-body .nav-item.sub.active{background:rgba(47,107,255,.24);color:#fff;box-shadow:none;font-weight:600}
.rail .nav-group-body .nav-item.sub.active::before{display:none}
.rail .nav-group-body .nav-item.sub.active .dot{background:var(--cyan);box-shadow:0 0 0 3px rgba(22,194,194,.22)}
/* 底部用户卡 */
.rail-foot{position:relative;z-index:1;flex:0 0 auto;padding-top:10px;margin-top:8px;border-top:1px solid rgba(255,255,255,.09)}
.rf-user{display:flex;align-items:center;gap:9px;padding:4px 8px;min-width:0}
.rf-user .av{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,var(--cyan),var(--primary));color:#fff;
  display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;flex:0 0 auto}
.rf-txt{display:flex;flex-direction:column;min-width:0;line-height:1.3}
.rf-txt b{color:#e8eefb;font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rf-txt span{color:#7f92b5;font-size:10.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rf-out{margin-top:8px;width:100%;height:32px;border-radius:9px;border:1px solid rgba(255,255,255,.14);
  background:rgba(255,255,255,.06);color:#c8d5ee;font-size:12px;font-weight:600;transition:.15s}
.rf-out:hover{background:rgba(240,80,110,.18);border-color:rgba(240,80,110,.45);color:#ffb9c6}
/* 顶栏 */
.topbar{height:var(--top-h);padding:0 24px;gap:14px;background:rgba(255,255,255,.88);backdrop-filter:saturate(160%) blur(8px);
  box-shadow:0 1px 0 var(--line),0 2px 12px rgba(31,42,68,.04)}
.tb-left{display:flex;align-items:center;gap:11px;min-width:0}
.tb-ico{width:38px;height:38px;border-radius:11px;flex:0 0 auto;display:flex;align-items:center;justify-content:center;font-size:19px;
  background:linear-gradient(135deg,#eef4ff,#e4f6f6);border:1px solid #dbe7fb;box-shadow:0 3px 10px rgba(47,107,255,.12)}
.tb-ttl{min-width:0;display:flex;flex-direction:column;line-height:1.32}
.tb-crumb{display:flex;align-items:center;gap:5px;font-size:11px;color:var(--ink-3)}
.tb-crumb i{font-style:normal;color:#c8d3e6}
.tb-crumb span.cur{color:var(--primary);font-weight:600}
.tb-name{font-size:15.5px;font-weight:700;color:var(--ink);letter-spacing:-.2px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tb-right{display:flex;align-items:center;gap:10px;flex:0 0 auto}
.tb-pill{display:inline-flex;align-items:center;gap:5px;height:30px;padding:0 12px;border-radius:20px;font-size:12px;font-weight:600;white-space:nowrap}
.tb-pill.role{background:var(--primary-soft);color:var(--primary-deep)}
.tb-pill.bal{background:linear-gradient(96deg,#e1f7f7,#eaf3ff);color:#0e9b9b;border:1px solid #cbe9e9}
.tb-pill.bal b{color:#0a7f7f;font-size:13px;font-weight:800;font-variant-numeric:tabular-nums}
.tb-imp{height:30px;padding:0 12px;border-radius:20px;border:1px solid #f3ddae;background:var(--warn-bg);color:#a5762c;font-size:12px;font-weight:700}
.tb-imp:hover{background:var(--warn);color:#fff;border-color:var(--warn)}
.tb-user{position:relative;display:flex;align-items:center;gap:8px;height:40px;padding:0 10px 0 4px;border-radius:11px;
  border:1px solid transparent;cursor:pointer;transition:.15s;user-select:none}
.tb-user:hover,.tb-user.open{background:var(--surface-2);border-color:var(--line)}
.tb-user .av{width:30px;height:30px;border-radius:50%;background:linear-gradient(135deg,var(--primary),var(--cyan));color:#fff;
  display:flex;align-items:center;justify-content:center;font-weight:700;font-size:12px;flex:0 0 auto}
.tb-user .nm{font-size:12.5px;font-weight:600;color:var(--ink-2);max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tb-user .caret{font-size:10px;color:var(--ink-3);transition:transform .18s}
.tb-user.open .caret{transform:rotate(180deg)}
.tb-menu{position:absolute;top:calc(100% + 8px);right:0;min-width:186px;background:#fff;border:1px solid var(--line);border-radius:13px;
  box-shadow:0 20px 46px rgba(15,23,42,.16);padding:6px;z-index:40;animation:pop .16s ease}
.tb-menu-h{padding:8px 10px;margin-bottom:4px;border-bottom:1px dashed var(--line);display:flex;flex-direction:column;line-height:1.35}
.tb-menu-h b{font-size:12.5px;color:var(--ink)}
.tb-menu-h span{font-size:11px;color:var(--ink-3)}
.tb-menu-i{display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:9px;font-size:12.5px;
  color:var(--ink-2);font-weight:600;cursor:pointer;transition:.13s}
.tb-menu-i i{font-style:normal;font-size:13px}
.tb-menu-i:hover{background:var(--primary-soft);color:var(--primary-deep)}
.tb-menu-i.danger:hover{background:var(--err-bg);color:var(--err)}
@media (max-width:1180px){.tb-pill.bal{display:none}}

/* ============================================================
   通用列表页 v2（ResourceView · rv-*）
   页面头 + 工具栏 + 表格 + 空态 + 加载条 + 分页 一体化升级
   ============================================================ */
.rv{display:flex;flex-direction:column;min-width:0}
/* 轻量说明条：页面标题已在顶栏展示，这里只保留必要的口径说明 */
.rv-note{display:flex;align-items:flex-start;gap:7px;margin-bottom:10px;padding:7px 12px;
  border:1px solid #e3ecfb;border-radius:10px;background:linear-gradient(180deg,#fbfdff,#f7faff);
  font-size:12px;color:var(--ink-2);line-height:1.65}
.rv-note i{display:inline-flex;align-items:center;justify-content:center;flex:none;width:15px;height:15px;border-radius:50%;
  background:var(--primary-soft);color:var(--primary);font-size:10.5px;font-weight:800;margin-top:2px;font-style:normal}
/* 工具栏微调 */
.rv .toolbar{border-radius:13px;padding:9px 11px;margin-bottom:12px}
/* 加载条 */
.tbl-load{position:relative;height:3px;overflow:hidden;background:#e9f0fb}
.tbl-load i{position:absolute;top:0;bottom:0;width:36%;border-radius:99px;
  background:linear-gradient(90deg,var(--primary),var(--cyan));animation:rvslide 1s ease-in-out infinite}
@keyframes rvslide{0%{left:-36%}100%{left:100%}}
/* 空态 */
.rv-empty{display:flex;flex-direction:column;align-items:center;gap:4px;padding:52px 20px}
.rv-empty i{font-style:normal;font-size:34px;margin-bottom:6px;opacity:.85}
.rv-empty b{font-size:13.5px;color:var(--ink-2);font-weight:700}
.rv-empty p{font-size:12px;color:var(--ink-3);margin:0}
/* 表头/行微调 */
table.tbl thead th{font-size:11px;letter-spacing:.5px;padding:9px 10px}
table.tbl td{padding:8px 10px}
/* 分页微调 */
.pager .pg{border-radius:9px;transition:.13s}
.pager .pg.active{box-shadow:0 4px 10px rgba(47,107,255,.32)}
.pager .info b{color:var(--ink-2)}

/* ============================================================
   仪表盘 v2（Overview / 企业 / 代理商 · ov-* / dsh-*）
   ============================================================ */
/* 概况：投喂平台今日额度看板（已发/上限/剩余 + 使用率条） */
.pq-card{margin-bottom:16px}
.pq-tbl td,.pq-tbl th{white-space:nowrap}
.pq-w{width:180px}
.pq-bar{height:7px;border-radius:5px;background:#eef1f6;overflow:hidden;min-width:80px}
.pq-bar span{display:block;height:100%;border-radius:5px;transition:width .3s}
.pq-bar .ok{background:linear-gradient(90deg,var(--primary),var(--cyan))}
.pq-bar .warn{background:linear-gradient(90deg,#f59e0b,#f97316)}
.pq-bar .bad{background:linear-gradient(90deg,#ef4444,#dc2626)}
.pq-bad{color:var(--err);font-weight:700}
.pq-warn{color:var(--warn);font-weight:700}
.pq-note{margin-top:12px;padding-top:12px;border-top:1px dashed var(--line);font-size:12px;color:var(--ink-3);line-height:1.75}
/* 额度表可点表头排序：默认跟随后台自定义顺序，点一次升序、再点降序、第三次恢复 */
.pq-tbl th.srt{cursor:pointer;user-select:none;transition:.15s}
.pq-tbl th.srt:hover{color:var(--primary);background:var(--primary-soft)}
.pq-tbl th.srt i{margin-left:5px;font-style:normal;font-size:10px;opacity:.45}
.pq-tbl th.srt.on{color:var(--primary)}
.pq-tbl th.srt.on i{opacity:1}
.pq-reset{color:var(--primary);font-weight:700;margin-left:4px;text-decoration:none}
.pq-reset:hover{text-decoration:underline}
@media (max-width:880px){.pq-w{width:120px}}
.ov-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(172px,1fr));gap:12px;margin-bottom:16px}
/* 回链失效告警条：概览页顶部，红色但克制（不抢 KPI 的视觉重心） */
.link-alert{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:var(--err-bg);border:1px solid rgba(240,80,110,.35);border-left:4px solid var(--err);border-radius:12px;padding:12px 14px;margin-bottom:16px}
.link-alert .la-ic{font-size:18px;line-height:1;color:var(--err)}
.link-alert .la-txt{flex:1 1 320px;min-width:0;font-size:13px;color:var(--ink);line-height:1.6}
.link-alert .la-txt b{color:var(--err)}
.link-alert .la-sub{color:var(--ink-2);margin-left:6px}
.link-alert .la-go{font-size:13px;font-weight:600;white-space:nowrap}
.link-alert .la-x{flex:none;width:26px;height:26px;border:none;background:transparent;border-radius:8px;color:var(--ink-3);font-size:14px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center}
.link-alert .la-x:hover{background:rgba(240,80,110,.12);color:var(--err)}
.ov-kpis.four{grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}
.ov-kpi{position:relative;overflow:hidden;background:var(--surface);border:1px solid var(--line);border-radius:14px;
  padding:14px 16px 13px;box-shadow:var(--shadow-sm);transition:.18s}
.ov-kpi:hover{transform:translateY(-2px);box-shadow:0 10px 24px rgba(31,42,68,.1);border-color:#d5e3ff}
.ov-kpi::after{content:"";position:absolute;right:-20px;top:-22px;width:76px;height:76px;border-radius:50%;
  background:var(--primary-soft);opacity:.55;pointer-events:none}
.ov-kpi .ic{position:relative;z-index:1;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;
  border-radius:10px;background:linear-gradient(135deg,#eef4ff,#e4f6f6);border:1px solid #dfe9fa;font-size:15px;margin-bottom:8px}
.ov-kpi-num{position:relative;z-index:1;font-size:26px;font-weight:800;color:var(--ink);letter-spacing:-.5px;line-height:1.2;
  font-variant-numeric:tabular-nums}
.ov-kpi-num .u{font-size:12.5px;font-weight:500;color:var(--ink-3);margin-left:4px;letter-spacing:0}
.ov-kpi-lab{position:relative;z-index:1;margin-top:3px;font-size:12px;color:var(--ink-3)}
.ov-kpi.cyan::after{background:#e1f7f7}
.ov-kpi.cyan .ic{background:linear-gradient(135deg,#e1f7f7,#eaf3ff);border-color:#cbeaea}
.ov-kpi.cyan .ov-kpi-num{color:#0e9b9b}
.ov-kpi.warn::after{background:var(--warn-bg)}
.ov-kpi.warn .ic{background:linear-gradient(135deg,#fef3e0,#fff6ea);border-color:#f6e4bd}
.ov-kpi.warn .ov-kpi-num{color:#c07b0a}
/* 订单状态堆叠条 */
.ov-stack{margin-top:2px}
.ov-stack-bar{display:flex;height:14px;border-radius:99px;overflow:hidden;background:#eef1f6;margin-bottom:12px}
.ov-stack-bar span{display:block;height:100%;min-width:2px;transition:width .4s ease}
.ov-stack-bar span.st-green{background:#15b86b}
.ov-stack-bar span.st-cyan{background:#16c2c2}
.ov-stack-bar span.st-orange{background:#f5a623}
.ov-stack-bar span.st-red{background:#f0506e}
.ov-stack-bar span.st-gray{background:#c4cede}
.ov-stack .legend b{color:var(--ink-2);font-variant-numeric:tabular-nums}
/* 门户欢迎横幅（企业/代理商概览） */
.dsh-hero{display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap;
  position:relative;overflow:hidden;border-radius:16px;padding:16px 20px;margin-bottom:10px;color:#fff;
  background:linear-gradient(112deg,#17264a 0%,#1e3a6d 55%,#0d5468 100%);box-shadow:0 10px 26px rgba(23,38,74,.22)}
.dsh-hero::after{content:"";position:absolute;right:-60px;top:-90px;width:240px;height:240px;border-radius:50%;
  background:radial-gradient(circle,rgba(22,194,194,.3),transparent 64%);pointer-events:none}
.dh-main{position:relative;z-index:1;display:flex;align-items:center;gap:12px;min-width:0}
.dh-av{width:46px;height:46px;border-radius:14px;flex:0 0 auto;display:flex;align-items:center;justify-content:center;
  font-size:19px;font-weight:800;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.24)}
.dh-txt{display:flex;flex-direction:column;line-height:1.4;min-width:0}
.dh-txt b{font-size:16.5px;font-weight:800;letter-spacing:-.2px}
.dh-txt span{font-size:12px;color:#9fb4d8}
.dh-side{position:relative;z-index:1;display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.dh-bal{display:flex;flex-direction:column;gap:2px;padding-right:16px;border-right:1px solid rgba(255,255,255,.16)}
.dh-bal .l{font-size:11px;color:#93a9cd}
.dh-bal .v{display:flex;align-items:baseline;gap:4px}
.dh-bal .v b{font-size:24px;font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:-.5px}
.dh-bal .v small{font-size:11.5px;color:#93a9cd}
.dh-bals{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.dh-bal.cyan .v b{color:#39e0e0}
.dh-bal.indigo .v b{color:#b9a7ff}
.dh-acts{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.dsh-note{font-size:12px;color:var(--ink-3);margin:-2px 0 16px;padding-left:2px}

/* 概览「近期发布」小表：平台 / 通道 / 回链 三列，任何一项都不许撑破卡片。
   左栏给得多一点（平台名普遍较长），回链按百分比定宽后截断省略，点击新窗口打开。 */
.dsh-cols{grid-template-columns:minmax(0,1.28fr) minmax(0,1fr)}
.dsh-tbl{table-layout:fixed}
.dsh-tbl th,.dsh-tbl td{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-left:8px;padding-right:8px}
.dsh-tbl th:first-child,.dsh-tbl td:first-child{padding-left:10px}
.dsh-tbl th:last-child,.dsh-tbl td:last-child{padding-right:10px}
.dsh-tbl .c-ch{width:122px}
.dsh-tbl .c-cu{width:84px}
.dsh-tbl .c-lk{width:43%}
/* 通道胶囊整体不许被裁（「GEO自动发布」六个字 + 圆点），宽度不够时宁可让平台列收窄 */
.dsh-tbl td .tag{max-width:none;overflow:visible;text-overflow:clip;vertical-align:middle}
.dsh-tbl .c-lk a.lnk{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  font-size:11.5px;line-height:1.5;font-variant-numeric:tabular-nums}

/* ============================================================
   紧急暂停面板（.ep-*：管理员一键暂停 / 单个放行）
   ============================================================ */
.ep-banner{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;
  border-radius:16px;padding:20px 24px;margin-bottom:14px;color:#fff;box-shadow:0 10px 26px rgba(23,38,74,.18)}
.ep-banner.off{background:linear-gradient(112deg,#17264a 0%,#1e3a6d 55%,#0d5468 100%)}
.ep-banner.on{background:linear-gradient(112deg,#7a1e2b 0%,#b02a3a 58%,#e0506a 100%)}
.ep-status{display:flex;align-items:center;gap:14px;min-width:0}
.ep-dot{width:14px;height:14px;border-radius:50%;background:#8fe9c7;box-shadow:0 0 0 5px rgba(143,233,199,.22);flex:0 0 auto}
.ep-banner.on .ep-dot{background:#ffd0d8;box-shadow:0 0 0 5px rgba(255,80,110,.28);animation:ep-pulse 1.4s ease-in-out infinite}
@keyframes ep-pulse{0%,100%{opacity:1}50%{opacity:.4}}
.ep-title{display:block;font-size:18px;font-weight:800;letter-spacing:-.2px}
.ep-sub{display:block;font-size:12.5px;color:rgba(255,255,255,.78);margin-top:2px}
.ep-stats{display:flex;align-items:center;gap:26px;flex-wrap:wrap;background:var(--surface);border:1px solid var(--line);
  border-radius:12px;padding:14px 20px;margin-bottom:16px;box-shadow:var(--shadow-sm)}
.ep-stat{display:flex;flex-direction:column;gap:2px}
.ep-stat b{font-size:22px;font-weight:800;color:var(--primary);font-variant-numeric:tabular-nums}
.ep-stat span{font-size:12px;color:var(--ink-3)}
.ep-stat.hint{font-size:12px;color:var(--ink-2);flex:1 1 280px;line-height:1.6}

/* ============================================================
   登录/注册 v2（.auth 分栏：左品牌叙事 + 右表单）
   ============================================================ */
.auth{position:relative;min-height:100vh;display:flex;align-items:stretch;
  background:linear-gradient(160deg,#f2f6fd 0%,#e9f2fc 55%,#e4f5f5 100%)}
.auth-panel{flex:1 1 46%;max-width:620px;display:flex;flex-direction:column;justify-content:center;gap:0;
  position:relative;overflow:hidden;padding:56px 58px;color:#fff;
  background:linear-gradient(152deg,#16264a 0%,#1d3567 52%,#0c5164 100%)}
.auth-panel::before{content:"";position:absolute;right:-120px;top:-140px;width:420px;height:420px;border-radius:50%;
  background:radial-gradient(circle,rgba(22,194,194,.3),transparent 64%);pointer-events:none}
.auth-panel::after{content:"";position:absolute;left:-100px;bottom:-160px;width:380px;height:380px;border-radius:50%;
  background:radial-gradient(circle,rgba(47,107,255,.32),transparent 66%);pointer-events:none}
.auth-brand{position:relative;z-index:1;display:flex;align-items:center;gap:11px;margin-bottom:34px}
.auth-brand .lg,.auth-m-brand .lg{width:42px;height:42px;border-radius:12px;object-fit:cover;
  background:linear-gradient(135deg,var(--primary),var(--cyan));color:#fff;font-weight:800;font-size:18px;
  display:flex;align-items:center;justify-content:center;box-shadow:0 6px 16px rgba(47,107,255,.4);overflow:hidden;flex:0 0 auto}
.auth-brand .lg img,.auth-m-brand .lg img{width:100%;height:100%;object-fit:cover}
.auth-brand b{font-size:16.5px;font-weight:800;letter-spacing:.2px}
.auth-slogan{position:relative;z-index:1;font-size:27px;font-weight:800;letter-spacing:-.4px;line-height:1.4;margin-bottom:26px}
.auth-feats{position:relative;z-index:1;display:flex;flex-direction:column;gap:16px;list-style:none;padding:0;margin:0}
.auth-feats li{display:flex;align-items:flex-start;gap:12px}
.auth-feats i{font-style:normal;flex:0 0 auto;width:34px;height:34px;border-radius:10px;display:flex;align-items:center;justify-content:center;
  font-size:15px;font-weight:800;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.2)}
.auth-feats b{display:block;font-size:13.5px;font-weight:700;margin-bottom:2px}
.auth-feats span{font-size:12px;color:#9fb4d8;line-height:1.6}
.auth-copy{position:relative;z-index:1;margin-top:36px;font-size:11.5px;color:#7f92b5}
.auth-form-wrap{flex:1 1 54%;display:flex;align-items:center;justify-content:center;padding:40px 24px}
.auth .box{width:430px;max-width:94vw;background:var(--surface);border-radius:20px;
  box-shadow:0 24px 70px rgba(31,42,68,.14);padding:34px 34px 26px;border:1px solid var(--line)}
.auth-m-brand{display:none;align-items:center;gap:9px;margin-bottom:14px}
.auth-m-brand b{font-size:14.5px;font-weight:800;color:var(--ink)}
.auth h1{font-size:22px;font-weight:800;letter-spacing:-.3px}
.auth .desc{color:var(--ink-3);font-size:13px;margin:6px 0 20px}
.auth .form-row{margin-bottom:13px}
.auth .form-row input{height:42px}
.auth .form-row.two{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.auth .btn.primary{width:100%;height:44px;justify-content:center;font-size:15px;margin-top:4px;border-radius:11px}
.auth .tip{margin-top:14px;font-size:11.5px;color:var(--ink-3);text-align:center;background:var(--surface-2);border-radius:9px;padding:9px 10px;line-height:1.6}
.auth .copy{margin-top:12px;text-align:center;font-size:12.5px}
.auth .copy.sm{margin-top:8px;font-size:11px;color:var(--ink-3)}
.auth .err{color:var(--err);font-size:12.5px;margin-bottom:10px;text-align:center;background:var(--err-bg);border-radius:8px;padding:7px}
@media (max-width:880px){
  .auth-panel{display:none}
  .auth-m-brand{display:flex}
  .auth{align-items:center;justify-content:center}
}
/* 深色面板上的返回链接对比度修正 */
.auth .home-link{z-index:5;color:#cfe0ff;background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.22)}
.auth .home-link:hover{background:rgba(255,255,255,.2);color:#fff;border-color:rgba(255,255,255,.45)}

/* 备案号（境内部署合规项） */
.lp-icp{font-size:11.5px;color:#9fb4d8;text-decoration:none;opacity:.85}
.lp-icp:hover{color:#cfe0ff;text-decoration:underline}
.auth-icp{display:block;margin-top:4px;font-size:11px;color:var(--ink-3);text-decoration:none}
.auth-icp:hover{color:var(--primary);text-decoration:underline}

/* ===== 内容精选（落地页板块） ===== */
.lp-picks{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin-top:30px}
@media(max-width:980px){.lp-picks{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){.lp-picks{grid-template-columns:1fr}}
.lp-pick{background:var(--surface);border:1px solid var(--line);border-radius:16px;overflow:hidden;cursor:pointer;
  transition:transform .22s ease,box-shadow .22s ease,border-color .22s ease;display:flex;flex-direction:column}
.lp-pick:hover{transform:translateY(-4px);box-shadow:0 18px 44px rgba(31,42,68,.12);border-color:rgba(47,107,255,.35)}
.lp-pick-cover{height:172px;background:linear-gradient(135deg,#2f6bff,#7b5cff);background-size:cover;background-position:center;
  display:flex;align-items:center;justify-content:center;position:relative}
.lp-pick-cover::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,255,255,0),rgba(0,0,0,.04))}
.lp-pick-emoji{font-size:46px;filter:drop-shadow(0 4px 10px rgba(0,0,0,.18));z-index:1}
.lp-pick-body{padding:16px 18px 18px;display:flex;flex-direction:column;flex:1}
.lp-pick-tag{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:9px}
.lp-pick-tag span{font-size:11px;color:var(--primary);background:rgba(47,107,255,.1);border-radius:20px;padding:2px 9px;font-weight:600}
.lp-pick-title{font-size:16px;font-weight:700;line-height:1.45;color:var(--ink);margin:0 0 8px;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.lp-pick-sum{font-size:13px;color:var(--ink-3);line-height:1.65;margin:0 0 14px;flex:1;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.lp-pick-foot{display:flex;align-items:center;justify-content:space-between;font-size:12px;color:var(--ink-3)}
.lp-pick-more{color:var(--primary);font-weight:600}
.lp-picks-empty{padding:40px;text-align:center;color:var(--ink-3);background:var(--surface-2);border-radius:14px;margin-top:24px}

/* ===== 内容精选详情页 ===== */
.lp-pick-detail{min-height:100vh;background:var(--bg)}
.lp-pd-nav{display:flex;align-items:center;justify-content:space-between;padding:18px 28px;border-bottom:1px solid var(--line);
  background:var(--surface);position:sticky;top:0;z-index:10}
.lp-pd-wrap{max-width:760px;margin:0 auto;padding:34px 22px 70px}
.lp-pd-crumb{font-size:13px;color:var(--ink-3);margin-bottom:14px}
.lp-pd-crumb a{color:var(--primary);cursor:pointer;text-decoration:none}
.lp-pd-title{font-size:30px;line-height:1.3;font-weight:800;color:var(--ink);margin:0 0 14px;letter-spacing:-.4px}
.lp-pd-meta{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:22px;padding-bottom:18px;border-bottom:1px solid var(--line)}
.lp-pd-date{font-size:13px;color:var(--ink-3)}
.lp-pd-tags{display:flex;gap:8px;flex-wrap:wrap}
.lp-pd-tags i{font-style:normal;font-size:12px;color:var(--primary);background:rgba(47,107,255,.1);border-radius:20px;padding:3px 11px;font-weight:600}
.lp-pd-cover{height:340px;border-radius:16px;background:linear-gradient(135deg,#2f6bff,#7b5cff);background-size:cover;background-position:center;margin-bottom:26px}
.lp-pd-content{font-size:16px;line-height:1.9;color:var(--ink)}
.lp-pd-content p{margin:0 0 18px}
.lp-pd-link{display:inline-block;margin-top:8px;color:var(--primary);font-weight:600;text-decoration:none;border:1px solid rgba(47,107,255,.3);padding:10px 18px;border-radius:10px}
.lp-pd-link:hover{background:rgba(47,107,255,.08)}
.lp-pd-foot{display:flex;gap:12px;margin-top:36px;padding-top:24px;border-top:1px solid var(--line)}
.lp-pick-detail .btn{font-size:14px;padding:10px 20px;border-radius:10px;cursor:pointer;border:1px solid transparent;transition:transform .12s ease, box-shadow .2s ease, background .2s ease;white-space:nowrap}
.lp-pick-detail .btn.primary{background:var(--primary);color:#fff;box-shadow:0 8px 20px rgba(47,107,255,.25)}
.lp-pick-detail .btn.primary:hover{transform:translateY(-2px);box-shadow:0 12px 26px rgba(47,107,255,.32)}
.lp-pick-detail .btn.light{background:#fff;color:var(--primary);border-color:var(--line)}
.lp-pick-detail .btn.light:hover{transform:translateY(-2px);box-shadow:0 8px 18px rgba(20,40,80,.08)}
.lp-pd-err{text-align:center;padding:60px 0}
.lp-pd-err h2{font-size:20px;color:var(--ink);margin-bottom:18px}

/* ============================================================
   云犀服务能力（ServiceCapabilities）· #/capabilities
   浅色高级 SaaS 风 + 深色数据带 + 蓝绿渐变 CTA
   ============================================================ */
.sc{color:var(--ink);font-size:15px;line-height:1.7;-webkit-font-smoothing:antialiased}
.sc .sc-in{max-width:1180px;margin:0 auto;padding:0 22px;position:relative}
.sc a{cursor:pointer}
.sc .btn{font-size:14px;padding:11px 22px;border-radius:11px;border:1px solid transparent;transition:transform .12s ease,box-shadow .2s ease,background .2s ease;display:inline-flex;align-items:center;gap:6px}
.sc .btn.primary{background:var(--primary);color:#fff;box-shadow:0 10px 24px rgba(47,107,255,.28)}
.sc .btn.primary:hover{transform:translateY(-2px);box-shadow:0 14px 30px rgba(47,107,255,.36)}
.sc .btn.light{background:#fff;color:var(--primary);border-color:var(--line)}
.sc .btn.light:hover{transform:translateY(-2px);box-shadow:0 10px 22px rgba(20,40,80,.1)}
.sc .btn.sm{padding:8px 16px;font-size:13px}

/* 导航 */
.sc-nav{position:sticky;top:0;z-index:30;background:rgba(238,243,251,.82);backdrop-filter:blur(12px);border-bottom:1px solid rgba(227,234,246,.75)}
.sc-nav-in{max-width:1180px;margin:0 auto;padding:14px 22px;display:flex;align-items:center;justify-content:space-between;gap:16px}
.sc-logo{display:flex;align-items:center;gap:10px;font-weight:800;font-size:18px;cursor:pointer}
.sc-logo .lg{width:34px;height:34px;border-radius:10px;background:linear-gradient(135deg,var(--primary),var(--cyan));color:#fff;display:flex;align-items:center;justify-content:center;font-size:17px;font-weight:800;box-shadow:0 6px 16px rgba(47,107,255,.34)}
.sc-links{display:flex;align-items:center;gap:22px;font-size:14px;color:var(--ink-2)}
.sc-links a{transition:color .15s}
.sc-links a:hover{color:var(--primary)}
.sc-links a.on{color:var(--primary);font-weight:700}

/* Hero */
.sc-hero{position:relative;overflow:hidden;padding:66px 0 56px;background:linear-gradient(180deg,#eaf1fc 0%,#f6faff 58%,#eef3fb 100%)}
.sc-blob{position:absolute;border-radius:50%;filter:blur(64px);opacity:.55;pointer-events:none;animation:sc-float 15s ease-in-out infinite}
.sc-blob.b1{width:440px;height:440px;background:#bcd4ff;top:-140px;left:-90px}
.sc-blob.b2{width:400px;height:400px;background:#b6f0ef;top:-70px;right:-70px;animation-delay:-5s}
.sc-blob.b3{width:320px;height:320px;background:#dcccff;bottom:-150px;left:42%;animation-delay:-9s}
@keyframes sc-float{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(22px,-26px) scale(1.08)}}
.sc-grid{position:absolute;inset:0;pointer-events:none;background-image:linear-gradient(rgba(47,107,255,.055) 1px,transparent 1px),linear-gradient(90deg,rgba(47,107,255,.055) 1px,transparent 1px);background-size:44px 44px;-webkit-mask-image:radial-gradient(ellipse at 50% 26%,#000 38%,transparent 76%);mask-image:radial-gradient(ellipse at 50% 26%,#000 38%,transparent 76%)}
.sc-hero-in{text-align:center}
.sc-kicker{display:inline-block;font-size:12.5px;font-weight:700;color:#0f9e9e;letter-spacing:1.5px;margin-bottom:10px}
.sc-kicker.light{color:rgba(255,255,255,.92)}
.sc-hero h1{font-size:50px;line-height:1.18;font-weight:800;letter-spacing:-1px;margin:12px 0 18px;color:var(--ink)}
.sc-hero h1 .hl{background:linear-gradient(120deg,var(--primary),var(--cyan));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.sc-hero-sub{max-width:726px;margin:0 auto;color:var(--ink-2);font-size:16px}
.sc-hero-actions{display:flex;gap:14px;justify-content:center;margin-top:26px;flex-wrap:wrap}
.sc-hero-stats{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;margin-top:36px}
.sc-hero-stats .hs{background:rgba(255,255,255,.72);border:1px solid var(--line);border-radius:14px;padding:14px 22px;min-width:126px;backdrop-filter:blur(6px);box-shadow:0 10px 26px rgba(20,40,80,.06);transition:transform .18s ease,box-shadow .2s ease}
.sc-hero-stats .hs:hover{transform:translateY(-4px);box-shadow:0 16px 32px rgba(20,40,80,.1)}
.sc-hero-stats .hs b{display:block;font-size:25px;font-weight:800;color:var(--primary);letter-spacing:-.5px}
.sc-hero-stats .hs span{font-size:12.5px;color:var(--ink-2)}
.sc-chips{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;margin-top:26px}
.sc-chips span{font-size:12.5px;color:var(--ink-2);background:#fff;border:1px solid var(--line);border-radius:999px;padding:5px 14px;transition:.15s}
.sc-chips span:hover{color:var(--primary);border-color:#cfe0ff;transform:translateY(-2px)}

/* 通用区块 */
.sc-sec{padding:66px 0}
.sc-sec.alt{background:linear-gradient(180deg,#f6f9fe,#eef3fb)}
.sc-head{text-align:center;max-width:780px;margin:0 auto 42px}
.sc-head h2{font-size:32px;font-weight:800;margin:0 0 12px;letter-spacing:-.6px}
.sc-head p{color:var(--ink-2);margin:0}
.sc-head.light h2{color:#fff}
.sc-head.light p{color:rgba(255,255,255,.72)}
.sc-head.light .sc-kicker{color:#7fe3e3}
#matrix,#data,#cases,#process,#why{scroll-margin-top:86px}

/* 服务矩阵 */
.sc-matrix{display:grid;grid-template-columns:302px 1fr;gap:22px;align-items:start}
.sc-tabs{display:flex;flex-direction:column;gap:10px}
.sc-tab{display:flex;align-items:center;gap:12px;text-align:left;background:#fff;border:1px solid var(--line);border-radius:14px;padding:13px 14px;cursor:pointer;transition:.18s ease;font:inherit;color:inherit}
.sc-tab:hover{border-color:#cfe0ff;transform:translateX(2px)}
.sc-tab.on{border-color:var(--primary);background:linear-gradient(180deg,#f5f9ff,#eef4ff);box-shadow:0 10px 26px rgba(47,107,255,.14)}
.sc-tab-ic{width:40px;height:40px;border-radius:11px;background:#eef4ff;color:var(--primary);display:flex;align-items:center;justify-content:center;flex:0 0 auto;transition:.18s}
.sc-tab-ic svg{width:22px;height:22px}
.sc-tab.on .sc-tab-ic{background:linear-gradient(135deg,var(--primary),var(--cyan));color:#fff}
.sc-tab-tx{display:flex;flex-direction:column;min-width:0}
.sc-tab-tx b{font-size:14.5px;color:var(--ink)}
.sc-tab-tx small{font-size:11.5px;color:var(--ink-3);margin-top:2px}
.sc-tab-chev{margin-left:auto;color:var(--ink-3);font-size:18px;line-height:1}
.sc-tab.on .sc-tab-chev{color:var(--primary)}
.sc-detail{background:#fff;border:1px solid var(--line);border-radius:18px;padding:28px 30px;box-shadow:var(--shadow);min-height:470px}
.sc-detail-top{display:flex;gap:14px;align-items:flex-start}
.sc-detail-ic{width:48px;height:48px;border-radius:13px;background:linear-gradient(135deg,var(--primary),var(--cyan));color:#fff;display:flex;align-items:center;justify-content:center;flex:0 0 auto;box-shadow:0 8px 18px rgba(47,107,255,.28)}
.sc-detail-ic svg{width:26px;height:26px}
.sc-detail-top h3{font-size:21px;margin:0 0 4px}
.sc-lead{color:var(--primary);font-weight:600;font-size:14.5px;margin:0}
.sc-desc{color:var(--ink-2);font-size:14.5px;margin:16px 0 0}
.sc-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:20px 0}
.sc-metric{background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:12px 8px;text-align:center}
.sc-metric b{display:block;font-size:18px;font-weight:800;color:var(--primary);letter-spacing:-.3px}
.sc-metric span{font-size:11.5px;color:var(--ink-3)}
.sc-points{list-style:none;display:flex;flex-direction:column;gap:10px;margin:6px 0 18px}
.sc-points li{position:relative;padding-left:22px;color:var(--ink-2);font-size:14px;line-height:1.75}
.sc-points li::before{content:"";position:absolute;left:0;top:8px;width:8px;height:8px;border-radius:50%;background:linear-gradient(135deg,var(--primary),var(--cyan))}
.sc-tagrow{display:flex;gap:12px;align-items:flex-start;padding-top:14px;border-top:1px dashed var(--line);margin-top:12px}
.sc-taglabel{flex:0 0 auto;font-size:12px;color:var(--ink-3);font-weight:700;padding-top:4px;width:64px}
.sc-taglist{display:flex;flex-wrap:wrap;gap:8px}
.sc-taglist span{font-size:12.5px;color:var(--ink-2);background:#f2f6ff;border:1px solid #e2ebfb;border-radius:8px;padding:4px 10px}
.sc-taglist.ind span{background:#eefaf6;border-color:#d3f0e5;color:#0f8a63}

/* 数据底座（深色） */
.sc-data{position:relative;overflow:hidden;background:linear-gradient(135deg,#0b1530 0%,#13224b 55%,#0e2b4d 100%);padding:74px 0;margin:24px 0}
.sc-data-blob{position:absolute;width:560px;height:560px;border-radius:50%;background:radial-gradient(circle,rgba(47,107,255,.42),transparent 62%);top:-200px;right:-140px;filter:blur(30px);pointer-events:none}
.sc-data-grid{position:relative;display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.sc-dnum{background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.12);border-radius:16px;padding:20px;text-align:center;transition:.2s ease}
.sc-dnum:hover{background:rgba(255,255,255,.09);transform:translateY(-4px);border-color:rgba(127,227,227,.4)}
.sc-dnum b{display:block;font-size:30px;font-weight:800;letter-spacing:-.5px;background:linear-gradient(120deg,#cfe0ff,#7fe3e3);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.sc-dnum span{font-size:13px;color:rgba(255,255,255,.72)}

/* 效果实证 */
.sc-cases{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.sc-case{background:#fff;border:1px solid var(--line);border-radius:16px;padding:24px;transition:.18s ease;position:relative;overflow:hidden}
.sc-case::after{content:"";position:absolute;right:-40px;top:-40px;width:120px;height:120px;border-radius:50%;background:radial-gradient(circle,rgba(47,107,255,.08),transparent 70%)}
.sc-case:hover{transform:translateY(-5px);box-shadow:0 18px 38px rgba(20,40,80,.1);border-color:#cfe0ff}
.sc-case-ind{display:inline-block;font-size:12px;font-weight:700;color:#0f9e9e;background:#e8fbfb;border-radius:8px;padding:3px 10px;margin-bottom:12px;position:relative}
.sc-case h3{font-size:16px;margin:0 0 14px;color:var(--ink-2);font-weight:600}
.sc-case-kpi{display:flex;align-items:baseline;gap:10px;margin-bottom:12px;flex-wrap:wrap;position:relative}
.sc-case-kpi .from{font-size:19px;font-weight:800;color:var(--ink-3)}
.sc-case-kpi .arrow{color:var(--ink-3)}
.sc-case-kpi .to{font-size:28px;font-weight:800;color:var(--primary);letter-spacing:-.5px}
.sc-case p{color:var(--ink-2);font-size:13.5px;margin:0;position:relative}

/* 四维依据 */
.sc-pillars{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.sc-pillar{background:#fff;border:1px solid var(--line);border-radius:16px;padding:24px 22px;transition:.18s ease}
.sc-pillar:hover{transform:translateY(-4px);box-shadow:0 16px 34px rgba(20,40,80,.08);border-color:#cfe0ff}
.sc-pillar-ic{width:46px;height:46px;border-radius:12px;background:#eef4ff;color:var(--primary);display:flex;align-items:center;justify-content:center;margin-bottom:14px}
.sc-pillar-ic svg{width:24px;height:24px}
.sc-pillar h3{font-size:16px;margin:0 0 8px}
.sc-pillar p{color:var(--ink-2);font-size:13.5px;margin:0}

/* 按线索计费 */
.sc-band{background:linear-gradient(120deg,#2f6bff 0%,#1b7fe0 48%,#16c2c2 100%);padding:60px 0;margin:12px 0}
.sc-band-in{display:grid;grid-template-columns:1.05fr .95fr;gap:44px;align-items:center}
.sc-band-left h2{font-size:31px;color:#fff;margin:6px 0 12px;letter-spacing:-.6px;line-height:1.28}
.sc-band-left h2 span{color:#eafcff}
.sc-band-sub{color:rgba(255,255,255,.88);font-size:14.5px;margin:0}
.sc-band-list{list-style:none;display:flex;flex-direction:column;gap:12px}
.sc-band-list li{display:flex;align-items:center;gap:12px;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.24);border-radius:12px;padding:13px 16px;color:#fff;font-size:14.5px;backdrop-filter:blur(4px)}
.sc-band-list i{width:22px;height:22px;border-radius:50%;background:#fff;color:var(--primary);display:flex;align-items:center;justify-content:center;font-style:normal;font-weight:800;font-size:13px;flex:0 0 auto}

/* 交付流程 */
.sc-flow{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:28px}
.sc-flow-step{position:relative;background:#fff;border:1px solid var(--line);border-radius:16px;padding:22px;transition:.18s ease}
.sc-flow-step:hover{transform:translateY(-4px);box-shadow:0 14px 30px rgba(20,40,80,.08);border-color:#cfe0ff}
.sc-flow-no{width:38px;height:38px;border-radius:11px;background:linear-gradient(135deg,var(--primary),var(--cyan));color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;margin-bottom:12px}
.sc-flow-step h4{margin:0 0 6px;font-size:15.5px}
.sc-flow-step p{margin:0;color:var(--ink-2);font-size:13px}
.sc-flow-arrow{position:absolute;right:-12px;top:50%;transform:translateY(-50%);color:var(--ink-3);font-size:18px;z-index:2}
.sc-ind-wrap{display:flex;gap:16px;align-items:flex-start;background:#fff;border:1px solid var(--line);border-radius:16px;padding:20px 22px}
.sc-ind-label{flex:0 0 auto;font-size:13px;font-weight:700;color:var(--ink-3);padding-top:5px}
.sc-ind-list{display:flex;flex-wrap:wrap;gap:8px}
.sc-ind-list span{font-size:12.5px;color:var(--ink-2);background:var(--surface-2);border:1px solid var(--line);border-radius:999px;padding:5px 13px;transition:.15s}
.sc-ind-list span:hover{background:#eef4ff;color:var(--primary);border-color:#cfe0ff}

/* CTA / 页脚 */
.sc-cta{padding:20px 0 44px}
.sc-cta .sc-in{text-align:center;background:linear-gradient(135deg,#eef4ff,#e6fbfb);border-radius:26px;padding:58px 24px}
.sc-cta h2{font-size:28px;font-weight:800;margin:0 0 10px;letter-spacing:-.5px}
.sc-cta p{color:var(--ink-2);margin:0 0 24px}
.sc-foot{border-top:1px solid var(--line);padding:26px 0;margin-top:10px}
.sc-foot-in{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.sc-foot-copy{color:var(--ink-3);font-size:13px}

/* 滚动进场 + 标签切换过渡 */
.sc-reveal{opacity:0;transform:translateY(26px);transition:opacity .7s cubic-bezier(.2,.7,.2,1),transform .7s cubic-bezier(.2,.7,.2,1)}
.sc-reveal.in{opacity:1;transform:none}
.sc-data-grid .sc-dnum:nth-child(2),.sc-cases .sc-case:nth-child(2),.sc-pillars .sc-pillar:nth-child(2),.sc-flow .sc-flow-step:nth-child(2){transition-delay:.07s}
.sc-data-grid .sc-dnum:nth-child(3),.sc-cases .sc-case:nth-child(3),.sc-pillars .sc-pillar:nth-child(3),.sc-flow .sc-flow-step:nth-child(3){transition-delay:.14s}
.sc-data-grid .sc-dnum:nth-child(4),.sc-pillars .sc-pillar:nth-child(4),.sc-flow .sc-flow-step:nth-child(4){transition-delay:.21s}
.sc-data-grid .sc-dnum:nth-child(5),.sc-data-grid .sc-dnum:nth-child(6),.sc-data-grid .sc-dnum:nth-child(7),.sc-data-grid .sc-dnum:nth-child(8){transition-delay:.07s}
.scfade-enter-active,.scfade-leave-active{transition:opacity .28s ease,transform .28s ease}
.scfade-enter-from{opacity:0;transform:translateY(10px)}
.scfade-leave-to{opacity:0;transform:translateY(-6px)}

/* 落地页「查看服务能力」按钮容器 */
.lp-feature-cta{text-align:center;margin-top:30px}

@media (max-width:980px){
  .sc-hero h1{font-size:38px}
  .sc-matrix{grid-template-columns:1fr}
  .sc-tabs{flex-direction:row;overflow-x:auto;padding-bottom:6px;scrollbar-width:thin}
  .sc-tab{min-width:228px}
  .sc-detail{min-height:0}
  .sc-data-grid{grid-template-columns:repeat(2,1fr)}
  .sc-pillars{grid-template-columns:repeat(2,1fr)}
  .sc-cases{grid-template-columns:1fr}
  .sc-band-in{grid-template-columns:1fr;gap:24px}
  .sc-flow{grid-template-columns:repeat(2,1fr)}
  .sc-flow-arrow{display:none}
  .sc-metrics{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:600px){
  .sc-hero{padding:46px 0 40px}
  .sc-hero h1{font-size:29px;letter-spacing:-.5px}
  .sc-head h2{font-size:23px}
  .sc-links{display:none}
  .sc-band-left h2{font-size:23px}
  .sc-detail{padding:20px}
  .sc-ind-wrap{flex-direction:column;gap:10px}
  .sc-hero-stats .hs{min-width:calc(50% - 7px);padding:12px}
}


/* ============ 生成任务 · 批量换媒体弹窗（bm-*） ============ */
.bm-modal .modal-b{padding-top:14px}
.bm-load{font-size:12.5px;color:var(--ink-3);padding:22px 0;text-align:center}
.bm-modes{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:10px}
.bm-mode{border:1px solid var(--line);border-radius:11px;padding:10px 12px;cursor:pointer;background:#fff;transition:.15s;position:relative}
.bm-mode:hover{border-color:#b9cdf5;background:#f9fbff}
.bm-mode.on{border-color:var(--primary);background:var(--primary-soft);box-shadow:0 0 0 3px rgba(47,107,255,.08)}
.bm-mode b{display:block;font-size:13px;color:var(--ink);margin-bottom:2px}
.bm-mode.on b{color:var(--primary-deep)}
.bm-mode span{display:block;font-size:11.5px;color:var(--ink-3);line-height:1.5}
.bm-mode.on span{color:var(--ink-2)}
.bm-cur{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:11px;padding:8px 10px;border-radius:10px;background:var(--surface-2);border:1px dashed var(--line)}
.bm-cur-t{font-size:11.5px;font-weight:700;color:var(--ink-2);margin-right:2px}
.bm-chip{font-size:11.5px;padding:1px 8px;border-radius:20px;background:#fff;border:1px solid var(--line);color:var(--ink-2);line-height:1.7}
.bm-chip--sm{border-color:#dbe6ff;background:#f4f8ff}
.bm-chip--web{border-color:#cdeedb;background:#f1fbf6;color:#15803d}
.bm-chip--none{color:var(--ink-3);border-style:dashed}
.bm-sched{margin-top:2px}
.bm-radio{display:flex;align-items:center;gap:7px;font-size:12.5px;color:var(--ink-2);padding:3px 0;cursor:pointer}
.bm-radio input{width:auto}
.bm-dim{color:var(--ink-3);font-size:11.5px;font-weight:400}
.bm-sched-fields{display:flex;flex-wrap:wrap;gap:14px;margin:6px 0 0 20px;transition:.15s}
.bm-sched-fields.off{opacity:.45}
.bm-sched-fields label{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-2)}
.bm-sched-fields input{height:30px !important;padding:0 8px !important;font-size:12px;border-radius:8px;border:1px solid var(--line);background:#fff;color:var(--ink)}
.bm-sched-fields input[type=number]{width:66px}
.bm-regen{display:flex;align-items:flex-start;gap:8px;margin-top:14px;padding:10px 12px;border:1px solid #cfe0ff;background:#f5f9ff;border-radius:11px;cursor:pointer}
.bm-regen input{width:auto;margin-top:3px;flex:0 0 auto}
.bm-regen span{font-size:12.5px;color:var(--primary-deep);font-weight:600;line-height:1.5}
.bm-regen i{display:block;font-style:normal;font-weight:400;font-size:11.5px;color:var(--ink-3);margin-top:2px}
.bm-note{margin-top:12px;font-size:11.5px;color:var(--ink-3);line-height:1.6;padding:8px 10px;border-left:3px solid var(--line);background:#fafcff;border-radius:0 8px 8px 0}
.bm-note b{color:var(--ink-2)}
.bm-err{color:var(--err);font-size:12px;align-self:center}
.bm-tip{font-size:12px;color:var(--ink-3);align-self:center}

/* 内容发布 · 批量换平台：平台可能几十个，列表内部滚动，别把弹窗撑出屏幕 */
.bp-search{margin:2px 0 8px}
.bp-search input{height:32px;font-size:12.5px}
.bp-list{max-height:290px;overflow-y:auto;overflow-x:hidden;padding-right:2px}
.bp-list .mk-plat{max-width:100%}
.bp-list .mk-plat .mk-plat-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* 投喂平台「站点探测」控件：识别 WordPress/Discuz 并选择版块 */
.probe-box{display:flex;flex-direction:column;gap:8px;align-items:flex-start}
.probe-box .btn{white-space:nowrap}
.probe-note{font-size:12.5px;line-height:1.6;color:#475569;background:#f6f8fc;border:1px solid #e3e8f2;border-radius:8px;padding:8px 10px;word-break:break-all;width:100%;box-sizing:border-box}
.probe-list{display:flex;gap:8px;align-items:center;width:100%;box-sizing:border-box}
.probe-list select{flex:1;min-width:0;height:32px;border:1px solid #dbe2ef;border-radius:8px;padding:0 8px;font-size:13px;background:#fff;color:#1e293b}
.probe-list .btn{flex:0 0 auto;height:32px}

/* ===== 本地模型（文章模型 / 图片模型）：样板库 + 批量生成 ===== */
/* 全部以 lm- 前缀，独立命名空间，不改动任何既有模块样式 */
.lm-wrap{display:flex;flex-direction:column;gap:14px}
.lm-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}
.lm-top h3{font-size:16px;font-weight:700;color:var(--ink-1)}
.lm-top p{font-size:12.5px;color:var(--ink-3);margin-top:4px;line-height:1.6}
.lm-top-actions{display:flex;gap:8px;flex-wrap:wrap}
.lm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}
.lm-card{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:14px;display:flex;flex-direction:column;gap:10px;transition:.15s}
.lm-card:hover{border-color:#bfd0f5;box-shadow:0 6px 18px rgba(15,35,95,.06)}
.lm-card-h{display:flex;align-items:center;justify-content:space-between;gap:8px}
.lm-card-h b{font-size:14px;color:var(--ink-1);line-height:1.4}
.lm-tag{flex:0 0 auto;font-size:11px;padding:2px 7px;border-radius:6px;background:var(--primary-soft);color:var(--primary);font-weight:700}
.lm-meta{display:flex;gap:10px;flex-wrap:wrap;font-size:11.5px;color:var(--ink-3)}
.lm-vars{display:flex;gap:5px;flex-wrap:wrap}
.lm-vars span{font-size:11px;padding:2px 6px;border-radius:5px;background:#f1f5fb;color:#5b6b86;border:1px solid #e4ebf7}
.lm-card-f{display:flex;gap:6px;margin-top:auto;flex-wrap:wrap}
.lm-editor .modal-b{max-height:74vh;overflow:auto}
.lm-sec{border:1px solid var(--line);border-radius:10px;padding:12px;margin-bottom:12px;background:#fcfdff}
.lm-sec-h{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px}
.lm-sec-h b{font-size:13px;color:var(--ink-1)}
.lm-sec-h .sub{font-size:11.5px;color:var(--ink-3);font-weight:400}
.lm-pages{display:flex;flex-direction:column;gap:10px}
.lm-page{border:1px solid #e4ebf7;border-radius:10px;padding:10px;background:#fff}
.lm-page-h{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.lm-page-no{width:22px;height:22px;border-radius:50%;background:var(--primary-soft);color:var(--primary);font-size:11.5px;font-weight:800;display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.lm-page-h select{height:28px;border:1px solid var(--line);border-radius:7px;font-size:12px;padding:0 6px;background:#fff;color:var(--ink-1)}
.lm-page-sp{flex:1}
.lm-ibtn{width:26px;height:26px;border:1px solid var(--line);background:#fff;border-radius:7px;cursor:pointer;color:var(--ink-2);font-size:12px;line-height:1}
.lm-ibtn:hover{border-color:var(--primary);color:var(--primary)}
.lm-ibtn.danger:hover{border-color:var(--err);color:var(--err)}
.lm-page input,.lm-page textarea{width:100%;border:1px solid var(--line);border-radius:8px;padding:7px 9px;font-size:13px;outline:none;background:#fff}
.lm-page input{height:34px;margin-bottom:7px}
.lm-page textarea{min-height:84px;resize:vertical;line-height:1.7}
.lm-page input:focus,.lm-page textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}
/* 图片模型 · 成套（一份 TXT 文案 + 一组图片，一起添加/修改）*/
.lm-modetabs{display:inline-flex;background:#f1f5fb;border:1px solid #e4ebf7;border-radius:8px;padding:2px;gap:2px}
.lm-mtab{border:0;background:transparent;color:#5b6b86;font-size:12px;font-weight:600;padding:5px 10px;border-radius:6px;cursor:pointer;line-height:1.2;white-space:nowrap}
.lm-mtab:hover{color:var(--primary)}
.lm-mtab.on{background:#fff;color:var(--primary);box-shadow:0 1px 3px rgba(15,35,95,.10)}
.lm-set{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}
.lm-setcol{min-width:0;display:flex;flex-direction:column}
.lm-setlabel{display:flex;align-items:baseline;gap:6px;font-size:12.5px;font-weight:700;color:var(--ink-1);margin-bottom:6px}
.lm-setlabel .lm-sub{font-weight:400}
.lm-settxt{width:100%;min-height:300px;border:1px solid var(--line);border-radius:9px;padding:10px 12px;font-size:12.5px;line-height:1.8;outline:none;background:#fff;font-family:ui-monospace,Consolas,monospace;resize:vertical}
.lm-settxt:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}
.lm-imgs{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:8px;max-height:320px;overflow:auto;padding:2px}
.lm-img{position:relative;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:#f7f9fd}
.lm-img .ph{position:relative}
.lm-img img{width:100%;aspect-ratio:3/4;object-fit:cover;display:block}
.lm-img .no{position:absolute;left:5px;top:5px;background:rgba(15,23,42,.66);color:#fff;font-size:10.5px;padding:0 6px;border-radius:5px;line-height:16px}
.lm-img .ops{position:absolute;left:0;right:0;bottom:0;display:flex;gap:2px;padding:3px;background:rgba(15,23,42,.62);opacity:0;transition:.12s}
.lm-img:hover .ops{opacity:1}
.lm-img .ops button{flex:1;height:20px;border:0;border-radius:4px;background:rgba(255,255,255,.92);color:#1e293b;font-size:10.5px;cursor:pointer;padding:0}
.lm-img .ops button.danger{background:#fee2e2;color:#b42318}
/* 图片变量：缩略图下的「设为变量」输入；设了就高亮 + 右上角挂「可换」角标 */
.lm-imgvar{width:100%;height:26px;border:0;border-top:1px solid var(--line);background:#fff;padding:0 6px;font-size:11px;color:var(--ink-1);outline:none;display:block}
.lm-imgvar::placeholder{color:#9aa8c2}
.lm-imgvar:focus{background:#f4f8ff;box-shadow:inset 0 0 0 1px var(--primary)}
.lm-img.isvar{border-color:var(--primary);box-shadow:0 0 0 2px var(--primary-soft)}
.lm-img.isvar .lm-imgvar{background:#f4f8ff;font-weight:700;color:var(--primary)}
.lm-img.isvar::after{content:'可换';position:absolute;right:5px;top:5px;background:var(--primary);color:#fff;font-size:10px;line-height:16px;padding:0 5px;border-radius:5px;z-index:2}
.lm-imgvarlist{display:flex;flex-direction:column;gap:5px;margin-top:8px}
.lm-imgvar-i{display:flex;align-items:center;gap:8px}
.lm-imgdrop{border:1px dashed #cfdcf8;border-radius:9px;padding:26px 12px;text-align:center;color:var(--ink-3);font-size:12px;background:#fbfcff;line-height:1.7}
/* 图片卡：标注图上文字区域 */
.lm-regbadge{position:absolute;left:5px;top:26px;background:rgba(47,107,255,.92);color:#fff;font-size:10px;line-height:16px;padding:0 5px;border-radius:5px;z-index:2}
.lm-regbtn{display:block;width:100%;height:26px;border:0;border-top:1px solid var(--line);background:#fff;color:var(--ink-2);font-size:11px;cursor:pointer;padding:0 6px}
.lm-regbtn:hover{background:#f4f8ff;color:var(--primary)}
.lm-regbtn.has{background:#eef4ff;color:var(--primary);font-weight:700}

/* 标注弹窗：左图右属性 */
.lm-regmodal{width:min(940px,96vw);max-width:96vw}
.lm-regbody{display:flex;gap:18px;align-items:flex-start;min-height:0}
.lm-regleft{flex:1 1 auto;min-width:0;text-align:center}
/* 右侧属性独立滚动：内容比图高很多，跟随整体滚动会让「本图区域」列表被底栏压住 */
.lm-regright{flex:0 0 300px;width:300px;border-left:1px solid var(--line);padding-left:16px;
  text-align:left;max-height:62vh;overflow:auto;padding-right:6px}
.lm-regstage{position:relative;display:inline-block;max-width:100%;line-height:0;cursor:crosshair;
  border:1px solid var(--line);border-radius:8px;overflow:hidden;background:#f7f9fd;user-select:none}
.lm-regstage img{display:block;width:auto;max-width:100%;max-height:62vh;margin:0 auto;pointer-events:none}
.lm-regbox{position:absolute;border:1px dashed rgba(47,107,255,.85);cursor:move;overflow:hidden}
.lm-regbox.on{border-style:solid;border-color:#2f6bff;box-shadow:0 0 0 2px rgba(47,107,255,.3);z-index:2}
.lm-regtext{position:absolute;inset:0;display:flex;overflow:hidden;white-space:pre-wrap;word-break:break-word}
.lm-regtext>span{max-width:100%;display:block}
.lm-regtag{position:absolute;left:0;top:0;max-width:100%;background:rgba(47,107,255,.92);color:#fff;
  font-size:10px;line-height:15px;padding:0 5px;border-radius:0 0 4px 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lm-regsize{position:absolute;right:-1px;bottom:-1px;width:12px;height:12px;background:#2f6bff;
  border:2px solid #fff;border-radius:3px;cursor:nwse-resize;z-index:3}
.lm-regghost{position:absolute;border:1px dashed #2f6bff;background:rgba(47,107,255,.14);pointer-events:none}
.lm-regtip{margin-top:8px;font-size:11.5px;color:var(--ink-3);line-height:1.8;text-align:left}

.lm-regright .form-row{margin-bottom:10px}
.lm-regright .form-row label{font-size:11.5px;margin-bottom:4px}
.lm-regrow{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.lm-regrow input[type=range]{flex:1;min-width:90px}
.lm-regval{font-size:11px;color:var(--ink-3);white-space:nowrap;font-variant-numeric:tabular-nums}
.lm-regcolor{width:34px;height:26px;padding:0;border:1px solid var(--line);border-radius:6px;background:#fff;cursor:pointer}
.lm-swatch{width:18px;height:18px;border-radius:50%;border:1px solid rgba(15,23,42,.18);cursor:pointer;padding:0}
.lm-chk{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;color:var(--ink-2);cursor:pointer}
.lm-chk input[type=checkbox]{width:14px;height:14px;min-width:14px;border-radius:4px}
.lm-segs{display:flex;gap:4px}
.lm-segs button{flex:1;height:26px;border:1px solid var(--line);background:#fff;border-radius:6px;
  font-size:11.5px;color:var(--ink-2);cursor:pointer;padding:0 6px}
.lm-segs button.on{background:var(--primary-soft);border-color:var(--primary);color:var(--primary);font-weight:700}
.lm-reglist{display:flex;flex-direction:column;gap:5px}
.lm-regitem{display:flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:7px;
  padding:5px 8px;font-size:12px;cursor:pointer;background:#fff}
.lm-regitem.on{border-color:var(--primary);background:#f4f8ff}
.lm-regitem b{color:var(--ink-1);font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:110px}
.lm-regitem .sub{color:var(--ink-3);font-size:11px;margin-left:auto}
.lm-regitem .lm-ibtn{flex:0 0 auto}
@media (max-width:820px){
  .lm-regbody{flex-direction:column}
  .lm-regright{flex:1 1 auto;width:100%;border-left:0;border-top:1px solid var(--line);padding-left:0;padding-top:12px}
}
.lm-pvtxt{background:#f8fafd;border:1px solid #eef2f9;border-radius:8px;padding:12px 14px;font-size:12.5px;line-height:1.85;color:#1e293b;white-space:pre-wrap;max-height:240px;overflow:auto}
.lm-pvset{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:8px;margin-top:12px}
.lm-pvthumb{position:relative;border:1px solid var(--line);border-radius:8px;overflow:hidden;display:block;background:#f7f9fd}
.lm-pvthumb img{width:100%;aspect-ratio:3/4;object-fit:cover;display:block}
.lm-pvthumb .lm-pvno{position:absolute;left:5px;top:5px;background:rgba(15,23,42,.62);color:#fff;font-size:10.5px;padding:0 6px;border-radius:5px;z-index:2}
/* 预览缩略图上叠加的「文字区域」，与标注弹窗同一套坐标（百分比） */
.lm-pvregs{position:absolute;inset:0;overflow:hidden;pointer-events:none}
.lm-pvreg{position:absolute}
.lm-pvthumb em.lm-pvv{position:absolute;left:0;right:0;bottom:0;background:rgba(37,99,235,.9);color:#fff;font-size:10.5px;font-style:normal;text-align:center;line-height:18px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 4px;z-index:2}
@media (max-width:900px){.lm-set{grid-template-columns:minmax(0,1fr)}}
.lm-empty{padding:40px 16px;text-align:center;color:var(--ink-3);font-size:13px;line-height:1.9}
.lm-vartbl{width:100%;border-collapse:collapse;font-size:12.5px}
.lm-vartbl th{text-align:left;font-weight:600;color:var(--ink-3);font-size:11.5px;padding:4px 8px;border-bottom:1px solid var(--line)}
.lm-vartbl td{padding:5px 8px;border-bottom:1px dashed #eef2f9}
.lm-vartbl td:first-child{font-weight:700;color:var(--ink-1);white-space:nowrap}
.lm-vartbl input{width:100%;height:30px;border:1px solid var(--line);border-radius:7px;padding:0 8px;font-size:12.5px;outline:none}
.lm-preview{background:#f7f9fd;border:1px solid #e6ecf8;border-radius:10px;padding:14px;max-height:420px;overflow:auto;font-size:13.5px;line-height:1.85;color:#1e293b}
.lm-preview h2,.lm-preview h3{margin:14px 0 8px;color:#0f172a}
.lm-preview p{margin:0 0 10px}
.lm-preview ul{padding-left:20px;margin:0 0 10px}
.lm-preview img{max-width:100%}
.lm-pvpages{display:flex;flex-direction:column;gap:10px}
.lm-pvpage{background:#fff;border:1px solid #e6ecf8;border-radius:9px;padding:10px 12px}
.lm-pvpage .k{font-size:11px;color:var(--primary);font-weight:700;margin-bottom:4px}
.lm-pvpage .t{font-size:15px;font-weight:800;color:#0f172a;margin-bottom:6px}
.lm-pvpage .b{font-size:12.5px;color:#334155;line-height:1.75;white-space:pre-wrap}
.lm-recordtbl{width:100%;border-collapse:collapse;font-size:12.5px}
.lm-recordtbl th{background:#f7f9fd;color:var(--ink-2);font-weight:600;font-size:11.5px;padding:7px 8px;border:1px solid #e6ecf8;text-align:left;white-space:nowrap}
.lm-recordtbl td{border:1px solid #e6ecf8;padding:4px 6px;vertical-align:top}
.lm-recordtbl input{width:100%;min-width:110px;height:30px;border:1px solid transparent;border-radius:6px;padding:0 6px;font-size:12.5px;outline:none;background:#fff}
.lm-recordtbl input:focus{border-color:var(--primary);box-shadow:0 0 0 2px var(--primary-soft)}
.lm-recordtbl .rowno{color:var(--ink-3);font-size:11.5px;text-align:center;width:38px}
/* 图片变量列：小缩略图 + 上传/换图 + 清除 */
.lm-cellimg{display:flex;align-items:center;gap:5px;min-width:120px;padding:1px 0}
.lm-cellimg-p{width:32px;height:32px;object-fit:cover;border-radius:6px;border:1px solid var(--line);background:#f7f9fd;flex:none}
.lm-cellimg-b{height:28px;padding:0 8px;font-size:11.5px;white-space:nowrap}
.lm-thtag{display:inline-block;margin-left:4px;background:var(--primary-soft);color:var(--primary);font-size:10px;font-weight:700;line-height:15px;padding:0 5px;border-radius:4px;vertical-align:1px}
.lm-out{border:1px solid var(--line);border-radius:10px;padding:12px;background:#fff;display:flex;flex-direction:column;gap:8px}
.lm-out-h{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.lm-out-h b{font-size:13.5px;color:var(--ink-1);line-height:1.5}
.lm-out-body{font-size:12.5px;color:#475569;line-height:1.75;max-height:150px;overflow:auto;white-space:pre-wrap;background:#f8fafd;border-radius:8px;padding:9px 11px}
.lm-shots{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px}
.lm-shot{border:1px solid #e6ecf8;border-radius:8px;overflow:hidden;background:#f7f9fd;display:block}
.lm-shot img{width:100%;display:block}
.lm-sub{font-size:12px;color:var(--ink-3);line-height:1.6}
.lm-toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.lm-toolbar select{height:34px;border:1px solid var(--line);border-radius:8px;padding:0 9px;font-size:13px;background:#fff;color:var(--ink-1);min-width:200px;max-width:320px}
.lm-toolbar input{height:34px;border:1px solid var(--line);border-radius:8px;padding:0 10px;font-size:13px;background:#fff;min-width:180px}
.lm-busy{font-size:12.5px;color:var(--primary);display:flex;align-items:center;gap:6px}
.lm-spin{width:12px;height:12px;border:2px solid var(--primary-soft);border-top-color:var(--primary);border-radius:50%;animation:lmspin .8s linear infinite}
@keyframes lmspin{to{transform:rotate(360deg)}}
.lm-hist{display:flex;flex-direction:column;gap:8px;max-height:300px;overflow:auto}
.lm-hist-row{display:flex;align-items:center;gap:10px;font-size:12.5px;padding:7px 9px;border:1px solid #eef2f9;border-radius:8px}
.lm-hist-row .g{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink-1)}
.lm-hist-row .d{color:var(--ink-3);font-size:11.5px;flex:0 0 auto}
/* 本地模型 · 发布（文章→投喂平台 / 图片→自媒体）*/
.lm-pubtags{display:flex;flex-wrap:wrap;gap:5px;margin-top:-2px}
.lm-pubtag{font-size:11px;padding:2px 7px;border-radius:6px;border:1px solid #e4ebf7;background:#f7f9fd;color:#5b6b86;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.lm-pubtag.s-published{background:#ecfdf3;border-color:#bbf0d2;color:#0b7a48}
.lm-pubtag.s-failed{background:#fef2f2;border-color:#fbd5d5;color:#b42318}
.lm-pubtag.s-running{background:var(--primary-soft);border-color:#cfdcf8;color:var(--primary)}
.lm-pubhead{font-size:13.5px;font-weight:700;color:var(--ink-1);line-height:1.5;word-break:break-all}
/* 批量选择：勾选框 + 选中态（本次产出卡片与历史行共用） */
.lm-ck{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--ink-3);cursor:pointer;flex:0 0 auto;margin:0}
.lm-ck input{width:14px;height:14px;margin:0;cursor:pointer;accent-color:var(--primary)}
.lm-out-hr{display:inline-flex;align-items:center;gap:8px;flex:0 0 auto}
.lm-out.picked{border-color:var(--primary);box-shadow:0 0 0 2px var(--primary-soft)}
.lm-hist-row.picked{border-color:var(--primary);background:var(--primary-soft)}
.lm-pubsel{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px;max-height:92px;overflow:auto}
.lm-pubsel-i{font-size:11px;padding:2px 7px;border-radius:6px;background:#f1f5fb;border:1px solid #e4ebf7;color:#5b6b86;max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lm-job-o{flex:0 0 auto;font-size:11px;color:var(--primary);font-weight:700}
/* 本地模型产出表：与后台列表同一套 table.tbl 视觉，点击行看预览 */
.lm-otbl{table-layout:fixed;min-width:1024px}
.lm-otbl tbody tr{cursor:pointer}
.lm-otbl tbody tr.picked td{background:var(--primary-soft)}
.lm-otbl td.lm-ttcell{white-space:normal;padding-top:7px;padding-bottom:7px}
.lm-otbl .lm-ttline{display:flex;align-items:center;gap:8px;min-width:0}
.lm-otbl .lm-ttl{font-weight:600;color:var(--ink);font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}
.lm-otbl .lm-tsub{color:var(--ink-3);font-size:11px;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lm-otbl .lm-mini{width:30px;height:40px;object-fit:cover;border-radius:5px;border:1px solid var(--line);flex:0 0 auto;background:#f7f9fd}
.lm-otbl .lm-tags{display:flex;gap:4px;flex-wrap:wrap;max-height:46px;overflow:hidden}
.lm-otbl .lm-tags .tag{font-size:11px;padding:2px 7px;max-width:96px;overflow:hidden;text-overflow:ellipsis;display:inline-flex}
.lm-otbl .lnk{color:var(--primary);text-decoration:none;font-size:11.5px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lm-otbl .lnk:hover{text-decoration:underline}
.lm-otbl .muted{color:var(--ink-3);font-size:11.5px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lm-otbl td.col-act{background:var(--surface)}
.lm-otbl tbody tr:nth-child(even) td.col-act{background:#fcfdff}
.lm-otbl tbody tr:hover td.col-act{background:#eff5ff}
/* 产出预览弹窗 */
.lm-pvtitle{max-width:76%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lm-pvmeta{display:flex;gap:14px;flex-wrap:wrap;font-size:11.5px;color:var(--ink-3);margin-bottom:8px}
.lm-pvbody{max-height:62vh;overflow:auto;border:1px solid var(--line);border-radius:10px;padding:18px 22px;background:#fff}
.lm-pvshots{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}
.lm-pvshot{position:relative;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#f7f9fd;display:block}
.lm-pvshot img{width:100%;display:block}
.lm-pvshot span{position:absolute;left:8px;top:8px;background:rgba(15,23,42,.62);color:#fff;font-size:11px;padding:1px 7px;border-radius:6px}
.lm-pvcopy{white-space:pre-wrap;font-size:12.5px;color:var(--ink-2);line-height:1.8;background:#f8fafd;border:1px solid #eef2f9;border-radius:8px;padding:12px 14px;margin-top:12px;max-height:220px;overflow:auto}
.lm-picklist{display:flex;flex-direction:column;gap:6px;max-height:280px;overflow:auto;padding-right:2px}
.lm-pick{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid #e6ecf8;border-radius:9px;background:#fff;font-size:12.5px;cursor:pointer;transition:.12s}
.lm-pick:hover{border-color:#bfd0f5}
.lm-pick.on{border-color:var(--primary);background:var(--primary-soft)}
.lm-pick.off{background:#fafbfe;color:#9aa7bd;cursor:not-allowed}
.lm-pick input{flex:0 0 auto;width:14px;height:14px;accent-color:var(--primary)}
.lm-pick .nm{font-weight:600;color:inherit;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:46%}
.lm-pick .tg{flex:0 0 auto;font-size:10.5px;padding:1px 6px;border-radius:5px;background:#eef3fc;color:#4a5f85;border:1px solid #e0e9f8}
.lm-pick.off .tg{background:#f1f3f7;color:#8b98ad;border-color:#e8ecf3}
.lm-pick .quota{flex:0 0 auto;font-size:11px;color:var(--ink-3)}
/* 企业黄页「所属企业」选择行：跟在被勾选的平台卡片下面 */
.lm-ypco{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:-2px 0 0 22px;padding:6px 10px;border:1px dashed #c9d6f2;border-radius:8px;background:#f6f9ff;font-size:12px}
.lm-ypco .lm-ypco-lb{font-weight:600;color:#3c5480;white-space:nowrap}
.lm-ypco .lm-ypco-lb b{color:#e11d48;margin-left:2px}
.lm-ypco select{min-width:220px;max-width:100%;padding:4px 8px;border:1px solid #cdd9ef;border-radius:7px;background:#fff;font-size:12px;color:#22314f}
.lm-pick .why{flex:1;min-width:0;font-size:11px;color:#b42318;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lm-joblist{display:flex;flex-direction:column;gap:6px;margin-top:14px;border-top:1px dashed #e6ecf8;padding-top:12px}
.lm-job{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--ink-2)}
.lm-job b{font-weight:600;color:var(--ink-1);flex:0 0 auto;max-width:44%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lm-job .msg{flex:1;min-width:0;color:var(--ink-3);font-size:11.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lm-job a{flex:0 0 auto;color:var(--primary);font-size:11.5px;text-decoration:none}
.lm-job a:hover{text-decoration:underline}
.lm-dot{width:7px;height:7px;border-radius:50%;background:#c3cddd;flex:0 0 auto}
.lm-dot.s-published{background:#12b76a}
.lm-dot.s-failed{background:#f04438}
.lm-dot.s-running{background:var(--primary);animation:lmpulse 1.2s ease-in-out infinite}
@keyframes lmpulse{0%,100%{opacity:.35}50%{opacity:1}}

/* ---------- 客户 · API 接入（企业/代理门户） ---------- */
.api-cols{align-items:start}
.api-row{display:flex;align-items:center;gap:8px;margin:8px 0;min-width:0}
.api-l{flex:0 0 68px;font-size:12.5px;color:var(--ink-2);font-weight:600}
.api-code{
  flex:1 1 auto;min-width:0;overflow-wrap:anywhere;font-family:"JetBrains Mono",Consolas,Menlo,monospace;
  font-size:12.5px;background:var(--surface-2);border:1px solid var(--line);border-radius:8px;
  padding:5px 9px;color:var(--ink);line-height:1.5;
}
.api-secret{flex:1 1 auto;font-size:12.5px;color:var(--ink-3)}
.api-cb{
  flex:1 1 auto;min-width:0;height:32px;border:1px solid var(--line);border-radius:8px;
  padding:0 10px;background:#fff;font-size:12.5px;
}
.api-cb:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}
.api-meta{font-size:12px;color:var(--ink-3);margin-top:10px;padding-top:9px;border-top:1px dashed var(--line)}
.api-warn{margin-top:8px;font-size:12.5px;background:var(--warn-bg);color:#8a5a00;border-radius:8px;padding:7px 10px}
.api-empty{text-align:center;padding:38px 20px}
.api-empty-ic{font-size:34px;line-height:1;margin-bottom:10px}
.api-empty h3{font-size:16px;margin-bottom:8px}
.api-empty p{color:var(--ink-2);font-size:13px;margin-bottom:8px}
.api-empty-id{color:var(--ink)!important}
.api-empty-id .api-code{display:inline-block;flex:0 0 auto;margin-left:4px}
.api-steps{margin:2px 0 12px 18px;font-size:12.8px;color:var(--ink-2);line-height:1.9}
.api-steps li{margin-bottom:2px}
.api-steps .api-code{display:inline-block;flex:0 0 auto;max-width:100%}
.api-tabs{display:flex;align-items:center;gap:6px;margin:4px 0 8px}
.api-tab{
  border:1px solid var(--line);background:#fff;color:var(--ink-2);border-radius:8px;
  padding:4px 11px;font-size:12.5px;font-weight:600;
}
.api-tab.on{background:var(--primary-soft);border-color:#c9d9ff;color:var(--primary-deep)}
.api-copybtn{margin-left:auto}
.api-blk{
  background:#0f1c33;color:#d7e3ff;border-radius:10px;padding:12px 13px;font-size:12px;line-height:1.75;
  font-family:"JetBrains Mono",Consolas,Menlo,monospace;overflow-x:auto;white-space:pre-wrap;word-break:break-word;
}
.api-note{font-size:12.3px;color:var(--ink-2);line-height:1.85;margin-top:10px;padding:9px 11px;background:var(--surface-2);border-radius:9px}
.api-note .api-code{display:inline;padding:1px 5px;flex:0 0 auto;background:#fff}
.api-once{font-size:12.5px;line-height:1.8;background:var(--warn-bg);color:#8a5a00;border-radius:9px;padding:9px 11px;margin-bottom:12px}
.api-faq .card-h{margin-bottom:6px}
.api-q{font-size:12.4px;color:var(--ink-2);line-height:1.8;padding:7px 0;border-top:1px dashed var(--line)}
.api-q:first-of-type{border-top:none;padding-top:2px}
.api-q b{color:var(--ink);margin-right:4px}

/* 资金类动作（删帖退款）弹窗里的「退款依据」卡片：把币种/条数/扣费流水/退后余额摊开，避免看不见金额就点确认 */
.act-pre{margin:2px 0 12px;padding:10px 12px;border-radius:10px;background:var(--surface-2);border:1px solid var(--line);display:flex;flex-direction:column;gap:3px;font-size:12px;line-height:1.65}
.act-pre b{color:var(--ink);font-size:12px;font-weight:600}
.act-pre span{color:var(--ink-2)}
.act-pre .act-pre-sub{color:var(--ink-3);font-size:11px}
.act-pre.bad{border-color:var(--err);background:var(--err-bg)}
.act-pre.bad b{color:var(--err)}

/* 死链告警条里的「待退款」提示与直达入口：钱没退出去之前一直挂在概览页 */
.link-alert .la-txt b.la-pend{color:var(--warn)}
.link-alert .la-go.la-pay{color:var(--warn)}
.link-alert .la-go.la-pay:hover{text-decoration:underline}

/* ---------- 投稿页 · 客户自建 AI 写稿面板 ---------- */
.ai-box{margin:0 0 14px;border:1px solid var(--line);border-radius:12px;background:var(--surface-2);overflow:hidden}
.ai-head{display:flex;align-items:center;gap:8px;padding:9px 12px;cursor:pointer;user-select:none}
.ai-head:hover{background:var(--primary-soft)}
.ai-t{flex:none;font-size:13.5px;font-weight:700;color:var(--ink)}
.ai-sub{flex:1 1 0%;min-width:0;font-size:12px;color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ai-sub.warn{color:var(--warn)}
.ai-arrow{flex:none;font-size:16px;line-height:1;color:var(--ink-3);transition:transform .18s}
.ai-arrow.on{transform:rotate(90deg)}
.ai-box.on{background:var(--surface)}
.ai-body{padding:10px 12px 11px;border-top:1px dashed var(--line)}
/* 面板内表单：字号与正文表单完全一致（label 12.5 / 控件 13 / hint 11.5），只把行距与高度收紧一档，
   让整块比正文表单更紧凑，一行能多放两个字段 */
.ai-body .form-grid{gap:9px 16px}
.ai-body .form-row label{margin-bottom:4px}
.ai-body .form-row input,.ai-body .form-row select{height:33px;padding:6px 10px}
.ai-body .form-row textarea{min-height:62px;padding:6px 10px}
.ai-body .form-row textarea.ai-kw-ta{min-height:68px}
.ai-body .form-row .hint{margin-top:2px;line-height:1.45}
.ai-body .ai-pv{margin-top:4px}
/* 「可选」小标：和必填星号同一视觉层级，但不抢眼 */
.ai-body .form-row label .opt{margin-left:5px;padding:0 5px;border:1px solid var(--line);border-radius:5px;background:var(--surface-2);font-size:10.5px;font-weight:500;line-height:1.5;color:var(--ink-3);vertical-align:1px}
.ai-body .ai-actions{margin-top:7px}
/* 面板底部的整段说明：之前没定字号，继承了 body 的 14px，比全站 hint(11.5) 明显大一圈 */
.ai-body > .hint{margin-top:7px;font-size:12px;line-height:1.7;color:var(--ink-3)}
.ai-actions{display:flex;align-items:center;gap:10px;margin-top:8px}
.ai-note{font-size:12px;color:var(--ink-3);min-width:0;overflow:hidden;text-overflow:ellipsis}
.ai-empty{font-size:13px;line-height:1.75;color:var(--ink-3)}
/* 生成回执：模型 / 字数 / 耗时 / 留空变量，一眼看出这次生成值不值得用 */
.ai-result{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:7px 12px;border-top:1px dashed var(--line);background:var(--ok-bg);font-size:12px;color:var(--ink-2)}
.ai-result .ar-i b{color:var(--ink);font-weight:700}
.ai-result .ar-sep{color:var(--ink-3)}
.ai-result .ar-warn{flex:1 1 auto;min-width:0;color:#8a5a00;background:var(--warn-bg);border-radius:6px;padding:2px 7px;font-size:11.5px}
.ai-result .btn{margin-left:auto}
/* 提示词原文预览 */
.ai-pv{max-height:220px;overflow:auto;margin:6px 0 0;padding:9px 11px;border:1px solid var(--line);border-radius:8px;background:var(--surface-2);font-size:11.5px;line-height:1.7;color:var(--ink-2);white-space:pre-wrap;word-break:break-word;font-family:inherit}
/* AI 面板：一行一个主题（多行输入）+ 篇数提示 */
.ai-kw-ta{min-height:74px;resize:vertical;line-height:1.65}
.ai-kw-bar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:6px;font-size:12px;color:var(--ink-2)}
.ai-kw-bar .akb-n b{color:var(--primary);font-weight:700}
.ai-kw-bar .akb-sep{color:var(--ink-3)}
/* 批量初稿队列：多主题生成出来的稿子逐篇确认 */
.ai-drafts{margin:0 0 14px;border:1px solid var(--line);border-radius:12px;background:var(--surface-2);overflow:hidden}
.ad-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:9px 12px;border-bottom:1px solid var(--line);background:var(--surface)}
.ad-head b{font-size:13px;color:var(--ink)}
.ad-stat{flex:1 1 0%;min-width:0;font-size:12px;color:var(--ink-3)}
.ad-stat b{color:var(--primary);font-weight:700}
.ad-tools{flex:none;display:flex;gap:6px}
/* 列表完整展示、由页面滚动：内部滚动会把最后一条切成半行，看起来像内容丢了 */
.ad-list{display:flex;flex-direction:column}
.ad-item{display:flex;align-items:flex-start;gap:9px;padding:9px 12px;border-bottom:1px dashed var(--line)}
.ad-item:last-child{border-bottom:0}
.ad-item.done{background:var(--surface)}
.ad-item.error{background:var(--err-bg)}
.ad-ck{flex:none;display:flex;align-items:center;padding-top:2px}
.ad-ck input{width:15px;height:15px;accent-color:var(--primary);cursor:pointer}
.ad-ck input:disabled{cursor:not-allowed}
.ad-main{flex:1 1 0%;min-width:0;display:flex;flex-direction:column;gap:3px}
.ad-kw{display:flex;align-items:center;gap:6px;font-size:12.5px;font-weight:600;color:var(--ink-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ad-no{flex:none;display:inline-flex;align-items:center;justify-content:center;min-width:17px;height:17px;padding:0 5px;border-radius:999px;background:var(--primary-soft);color:var(--primary);font-size:11px;font-weight:700}
.ad-title{width:100%;padding:4px 8px;border:1px solid var(--line);border-radius:7px;background:var(--surface);font-size:13px;font-weight:600;color:var(--ink)}
.ad-title:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 2px var(--primary-soft)}
.ad-meta{font-size:11.5px;color:var(--ink-3);display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.ad-meta .ad-dot{color:var(--ink-3)}
.ad-meta.ad-err{color:var(--err);line-height:1.5}
.ad-meta.ad-wait{color:var(--ink-3)}
.ad-act{flex:none;display:flex;gap:6px;align-self:center}
.ad-foot{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 12px;border-top:1px solid var(--line);background:var(--surface)}
.ad-foot-note{font-size:12px;color:var(--ink-3)}
.ad-foot-note b{color:var(--ink);font-weight:700}
.ad-foot-note .ad-cost{color:var(--primary);font-size:13px}
@media (max-width:760px){
  .ad-item{flex-wrap:wrap}
  .ad-act{width:100%;justify-content:flex-end}
}
/* 模型字段：可选可填（datalist）+ 拉取按钮 */
.combo-field{display:flex;flex-direction:column;gap:6px}
.combo-tools{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.combo-note{font-size:11.5px;color:var(--ink-3)}
/* 表单里的风险提示（如「当前模型名不在可用清单里」）：要能一眼看到，不能当普通灰字 */
.hint.hint-warn{color:#8a5a00;background:var(--warn-bg);border-left:2px solid var(--warn);border-radius:6px;padding:5px 8px}
.keytest-box{display:flex;flex-direction:column;gap:7px;align-items:flex-start}
.keytest-box .probe-note{width:100%}
.probe-note.bad{color:var(--err);background:var(--err-bg);border-color:#f6c7d2}
/* 提示词编辑器：客户模式的自检与变量使用标记 */
.pe-head-tools{display:flex;align-items:center;gap:6px}
.pe-lint{margin-top:10px;border:1px solid var(--line);border-radius:10px;background:var(--surface-2);padding:10px 12px}
.pe-lint-h{font-size:12.5px;font-weight:700;color:var(--ink);margin-bottom:7px}
.pe-lint-i{display:flex;align-items:flex-start;gap:7px;font-size:12px;line-height:1.65;color:var(--ink-2);padding:2px 0}
.pe-lint-i .dot{flex:none;width:6px;height:6px;border-radius:50%;margin-top:7px;background:var(--ink-3)}
.pe-lint-i.warn{color:#8a5a00}
.pe-lint-i.warn .dot{background:var(--warn)}
.pe-lint-i.error{color:var(--err)}
.pe-lint-i.error .dot{background:var(--err)}
.pe-lint-i.ok{color:#0d7a49}
.pe-lint-i.ok .dot{background:var(--ok)}
.pe-lint-i.info{color:var(--ink-3)}
.pe-lint-act{margin-top:7px}
.pe-var-used{flex:none;width:16px;text-align:center;font-size:11px;color:var(--ink-3)}
.pe-var-used.on{color:var(--ok);font-weight:700}
/* 变量行：窄栏里「变量名」和「填写样例」挤在一行会互相压字。
   改成两行 —— 第一行：⠿ 变量名 ✓ ✕；第二行：填写样例（整行宽），样例才看得全。 */
.pe-var{flex-wrap:wrap;row-gap:4px}
.pe-var .pe-grip{order:1}
.pe-var .pe-var-name{order:2;flex:1 1 auto;width:auto;min-width:84px}
.pe-var .pe-var-used{order:3}
.pe-var .pe-del{order:4}
.pe-var .pe-var-ph{order:5;flex:1 1 100%;width:100%}
/* 专属价角标：只在客户谈过价的媒体上出现，避免视觉噪音 */
.plat-list .plat-own{font-style:normal;font-size:10px;font-weight:700;margin-right:4px;padding:1px 3px;border-radius:3px;background:#fff;color:var(--primary);vertical-align:1px}
.plat-list .plat-c.one .plat-own{background:var(--primary-soft)}

/* ===== 400 通话量监控（call400-monitor 技能接入） ===== */
.c4-page{padding:18px 22px;max-width:1180px;margin:0 auto}
.c4-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-bottom:14px}
.c4-head h2{font-size:20px;font-weight:800;margin:0}
.c4-tabs{display:flex;gap:6px;flex-wrap:wrap}
.c4-tabs button{padding:7px 14px;border:1px solid var(--line);background:var(--bg);color:var(--ink-2);border-radius:8px;cursor:pointer;font-size:13px}
.c4-tabs button.on{background:var(--primary);border-color:var(--primary);color:#fff}
.c4-summary{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:14px;font-size:13px;color:var(--ink-2)}
.c4-summary b{color:var(--primary);font-size:15px;margin-left:4px}
.c4-msg{padding:9px 12px;border-radius:8px;background:var(--bg-2);border:1px solid var(--line);color:var(--ink-2);font-size:13px;margin-bottom:14px}
.c4-row{display:flex;gap:14px;flex-wrap:wrap;align-items:center}
.c4-actions{margin-bottom:14px}
.c4-btn{padding:7px 14px;border:1px solid var(--line);background:var(--bg);color:var(--ink-1);border-radius:8px;cursor:pointer;font-size:13px}
.c4-btn:hover{border-color:var(--primary)}
.c4-btn.primary{background:var(--primary);border-color:var(--primary);color:#fff}
.c4-btn.small{padding:4px 10px;font-size:12px}
.c4-btn:disabled{opacity:.55;cursor:not-allowed}
.c4-auto{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--ink-2);margin-left:auto}
.c4-switch{display:flex;align-items:center;gap:4px;cursor:pointer}
.c4-num{width:64px;padding:5px 8px;border:1px solid var(--line);border-radius:7px;background:var(--bg);color:var(--ink-1);font-size:13px}
.c4-card{border:1px solid var(--line);border-radius:12px;padding:16px 18px;background:var(--bg);margin-bottom:16px}
.c4-card h3{margin:0 0 8px;font-size:15px}
.c4-tip{font-size:12px;color:var(--ink-3);margin:0 0 12px;line-height:1.55}
.c4-form{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}
.c4-form label{display:flex;flex-direction:column;gap:5px;font-size:12.5px;color:var(--ink-2);font-weight:600}
.c4-form input[type=text],.c4-form input:not([type=checkbox]){padding:7px 10px;border:1px solid var(--line);border-radius:8px;background:var(--bg-2);color:var(--ink-1);font-size:13px;font-weight:400}
.c4-enable{flex-direction:row !important;align-items:center;gap:6px !important}
.c4-probe{margin-top:12px;font-size:13px;color:var(--ink-2)}
.c4-warn{color:var(--danger,#c0392b);margin-left:6px}
.c4-table{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--bg)}
.c4-th,.c4-tr{display:grid;grid-template-columns:1.4fr 2fr .9fr .6fr .8fr 1.3fr 1fr;gap:8px;padding:10px 14px;align-items:center;font-size:13px}
.c4-th{background:var(--bg-2);font-weight:700;color:var(--ink-3);border-bottom:1px solid var(--line)}
.c4-tr{border-bottom:1px solid var(--line)}
.c4-tr:last-child{border-bottom:none}
.c4-url{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink-2)}
.c4-badge{display:inline-block;padding:2px 8px;border-radius:6px;font-size:11.5px;background:var(--bg-2);border:1px solid var(--line);color:var(--ink-2)}
.c4-badge.bk-unknown{background:#fdf2e9;color:#b9770e;border-color:#f3d9b5}
.c4-badge.bk-wo4000{background:#eaf3ff;color:#2160c4;border-color:#cfe0fb}
.c4-op a{color:var(--primary);cursor:pointer;margin-right:10px;font-size:12.5px}
.c4-op a.c4-del{color:var(--danger,#c0392b)}
.c4-empty{padding:30px;text-align:center;color:var(--ink-3);font-size:13px}
.c4-loading{padding:20px;text-align:center;color:var(--ink-3);font-size:13px}
.c4-filter{margin-bottom:12px}
.c4-filter select{padding:5px 8px;border:1px solid var(--line);border-radius:7px;background:var(--bg);color:var(--ink-1);font-size:13px}
.c4-bars{display:flex;flex-direction:column;gap:10px;margin-top:6px}
.c4-bar-row{display:grid;grid-template-columns:160px 1fr 70px;gap:12px;align-items:center;font-size:13px}
.c4-bar-label{font-weight:600;color:var(--ink-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.c4-bar-track{height:18px;background:var(--bg-2);border-radius:9px;overflow:hidden}
.c4-bar-fill{height:100%;background:linear-gradient(90deg,var(--primary),#7aa7ff);border-radius:9px;transition:width .4s}
.c4-bar-val{font-weight:700;color:var(--primary);text-align:right}
.c4-bar-time{grid-column:2 / 4;font-size:11.5px;color:var(--ink-3);margin-top:-4px}
.c4-bars-v{display:flex;gap:14px;align-items:flex-end;height:280px;padding:10px 0;overflow-x:auto}
.c4-vrow{display:flex;flex-direction:column;align-items:center;gap:6px;min-width:42px}
.c4-vday{font-size:11.5px;color:var(--ink-3)}
.c4-bar-track.v{width:26px;height:220px;display:flex;align-items:flex-end}
.c4-bar-fill.v{width:100%;background:linear-gradient(0deg,var(--primary),#7aa7ff);border-radius:6px 6px 0 0}
.c4-vval{font-size:12px;font-weight:700;color:var(--primary)}
/* —— 对比分析专用样式 —— */
.c4-sub{margin:0;font-size:13px;color:var(--ink-3);line-height:1.5;max-width:760px}
.c4-cmp-controls{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap;margin-bottom:16px;padding:14px 16px;border:1px solid var(--line);border-radius:12px;background:var(--bg)}
.c4-cmp-sites{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.c4-cmp-label{font-size:12.5px;color:var(--ink-3);font-weight:600}
.c4-chip{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border:1px solid var(--line);border-radius:20px;font-size:12.5px;color:var(--ink-1);background:var(--bg);cursor:pointer;user-select:none}
.c4-chip.off{opacity:.5}
.c4-chip input{display:none}
.c4-dot{width:10px;height:10px;border-radius:50%;display:inline-block;flex:none}
.c4-cmp-range{display:flex;gap:6px;flex:none}
.c4-cmp-range button{padding:5px 11px;border:1px solid var(--line);border-radius:8px;background:var(--bg);color:var(--ink-2);cursor:pointer;font-size:12.5px}
.c4-cmp-range button.on{background:var(--primary);border-color:var(--primary);color:#fff}
.c4-cmp-chart{position:relative;width:100%;border:1px solid var(--line);border-radius:12px;background:var(--bg);padding:10px 6px 2px;margin-bottom:18px}
.c4-svg{width:100%;height:auto;display:block;touch-action:none}
.c4-grid{stroke:var(--line);stroke-width:1;stroke-dasharray:3 4}
.c4-yaxis{fill:var(--ink-3);font-size:11px;text-anchor:end}
.c4-xaxis{fill:var(--ink-3);font-size:11px;text-anchor:middle}
.c4-hover-line{stroke:var(--ink-3);stroke-width:1;stroke-dasharray:4 3;opacity:.7}
.c4-tooltip{position:absolute;top:8px;transform:translateX(-50%);background:var(--bg-1,#fff);border:1px solid var(--line);border-radius:10px;padding:8px 11px;box-shadow:0 6px 20px rgba(0,0,0,.12);pointer-events:none;min-width:150px;z-index:5}
.c4-tt-day{font-size:12px;font-weight:700;color:var(--ink-1);margin-bottom:5px;border-bottom:1px solid var(--line);padding-bottom:4px}
.c4-tt-row{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-2);line-height:1.7}
.c4-tt-dot{width:9px;height:9px;border-radius:50%;display:inline-block;flex:none}
.c4-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}
.c4-card-sm{border:1px solid var(--line);border-radius:12px;padding:14px 16px;background:var(--bg)}
.c4-card-h{display:flex;align-items:center;gap:7px;font-size:14px;font-weight:700;color:var(--ink-1);margin-bottom:12px}
.c4-card-h .c4-tr{margin-left:auto;font-size:13px}
.c4-card-h .c4-tr.up{color:var(--success,#27ae60)}
.c4-card-h .c4-tr.down{color:var(--danger,#c0392b)}
.c4-card-h .c4-tr.flat{color:var(--ink-3)}
.c4-card-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px 14px}
.c4-card-grid>div{display:flex;flex-direction:column}
.c4-card-grid b{font-size:19px;font-weight:800;color:var(--primary)}
.c4-card-grid span{font-size:11px;color:var(--ink-3)}
.c4-card-sub{margin-top:10px;font-size:11.5px;color:var(--ink-3)}

/* ---- 增强：KPI 统计卡 ---- */
.c4-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-bottom:16px}
.c4-stat{position:relative;overflow:hidden;border:1px solid var(--line);border-radius:14px;padding:14px 16px;background:linear-gradient(135deg,var(--bg),var(--bg-2));display:flex;flex-direction:column;gap:4px}
.c4-stat-ico{font-size:20px;line-height:1}
.c4-stat-val{font-size:26px;font-weight:800;color:var(--primary);line-height:1.1;font-variant-numeric:tabular-nums}
.c4-stat-val.c4-stat-sm{font-size:15px;line-height:1.3}
.c4-stat-label{font-size:12px;color:var(--ink-3)}
.c4-stats-sm{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));margin:0 0 16px}

/* ---- 增强：站点卡片网格 ---- */
.c4-site-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}
.c4-site-card{border:1px solid var(--line);border-radius:14px;padding:16px;background:var(--bg);display:flex;flex-direction:column;gap:10px}
.c4-sc-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.c4-sc-name{font-size:15px;font-weight:800;color:var(--ink-1)}
.c4-sc-meta{display:flex;align-items:center;gap:7px;font-size:12.5px;color:var(--ink-3);flex-wrap:wrap}
.c4-dot-st{width:9px;height:9px;border-radius:50%;flex:none;background:var(--ink-3)}
.c4-dot-st.ok{background:var(--success,#27ae60)}
.c4-dot-st.fail{background:var(--danger,#c0392b)}
.c4-sc-url{font-size:11.5px;color:var(--ink-3);word-break:break-all;background:var(--bg-2);border:1px solid var(--line);border-radius:8px;padding:6px 8px}
.c4-sc-actions{display:flex;gap:12px;align-items:center;border-top:1px dashed var(--line);padding-top:10px;flex-wrap:wrap}
.c4-sc-actions a{color:var(--primary);cursor:pointer;font-size:12.5px}
.c4-sc-actions a.c4-del{color:var(--danger,#c0392b)}
.c4-toggle{margin-left:auto;display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-2)}
.c4-site-add{border-style:dashed;align-items:center;justify-content:center;text-align:center;color:var(--ink-3);cursor:pointer;font-size:13px;font-weight:600;gap:6px;transition:.15s}
.c4-site-add:hover{border-color:var(--primary);color:var(--primary)}
.c4-add-plus{font-size:28px;line-height:1;font-weight:400}

/* ---- 增强：开关组件（替代旧 .c4-switch 文本样式）---- */
.c4-switch{position:relative;display:inline-block;width:40px;height:22px;flex:none}
.c4-switch input{position:absolute;opacity:0;width:100%;height:100%;margin:0;cursor:pointer}
.c4-slider{position:absolute;inset:0;background:var(--bg-2);border:1px solid var(--line);border-radius:20px;transition:.2s;cursor:pointer}
.c4-slider:before{content:'';position:absolute;width:16px;height:16px;left:2px;top:2px;background:#fff;border-radius:50%;transition:.2s;box-shadow:0 1px 2px rgba(0,0,0,.25)}
.c4-switch input:checked + .c4-slider{background:var(--primary);border-color:var(--primary)}
.c4-switch input:checked + .c4-slider:before{transform:translateX(18px)}

/* ---- 增强：模态框 ---- */
.c4-modal-mask{position:fixed;inset:0;background:rgba(0,0,0,.45);display:flex;align-items:flex-start;justify-content:center;padding:64px 16px;z-index:50;overflow:auto}
.c4-modal{width:min(560px,100%);background:var(--bg);border:1px solid var(--line);border-radius:16px;padding:22px;box-shadow:0 20px 60px rgba(0,0,0,.25)}
.c4-modal h3{margin:0 0 8px;font-size:17px}
.c4-modal-actions{margin-top:16px;justify-content:flex-end}

/* ---- 增强：自动采集面板 ---- */
.c4-auto-panel{border:1px solid var(--line);border-radius:12px;padding:12px 16px;background:var(--bg);display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:14px}
.c4-auto-inline{margin-bottom:0}
.c4-auto-hint{margin-left:auto;font-size:12px;color:var(--ink-3)}
.c4-auto input:disabled{opacity:.5}

/* ---- 增强：横向条形（每日/每月/实时）---- */
.c4-hbars{display:flex;flex-direction:column;gap:8px;margin-top:6px}
.c4-hrow{display:grid;grid-template-columns:70px 1fr 44px;gap:10px;align-items:center;font-size:12.5px}
.c4-hday{color:var(--ink-3);text-align:right;font-variant-numeric:tabular-nums}
.c4-hday.c4-hname{color:var(--ink-1);font-weight:600}
.c4-hbar-track{height:16px;background:var(--bg-2);border-radius:8px;overflow:hidden;border:1px solid var(--line)}
.c4-hbar-fill{height:100%;background:linear-gradient(90deg,var(--primary),#7aa7ff);border-radius:8px;transition:width .4s}
.c4-hval{font-weight:700;color:var(--primary);text-align:right;font-variant-numeric:tabular-nums}

/* ---- 增强：对比图例（可点选隐藏）+ 卡片强调色 ---- */
.c4-legend{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:14px 0 6px}
.c4-legend-item{display:inline-flex;align-items:center;gap:6px;padding:5px 11px;border:1px solid var(--line);border-radius:20px;font-size:12.5px;background:var(--bg);cursor:pointer;user-select:none;transition:.15s}
.c4-legend-item:hover{border-color:var(--primary)}
.c4-legend-item b{color:var(--primary)}
.c4-legend-hint{font-size:11.5px;color:var(--ink-3)}
.c4-card-accent{border-left:4px solid var(--primary)}

