:root{
  --bg:#f3f5fa;
  --bg-2:#ffffff;
  --panel:#ffffff;
  --panel-2:#f7f9fc;
  --primary:var(--accent);
  --line:#e2e7f0;
  --line-soft:#eef2f8;
  --txt:#1f2937;
  --txt-2:#5a667c;
  --txt-3:#8b95a8;
  --accent:#4f46e5;
  --accent-2:#0891b2;
  --accent-grad:linear-gradient(135deg,#4f46e5 0%,#0ea5e9 100%);
  --brand:#2563eb;
  --brand-d:#1d4ed8;
  --green:#16a34a;
  --orange:#d97706;
  --red:#dc2626;
  --radius:14px;
  --shadow:0 10px 30px rgba(15,23,42,.08);
}
*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;
  font-family:"PingFang SC","Microsoft YaHei","Segoe UI",system-ui,-apple-system,sans-serif;
  background:linear-gradient(135deg,#f0f4ff 0%,#f8fafc 45%,#ffffff 100%) fixed;
  color:var(--txt);
  -webkit-font-smoothing:antialiased;
}
.hidden{display:none !important}
button{font-family:inherit;cursor:pointer}
input,select{font-family:inherit}

/* ---------- 登录（左右分栏欢迎页） ---------- */
.login-screen{
  position:fixed;inset:0;display:flex;align-items:center;justify-content:center;overflow:hidden;
  background:linear-gradient(135deg,#eef2ff 0%,#e0e7ff 35%,#f5f3ff 70%,#f8fafc 100%);
}
.login-screen::before{
  content:"";position:absolute;inset:0;
  background-image:
    radial-gradient(circle at 20% 30%,rgba(79,70,229,.12) 0%,transparent 35%),
    radial-gradient(circle at 80% 20%,rgba(14,165,233,.10) 0%,transparent 30%),
    radial-gradient(circle at 60% 85%,rgba(79,70,229,.08) 0%,transparent 35%);
  pointer-events:none;
}
.login-screen::after{
  content:"";position:absolute;inset:0;
  background-image:radial-gradient(rgba(31,41,55,.06) 1px,transparent 1px);
  background-size:32px 32px;opacity:.4;pointer-events:none;
}
.login-bg-glow{position:absolute;width:900px;height:900px;background:radial-gradient(circle,rgba(79,70,229,.14),transparent 55%);filter:blur(30px);top:-300px;right:-260px;pointer-events:none}
.login-card{
  position:relative;width:min(900px,92vw);min-height:540px;
  display:flex;overflow:hidden;border-radius:24px;
  background:var(--panel);
  border:1px solid rgba(31,41,55,.08);
  box-shadow:0 24px 60px rgba(15,23,42,.12),0 0 0 1px rgba(255,255,255,.6) inset;
  z-index:2;
}

/* 左侧欢迎区 */
.login-welcome{
  flex:1.15;position:relative;display:flex;flex-direction:column;justify-content:space-between;
  padding:42px 38px 32px;
  background:linear-gradient(160deg,#2563eb 0%,#4f46e5 50%,#7c3aed 100%);
  color:#fff;overflow:hidden;
}
.login-welcome::before{
  content:"";position:absolute;inset:0;
  background-image:radial-gradient(rgba(255,255,255,.14) 1px,transparent 1px);
  background-size:26px 26px;opacity:.4;pointer-events:none;
}
.login-welcome > *{position:relative;z-index:1}
.login-welcome-brand{display:flex;align-items:center;gap:12px}
.login-welcome-brand .brand-mark{width:44px;height:44px;border-radius:12px;background:rgba(255,255,255,.2);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;font-size:22px;font-weight:800;color:#fff;border:1px solid rgba(255,255,255,.25)}
.login-welcome-brand .brand-title{font-size:18px;font-weight:700}
.login-welcome-text{margin-top:18px}
.welcome-hi{font-size:32px;font-weight:800;letter-spacing:1px;margin-bottom:8px}
.welcome-sub{font-size:17px;font-weight:600;opacity:.95;margin-bottom:10px;line-height:1.5}
.welcome-desc{font-size:13px;opacity:.75;line-height:1.6}
.login-illustration{flex:1;display:flex;align-items:center;justify-content:center;margin:20px 0}
.login-illustration svg{width:100%;max-width:340px;height:auto;filter:drop-shadow(0 16px 30px rgba(0,0,0,.15))}
.login-welcome-foot{font-size:12px;opacity:.65;text-align:center}

/* 右侧表单区 */
.login-form-panel{
  flex:1;display:flex;flex-direction:column;justify-content:center;
  padding:42px 46px 36px;background:var(--bg-2);
}
.login-form-title{font-size:24px;font-weight:700;margin-bottom:28px;color:var(--txt)}
.login-form .field{display:block;margin-bottom:16px}
.field-label{display:block;font-size:13px;color:var(--txt-2);margin-bottom:8px}
.field input{width:100%;height:46px;background:#f8fafc;border:1px solid var(--line);border-radius:11px;color:var(--txt);padding:0 15px;font-size:14px;outline:none;transition:.2s}
.field input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(79,70,229,.14)}
.login-remember{display:flex;gap:22px;margin:4px 0 10px;font-size:13px;color:var(--txt-2)}
.login-remember .ck{display:flex;align-items:center;gap:6px;cursor:pointer}
.login-error{color:var(--red);font-size:13px;min-height:18px;margin:4px 0 12px}
.login-admin-entry{text-align:center;margin-top:16px}
.login-admin-entry a{color:var(--accent);font-size:13px;text-decoration:none;cursor:pointer}
.login-admin-entry a:hover{text-decoration:underline}

.brand-mark.sm{width:30px;height:30px;border-radius:8px;font-size:14px;background:#eef2ff;color:#2563eb;border:1px solid #dbeafe;display:flex;align-items:center;justify-content:center;font-weight:700}

/* ---------- 按钮 ---------- */
.btn{border:1px solid var(--line);border-radius:10px;padding:9px 16px;font-size:13px;font-weight:600;color:var(--txt);background:var(--bg-2);box-shadow:0 1px 2px rgba(15,23,42,.05);transition:.18s;white-space:nowrap}
.btn:hover{border-color:var(--accent);color:#1d4ed8;background:#f5f7ff;transform:translateY(-1px);box-shadow:0 7px 18px rgba(79,70,229,.16)}
.btn:active{transform:translateY(0);box-shadow:0 1px 2px rgba(15,23,42,.06)}
.btn-primary{background:var(--accent-grad);border:0;color:#fff;box-shadow:0 8px 20px rgba(79,70,229,.30)}
.btn-primary:hover{filter:brightness(1.05);transform:translateY(-2px);box-shadow:0 13px 28px rgba(79,70,229,.42)}
.btn-primary:active{transform:translateY(0);box-shadow:0 6px 14px rgba(79,70,229,.30)}
.btn-block{width:100%;height:46px;font-size:15px;margin-top:4px;letter-spacing:2px}
.btn-ghost{background:transparent;border-color:transparent;box-shadow:none}
.btn-ghost:hover{background:#f1f5f9;border-color:var(--line);color:var(--txt);transform:translateY(-1px);box-shadow:none}
.btn-accent{background:#eef2ff;border:1px solid #c7d2fe;color:#1d4ed8;box-shadow:0 1px 2px rgba(37,99,235,.06)}
.btn-accent:hover{background:#e0e7ff;border-color:#a5b4fc;color:#1e40af;transform:translateY(-1px);box-shadow:0 7px 18px rgba(37,99,235,.18)}
/* v2026100206：未勾选计划时「批量添加素材」按钮明显变灰虚线，勾上后立刻恢复蓝色实体 */
.am-btn-off,.am-btn-off:hover{filter:grayscale(1);opacity:.5;border-style:dashed;box-shadow:none;transform:none;background:#f1f3f6;color:#7b8494;border-color:#d4d8e0}
.btn-danger{background:#fef2f2;border:1px solid #fecaca;color:#dc2626;box-shadow:0 1px 2px rgba(220,38,38,.06)}
.btn-danger:hover{background:#fee2e2;border-color:#fca5a5;color:#b91c1c;transform:translateY(-1px);box-shadow:0 7px 18px rgba(220,38,38,.18)}
.btn-warning{background:#fff7ed;border:1px solid #fdba74;color:#c2410c;box-shadow:0 1px 2px rgba(194,65,12,.08)}
.btn-warning:hover{background:#ffedd5;border-color:#fb923c;color:#9a3412;transform:translateY(-1px);box-shadow:0 7px 18px rgba(194,65,12,.20)}
.btn-sm{padding:7px 13px;font-size:13px}
.btn-xs{padding:4px 10px;font-size:12px;line-height:1.4;border-radius:7px}
.btn:disabled{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none}
/* 统一输入/下拉框（与 .btn 同高同圆角，避免工具栏里参差不齐） */
.input{height:34px;box-sizing:border-box;border:1px solid var(--line);border-radius:10px;background:var(--bg-2);color:var(--txt);font-size:13px;outline:none;padding:0 12px;transition:.18s}
.input:hover{border-color:var(--accent)}
.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(79,70,229,.12)}
select.input{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-right:32px;background:var(--bg-2) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 11px center / 12px 8px;cursor:pointer}
textarea.input{height:auto;min-height:80px;padding:10px 12px;resize:vertical;line-height:1.45}
/* cookie 计划管理工具栏：按钮/输入框同一行严格对齐 */
.ck-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.ck-search{position:relative;display:inline-flex;align-items:center}
.ck-search .input{padding-right:26px}
.ck-clear{position:absolute;right:4px;width:20px;height:20px;line-height:18px;text-align:center;border:none;background:#e5e7eb;color:#475569;border-radius:50%;cursor:pointer;font-size:15px;padding:0}
.ck-clear:hover{background:#cbd5e1;color:#1f2937}
.ck-status-bar{display:flex;align-items:center;gap:6px;margin-top:10px;padding:8px 10px;background:var(--bg-2);border-radius:8px}
.tag{display:inline-block;padding:2px 9px;border-radius:20px;font-size:12px;font-weight:600;background:#e0e7ff;color:#3730a3}
/* 批量开关按钮（开启/暂停）：开关式外观，绿色=开启，灰色=暂停 */
.btn-switch-on,.btn-switch-off{display:inline-flex;align-items:center;gap:7px;border-radius:20px;font-weight:700;letter-spacing:.5px;border:0;transition:.18s}
.btn-switch-on::before,.btn-switch-off::before{content:"";width:12px;height:12px;border-radius:50%;flex:0 0 auto}
.btn-switch-on{background:var(--green);color:#fff;box-shadow:0 6px 16px rgba(16,185,129,.32)}
.btn-switch-on::before{background:#fff;box-shadow:0 0 0 3px rgba(255,255,255,.35)}
.btn-switch-on:hover{filter:brightness(1.04);transform:translateY(-2px);box-shadow:0 11px 24px rgba(16,185,129,.42)}
.btn-switch-off{background:#e2e8f0;color:#475569;box-shadow:0 6px 16px rgba(71,85,105,.18)}
.btn-switch-off::before{background:#94a3b8;box-shadow:0 0 0 3px rgba(148,163,184,.25)}
.btn-switch-off:hover{background:#cbd5e1;color:#334155;transform:translateY(-2px);box-shadow:0 11px 24px rgba(71,85,105,.26)}

/* 顶栏按钮 */
.hbtn{height:36px;padding:0 15px;font-size:13px;font-weight:600;color:var(--txt);background:var(--bg-2);border:1px solid var(--line);border-radius:9px;transition:.18s;box-shadow:0 1px 2px rgba(15,23,42,.05)}
a.hbtn{display:inline-flex;align-items:center;justify-content:center;gap:7px;text-decoration:none !important}
.hbtn:hover{border-color:var(--accent);color:#1d4ed8;background:#f5f7ff;transform:translateY(-1px);box-shadow:0 6px 15px rgba(79,70,229,.15)}
.hbtn-outline{color:var(--txt-2);border-color:var(--line-soft);background:transparent;box-shadow:none}
.hbtn-outline:hover{background:#f1f5f9;border-color:var(--line);color:var(--txt);transform:translateY(-1px);box-shadow:none}
.hbtn-primary{background:var(--brand);border-color:var(--brand);color:#fff;box-shadow:0 6px 16px rgba(37,99,235,.28)}
.hbtn-primary:hover{filter:brightness(1.06);transform:translateY(-2px);box-shadow:0 11px 24px rgba(37,99,235,.40)}
.hbtn-sm{height:30px;padding:0 12px;font-size:12px}
.hbtn-lg{height:40px;padding:0 22px;font-size:15px;font-weight:700;border-radius:999px;gap:10px;display:inline-flex;align-items:center;white-space:nowrap;text-decoration:none !important}
.hbtn-blue{background:linear-gradient(135deg,#2563eb 0%,#1d4ed8 100%);border:1px solid #1e40af;color:#fff;box-shadow:0 8px 22px rgba(37,99,235,.35)}
.hbtn-blue:hover{background:linear-gradient(135deg,#3b82f6 0%,#2563eb 100%);border-color:#1e3a8a;color:#fff;transform:translateY(-2px);box-shadow:0 12px 28px rgba(37,99,235,.45)}
.hbtn-icon{width:22px;height:22px;display:flex;align-items:center;justify-content:center;border-radius:50%;background:rgba(255,255,255,.22);font-size:13px}
.hbtn-text{line-height:1}
.topbar-left{display:flex;align-items:center;gap:12px}

/* ---------- 布局 ---------- */
.app{display:flex;height:100vh;overflow:hidden}
.sidebar{width:240px;flex:0 0 240px;background:var(--bg-2);border-right:1px solid var(--line);display:flex;flex-direction:column;padding:18px 0}
.side-brand{display:flex;align-items:center;gap:12px;padding:14px 16px;margin:0 14px 18px;border:1px solid var(--line);border-radius:12px;background:var(--panel-2);font-size:16px;font-weight:700;color:var(--txt)}
.side-nav{display:flex;flex-direction:column;gap:8px;flex:1;overflow:auto;padding:0 14px}
.nav-item{display:flex;align-items:center;gap:14px;padding:14px 16px;border-radius:14px;color:var(--txt-2);font-size:15px;font-weight:600;cursor:pointer;transition:.18s;border:1px solid transparent;position:relative}
.nav-item:hover{background:#f1f5f9;color:var(--txt)}
.nav-item.active{background:#e8f0fe;color:#2563eb;border-color:#bed6fb;font-weight:700;box-shadow:0 4px 16px rgba(37,99,235,.14)}
.nav-item .nav-icon{width:22px;height:22px;display:flex;align-items:center;justify-content:center}
.nav-item .nav-icon svg{width:22px;height:22px}
.nav-item.active .nav-icon{color:#2563eb}
.nav-item.active::before{content:"";position:absolute;left:6px;top:50%;transform:translateY(-50%);width:4px;height:22px;background:#2563eb;border-radius:2px}
/* 图标默认按页面各自配色（v2026092409：不再限于选中态） */
.nav-item[data-nav="create"] .nav-icon{color:#2563eb}
.nav-item[data-nav="plist"] .nav-icon{color:#0d9488}
.nav-item[data-nav="summary"] .nav-icon{color:#7c3aed}
.nav-item[data-nav="material"] .nav-icon{color:#64748b}
.nav-item[data-nav="tasks"] .nav-icon{color:#ea580c}
.nav-item[data-nav="mine"] .nav-icon{color:#0891b2}
.nav-item[data-nav="manual"] .nav-icon{color:#e11d48}
.nav-item[data-nav="trace"] .nav-icon{color:#16a34a}
.nav-item[data-nav="all"] .nav-icon{color:#d97706}
.side-foot{margin-top:10px;padding:12px 18px;border-top:1px solid var(--line-soft);font-size:12px}
.side-role{color:var(--accent);font-weight:700}
.side-user{color:var(--txt-3);margin-top:3px}

.main{flex:1;display:flex;flex-direction:column;min-width:0}
.topbar{height:56px;flex:0 0 56px;display:flex;align-items:center;justify-content:space-between;padding:0 20px;border-bottom:1px solid var(--line);background:rgba(255,255,255,.9);backdrop-filter:blur(8px)}
.topbar-logo{font-size:15px;font-weight:700;color:var(--txt)}
.topbar-actions{display:flex;align-items:center;gap:10px}
.screen-host{flex:1;overflow:auto;padding:20px 22px}
.manual-host{margin:-20px -22px;width:calc(100% + 44px);height:calc(100% + 40px);min-height:calc(100% + 40px)}
.manual-host iframe{width:100%;height:100%;min-height:calc(100% + 40px);border:none;display:block;background:#fff}

/* ---------- 工具条 / 卡片 ---------- */
.toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:12px}
.toolbar .spacer{flex:1}
.sel-count{font-size:13px;color:var(--txt-2)}
.sel-count b{color:var(--accent)}
.status-text{font-size:12px;color:var(--txt-3)}
.ar-toolbar{background:#f8fafc;border:1px solid var(--line-soft);border-radius:10px;padding:8px 12px;margin-top:2px}
.ar-toolbar .sel-count{font-weight:600;color:var(--txt)}
.ar-toolbar input[type=time]{height:32px;background:#fff;border:1px solid var(--line);border-radius:8px;color:var(--txt);padding:0 8px;font-size:13px;outline:none;cursor:pointer}
.ar-toolbar input[type=time]:disabled{background:#eef2f8;color:var(--txt-3);cursor:not-allowed}
.ar-toolbar .ar-skip-wrap{display:inline-flex;align-items:center;gap:6px;margin-left:8px;padding:6px 12px;background:#fff7e6;border:1px solid #ffd591;border-radius:10px}
.ar-toolbar .ar-skip-label{font-size:13px;color:var(--txt);font-weight:500}
.ar-toolbar .ar-skip-input{height:32px;width:180px;background:#fff;border:1px solid #ffd591;border-radius:8px;color:var(--txt);padding:0 10px;font-size:13px;outline:none;transition:border-color .2s,box-shadow .2s}
.ar-toolbar .ar-skip-input:focus{border-color:#ffa940;box-shadow:0 0 0 3px rgba(255,169,64,.15)}
.ar-toolbar .ar-skip-input:disabled{background:#fff3e0;color:var(--txt-3)}
.ar-toolbar .ar-skip-hint{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background:#fff;border:1px solid #ffd591;color:#d48806;font-size:11px;font-weight:600;cursor:help}
.ar-status{font-size:12px;font-weight:600;margin-left:4px}
.ar-status.on{color:var(--green)}
.ar-status.off{color:var(--txt-3)}
/* toggle switch */
.switch{position:relative;display:inline-block;width:40px;height:22px;flex:0 0 40px}
.switch input{opacity:0;width:0;height:0}
.slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background:#cbd5e1;border-radius:22px;transition:.2s}
.slider:before{position:absolute;content:"";height:16px;width:16px;left:3px;bottom:3px;background:#fff;border-radius:50%;transition:.2s;box-shadow:0 1px 3px rgba(0,0,0,.15)}
input:checked + .slider{background:var(--brand)}
input:checked + .slider:before{transform:translateX(18px)}
input:focus + .slider{box-shadow:0 0 0 3px rgba(37,99,235,.15)}
.boost-schedule-toggle{display:flex;align-items:center;gap:10px;min-width:auto !important;flex:0 0 auto !important}
.boost-schedule-toggle .switch{flex:0 0 40px}
.boost-schedule-toggle .switch-text{font-size:13px;color:var(--txt);font-weight:600}
.boost-schedule-time input[type="datetime-local"]{font-family:inherit;font-size:13px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);transition:.18s}
.card:hover{box-shadow:0 14px 38px rgba(15,23,42,.10)}
.section-title{font-size:15px;font-weight:700;margin:0 0 14px;display:flex;align-items:center;gap:9px;color:var(--txt)}
.section-title .dot{width:7px;height:7px;border-radius:50%;background:var(--accent-grad)}

/* ---------- 表格 ---------- */
.table-wrap{overflow:auto;border-radius:var(--radius);border:1px solid var(--line);background:var(--panel)}
/* 批量建计划：账户列表固定高度滚动，避免账户多时页面无限拉长（@image#6） */
.acct-scroll{max-height:460px;overflow:auto}
.acct-scroll thead th{position:sticky;top:0;z-index:1;background:var(--panel-2)}
table.grid{width:100%;border-collapse:collapse;font-size:13px}
table.grid thead th{position:sticky;top:0;background:var(--panel-2);color:var(--txt-2);font-weight:600;text-align:left;padding:11px 13px;border-bottom:1px solid var(--line);white-space:nowrap;z-index:1}
table.grid thead th.sortable{cursor:pointer;user-select:none}
table.grid thead th.sortable:hover{color:var(--txt)}
table.grid tbody td{padding:10px 13px;border-bottom:1px solid var(--line-soft);color:var(--txt);white-space:nowrap}
/* 表头内嵌筛选：类型 / 状态 / 起量 */
table.grid thead th.has-filter{padding:6px 8px;vertical-align:middle;min-width:90px}
table.grid thead th.has-filter .th-filter-wrap{display:flex;align-items:center;min-width:max-content}
table.grid thead th.has-filter .th-filter{display:flex;flex-wrap:wrap;gap:4px;align-items:center}
table.grid thead th.has-filter .status-filter-toggle{box-sizing:border-box;height:28px;padding:0 22px 0 10px;font-size:12px;line-height:1;border-radius:6px;border:1px solid var(--line);background:var(--panel) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath fill='%2364748b' d='M0 1l5 4 5-4'/%3E%3C/svg%3E") no-repeat right 8px center;color:var(--txt);outline:none;cursor:pointer;min-width:92px;max-width:130px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
table.grid thead th.has-filter .status-filter-toggle:hover{border-color:var(--accent)}
table.grid thead th.has-filter .status-filter-toggle:focus{border-color:var(--accent);box-shadow:0 0 0 2px rgba(37,99,235,.15)}
table.grid thead th.has-filter .sf-wrap,table.grid thead th.has-filter .status-filter-wrap{position:relative;display:inline-block}
table.grid thead th.has-filter .status-filter-toggle{display:inline-flex;align-items:center}
.scheduled-table th:nth-child(1),.scheduled-table td:nth-child(1){min-width:180px}
.scheduled-table th:nth-child(3),.scheduled-table td:nth-child(3){min-width:150px}
.scheduled-table th:nth-child(4),.scheduled-table td:nth-child(4){min-width:160px}
.scheduled-table th:nth-child(5),.scheduled-table td:nth-child(5){min-width:140px}
table.grid tbody tr{cursor:pointer;transition:.12s;height:40px}
table.grid tbody tr:hover{background:#f1f5f9}
table.grid tbody tr.selected{background:#93c5fd;box-shadow:inset 3px 0 0 var(--brand-d)}
table.grid tbody tr.selected td{color:var(--txt);font-weight:600}
.plan-boost-wrap{display:inline-flex;align-items:center;gap:6px;max-width:100%}
.plan-boost-badge{font-size:15px;line-height:1;flex-shrink:0}
/* 行内起量开关（仅管理员列）：开启=橙色，与普通计划开关（绿色）区分 */
.plan-boost-switch input:checked + .plan-switch-slider{background:#f59e0b}
.plan-boost-switch input:checked + .plan-switch-slider::before{box-shadow:0 0 0 2px rgba(245,158,11,.25)}
/* 起量冲突弹窗的冲突计划列表 */
.conflict-list{margin-top:8px;padding:10px 12px;background:var(--bg-soft,#f8fafc);border:1px solid var(--line);
  border-radius:8px;font-size:12px;line-height:1.9;color:var(--txt-2);max-height:180px;overflow:auto;word-break:break-all}
.plan-name-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sort-ind{font-size:11px;color:var(--accent);margin-left:4px}
.cb{width:18px;height:18px;flex:0 0 auto}
/* 统一复选框三态：未选=灰框；pending=蓝底（已选待操作/未确认）；done=绿底白勾（已正确操作） */
input[type=checkbox]{
  -webkit-appearance:none;appearance:none;
  width:18px;height:18px;flex:0 0 auto;
  border:2px solid #cdd5e0;border-radius:6px;background:#fff;
  cursor:pointer;position:relative;vertical-align:-2px;transition:.15s;
}
input[type=checkbox]:hover{border-color:var(--accent)}
input[type=checkbox]:focus-visible{box-shadow:0 0 0 3px rgba(79,70,229,.18)}
/* 默认 checked（兼容旧逻辑）= 绿色打勾 */
input[type=checkbox]:checked{background:var(--green);border-color:var(--green)}
input[type=checkbox]:checked::after{content:"";position:absolute;left:5px;top:1px;width:5px;height:10px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}
input[type=checkbox]:indeterminate{background:var(--accent);border-color:var(--accent)}
input[type=checkbox]:indeterminate::after{content:"";position:absolute;left:3px;top:7px;width:8px;height:2px;background:#fff}
/* pending 态：蓝色方块（选中但未最终确认） */
input[type=checkbox].cb-pending{background:var(--accent);border-color:var(--accent)}
input[type=checkbox].cb-pending::after{content:"";position:absolute;left:5px;top:5px;width:6px;height:6px;background:#fff;border-radius:2px}
/* done 态：绿色打勾（已正确完成） */
input[type=checkbox].cb-done{background:var(--green);border-color:var(--green)}
input[type=checkbox].cb-done::after{content:"";position:absolute;left:5px;top:1px;width:5px;height:10px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}
/* 行高亮：pending 蓝色 / done 绿色 */
.btab tbody tr:has(input[type=checkbox].cb-pending){background:#eff6ff;box-shadow:inset 3px 0 0 var(--brand-d)}
.btab tbody tr:has(input[type=checkbox].cb-done){background:#f0fdf4;box-shadow:inset 3px 0 0 #16a34a}
.btab tbody tr:has(input[type=checkbox]:checked){background:#f0fdf4;box-shadow:inset 3px 0 0 #16a34a}
.btab tbody tr:has(input[type=checkbox].cb-pending) td,
.btab tbody tr:has(input[type=checkbox].cb-done) td,
.btab tbody tr:has(input[type=checkbox]:checked) td{color:var(--txt);font-weight:600}

/* 计划开关（创建时间后单独开关列） */
.plan-switch{position:relative;display:inline-block;width:42px;height:22px;cursor:pointer;vertical-align:middle}
.plan-switch input{opacity:0;width:0;height:0;position:absolute}
.plan-switch-slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background:#e2e8f0;border-radius:22px;transition:.2s}
.plan-switch-slider::before{content:"";position:absolute;height:18px;width:18px;left:2px;bottom:2px;background:#fff;border-radius:50%;transition:.2s;box-shadow:0 1px 3px rgba(0,0,0,.15)}
.plan-switch input:checked + .plan-switch-slider{background:var(--green)}
.plan-switch input:checked + .plan-switch-slider::before{transform:translateX(20px)}
.plan-switch input:disabled + .plan-switch-slider{opacity:.6;cursor:not-allowed}

/* 状态药丸 */
.pill{display:inline-block;padding:3px 10px;border-radius:20px;font-size:12px;font-weight:600}
.pill.green{background:#dcfce7;color:#15803d}
.pill.orange{background:#fef3c7;color:#b45309}
.pill.gray{background:#f1f5f9;color:#64748b}
.pill.red{background:#fee2e2;color:#b91c1c}
.pill.blue{background:#e0f2fe;color:#0369a1}
.mono{font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}

/* 横幅（授权失效红色预警 / 正常绿色提示） */
.banner{padding:12px 16px;border-radius:10px;margin-bottom:14px;font-size:14px;line-height:1.6;
  border:1px solid transparent}
.banner.red{background:#fef2f2;border:1px solid #fecaca;color:#b91c1c;
  box-shadow:0 1px 3px rgba(220,38,38,.08)}
.banner.red b{color:#991b1b}
.banner.green{background:#f0fdf4;border:1px solid #bbf7d0;color:#15803d}

/* ---------- 我的账户表格 ---------- */
.account-table td:first-child,.account-table th:first-child{min-width:180px}
.account-table td:nth-child(3),.account-table th:nth-child(3){min-width:160px}

/* ---------- 批量修改 ROI 弹窗（对齐 EXE） ---------- */
.roi-mode-tabs{display:flex;gap:8px;margin-bottom:8px}
.roi-tab{flex:1;padding:10px 0;border:1px solid var(--line);border-radius:8px;background:var(--bg-2);color:var(--txt-2);cursor:pointer;font-size:13px;transition:.12s}
.roi-tab:hover{background:var(--panel-2);color:var(--txt)}
.roi-tab.active{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600;box-shadow:0 4px 12px rgba(79,70,229,.22)}
.roi-input-wrap input{font-size:15px;font-weight:600;height:38px;border:1px solid var(--line);border-radius:8px;background:var(--bg-2);color:var(--txt);padding:0 10px;outline:none}
.roi-input-wrap input:focus{border-color:var(--accent)}
.roi-preview-table input.roi-row-input{width:100px;text-align:center;font-weight:600;border:1px solid var(--line);border-radius:6px;background:var(--bg-2);color:var(--txt);padding:5px 8px;outline:none}
.roi-preview-table input.roi-row-input:focus{border-color:var(--accent)}

/* ---------- 弹窗 ---------- */
.modal-mask{position:fixed;inset:0;background:rgba(15,23,42,.5);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:70;animation:fade .15s ease}
@keyframes fade{from{opacity:0}to{opacity:1}}
.modal{width:min(760px,94vw);max-height:90vh;overflow:auto;background:var(--panel);border:1px solid var(--line);border-radius:18px;box-shadow:0 24px 60px rgba(15,23,42,.18)}
.modal.wide{width:min(980px,96vw)}
.modal-head{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;border-bottom:1px solid var(--line)}
.modal-title{font-size:16px;font-weight:700;color:var(--txt)}
.modal-close{background:transparent;border:0;color:var(--txt-2);font-size:22px;line-height:1;cursor:pointer}
.modal-body{padding:20px 22px}
.modal-foot{padding:16px 22px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:10px}
.form-row{display:flex;gap:16px;flex-wrap:wrap;margin-bottom:16px}
.form-group{flex:1;min-width:180px}
.form-group label{display:block;font-size:12px;color:var(--txt-2);margin-bottom:7px}
/* 统一下拉框外观（去掉浏览器默认箭头，改用统一自定义箭头） */
select{
  -webkit-appearance:none;-moz-appearance:none;appearance:none;
  background:#f8fafc url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 11px center / 12px 8px;
  border:1px solid var(--line);border-radius:9px;color:var(--txt);
  padding:0 32px 0 11px;font-size:13px;outline:none;cursor:pointer;transition:.15s;height:38px;min-width:120px;
}
select:hover{border-color:var(--accent)}
select:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(79,70,229,.12)}
.form-group input{width:100%;height:42px;background:#f8fafc;border:1px solid var(--line);border-radius:10px;color:var(--txt);padding:0 13px;outline:none}
/* #774：弹窗 .form-group 里的复选框别被上面的通用 input 样式拉成 42px 整行大块 */
.form-group input[type=checkbox]{width:18px;height:18px;flex:0 0 18px;padding:0;background:#fff;border:2px solid #cdd5e0;border-radius:6px}
.form-group input[type=checkbox]:checked{background:var(--green);border-color:var(--green)}
.form-group select{width:100%}
/* 管理员验证弹窗：放大、更宽敞、留白更足 */
.admin-verify-modal{width:min(480px,92vw);max-height:92vh}
.admin-verify-modal .modal-head{padding:24px 28px 16px}
.admin-verify-modal .modal-title{font-size:20px;letter-spacing:.5px}
.admin-verify-modal .modal-body{padding:20px 28px 24px}
.admin-verify-tip{margin:0 0 18px;font-size:13px;line-height:1.7;color:var(--txt-2);background:#f5f7ff;border-left:3px solid var(--accent);border-radius:8px;padding:10px 12px}
.admin-verify-modal .form-group label{font-size:14px;margin-bottom:10px}
.admin-verify-modal .form-group input{height:52px;font-size:16px;border-radius:12px;padding:0 16px}
.admin-verify-modal .login-error{margin-top:12px;font-size:13px}
.admin-verify-modal .modal-foot{padding:18px 28px 26px;gap:14px}
.admin-verify-modal .modal-foot .btn{height:48px;padding:0 28px;font-size:15px}
/* 全部计划：卡片填满视口，工具栏固定顶部，计划表格内部滚动，无需整页滚动 */
.plan-card{display:flex;flex-direction:column;height:100%;min-height:0}
.plan-card > *{flex:0 0 auto}
.plan-card #plan-grid{flex:1 1 auto;min-height:240px;display:flex;flex-direction:column}
.plan-card #plan-grid .table-wrap{flex:1;min-height:0;max-height:none;overflow:auto}
.plan-card #plan-pager{flex:0 0 auto}
/* 批量建计划向导：卡片固定高度，底部操作栏始终可见 */
.create-card{display:flex;flex-direction:column;height:calc(100vh - 140px);padding:20px;overflow:hidden}
.batch-body-scroll{flex:1;overflow:auto;min-height:0;margin:14px 0}

.dy-unlock-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:24px 28px;box-shadow:var(--shadow);max-width:480px;margin:24px auto}
.dy-unlock-title{font-size:16px;font-weight:600;color:var(--txt);margin-bottom:14px}
.dy-unlock-input{width:100%;height:42px;border:1px solid var(--line);border-radius:10px;padding:0 14px;font-size:14px;color:var(--txt);background:#fff;outline:none;transition:.15s}
.dy-unlock-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(79,70,229,.12)}
.dy-unlock-actions{margin-top:14px;display:flex;align-items:center;gap:12px}
.dy-unlock-actions .btn{padding:9px 22px;border-radius:10px;font-size:14px;border:1px solid var(--accent);background:var(--accent);color:#fff;cursor:pointer;transition:.15s}
.dy-unlock-actions .btn:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(79,70,229,.25)}
.dy-unlock-actions .btn:disabled{opacity:.6;cursor:not-allowed}
.dy-unlock-err{color:#dc2626;font-size:13px}

/* 抖音主界面 */
.douyin-screen{display:flex;flex-direction:column;gap:14px;padding:0 4px}
.douyin-screen .page-head{padding:0 4px}
.douyin-screen .page-sub{color:var(--txt-3);font-size:13px;margin-top:4px}
.dy-input-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;box-shadow:var(--shadow)}
.dy-textarea{width:100%;min-height:90px;max-height:180px;border:1px solid var(--line);border-radius:10px;padding:10px 12px;font-size:13px;font-family:inherit;color:var(--txt);background:#fff;outline:none;resize:vertical;box-sizing:border-box;transition:.15s}
.dy-textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(79,70,229,.12)}
.dy-input-actions{margin-top:10px;display:flex;gap:10px;align-items:center}
.dy-input-actions .btn{padding:8px 20px;border-radius:10px;font-size:13px;cursor:pointer;transition:.15s}
.dy-input-actions .btn-primary{background:var(--accent);color:#fff;border:1px solid var(--accent)}
.dy-input-actions .btn-primary:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(79,70,229,.25)}
.dy-input-actions .btn{background:#fff;color:var(--txt);border:1px solid var(--line)}
.dy-status-bar{display:flex;align-items:center;gap:14px;padding:0 4px}
.dy-status-bar .dy-progress-wrap{flex:1;height:6px;background:#e5e7eb;border-radius:3px;overflow:hidden}
.dy-status-bar .dy-progress{height:100%;background:linear-gradient(90deg,var(--accent),#60a5fa);width:0;transition:width .3s}
.dy-status-bar .dy-status-text{font-size:13px;color:var(--txt-2);display:flex;gap:14px;align-items:center;white-space:nowrap}
.dy-status-bar .dy-count b{color:var(--accent);font-weight:700;margin:0 2px}
.dy-toolbar{display:flex;gap:8px;padding:0 4px;flex-wrap:wrap}
.dy-toolbar .btn{padding:6px 14px;font-size:13px;border-radius:8px;border:1px solid var(--line);background:#fff;color:var(--txt);cursor:pointer;transition:.15s}
.dy-toolbar .btn:hover{border-color:var(--accent);color:var(--accent)}
.dy-toolbar .btn-primary{background:var(--accent);color:#fff;border-color:var(--accent)}
.dy-toolbar .btn-primary:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(79,70,229,.25)}
.dy-table-wrap{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:auto}
.dy-table{width:100%;min-width:900px;border-collapse:separate;border-spacing:0;table-layout:fixed;font-size:13px}
.dy-table thead th{background:#f8fafc;color:var(--txt-2);font-weight:600;text-align:left;padding:12px 10px;border-bottom:1px solid var(--line);white-space:nowrap;position:sticky;top:0;z-index:1}
.dy-table tbody td{padding:12px 10px;border-bottom:1px solid #f1f5f9;color:var(--txt);vertical-align:middle;word-break:break-all;overflow:hidden}
.dy-table tbody tr:last-child td{border-bottom:none}
.dy-table tbody tr:hover{background:#f8fafc}
.dy-col-sel{width:46px;text-align:center}
.dy-col-title{width:auto}
.dy-col-title .title-inner{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dy-col-author{width:140px}
.dy-col-time{width:160px}
.dy-col-digg{width:80px;text-align:right}
.dy-col-size{width:100px;text-align:right}
.dy-col-status{width:100px}
.dy-col-op{width:170px;white-space:nowrap}
.dy-col-op .btn{padding:4px 10px;font-size:12px;border-radius:6px;border:1px solid var(--accent);background:#fff;color:var(--accent);cursor:pointer;margin-right:6px;transition:.15s}
.dy-col-op .btn:hover{background:var(--accent);color:#fff}
.dy-col-op .btn-dl{background:var(--accent);color:#fff}
.dy-col-op .btn-dl:hover{background:#4338ca}
.dy-status{display:inline-block;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600}
.dy-status.ok{background:#dcfce7;color:#15803d}
.dy-status.fail{background:#fee2e2;color:#b91c1c}
.dy-status.pending{background:#fef3c7;color:#a16207}
.dy-empty{padding:60px 20px;text-align:center;color:var(--txt-3);font-size:14px}
.hidden{display:none !important}
.bflow{display:flex;align-items:center;gap:10px;padding-top:14px;border-top:1px solid var(--line);flex:0 0 auto}
/* 计划页账户下拉框（顶栏 combobox） */
.qc-sel{height:36px;width:200px;background-color:#f8fafc;border:1px solid var(--line);border-radius:9px;color:var(--txt);padding:0 32px 0 12px;font-size:13px}
.plan-toolbar{align-items:center;gap:10px}
.plan-toolbar .plan-acct-sel{min-width:420px;width:auto;max-width:620px;font-size:13px}
.plan-toolbar .plan-pid-search{height:36px;width:200px;background:var(--bg-2);border:1px solid var(--line);border-radius:9px;color:var(--txt);padding:0 12px;outline:none;font-size:13px}
/* 计划管理/全部计划表格容器：内部滚动，不撑开整页 */
#plan-grid .table-wrap,.plan-table-scroll{max-height:calc(100vh - 320px);min-height:320px;overflow:auto}
/* 状态/类型/起量筛选下拉通用包裹 */
.sf-wrap,.status-filter-wrap{position:relative;display:inline-block}
.status-filter-toggle{white-space:nowrap}
#sf-portal .status-filter-panel{pointer-events:auto}
.status-filter-panel{position:fixed;z-index:9999;min-width:200px;max-width:360px;background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:0 8px 30px rgba(15,23,42,.14);padding:10px 12px}
.status-filter-list{max-height:260px;overflow:auto;display:flex;flex-direction:column;gap:6px}
.sf-item{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--txt);cursor:pointer;padding:5px 6px;border-radius:7px;transition:.12s;white-space:nowrap}
.sf-item:hover{background:var(--panel-2)}
.sf-item.single-sf-item{padding-left:10px;padding-right:10px}
.sf-item.single-sf-item.active{background:var(--accent);color:#fff}
.sf-item input[type=checkbox]{flex:0 0 18px;margin:0}
.status-filter-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:10px;padding-top:10px;border-top:1px solid var(--line-soft)}
/* 批量建计划向导：账户侧栏加宽，完整显示账户名（含竖排账户多时的内部滚动） */
.acct-sidebar-wide{width:260px;flex:0 0 260px}
.acct-layout-align .acct-sidebar-wide{max-height:calc(100vh - 360px);overflow:auto;width:260px;flex:0 0 260px}
/* 批量建计划向导：商品候选区加宽 */
.sel-panel-wide{width:340px;flex:0 0 340px}
/* 步骤③「选择商品」左侧账户：改多列网格排列（一屏可看更多账户，不必长列表滚很久） */
.acct-sidebar-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;align-content:start;
  background:transparent;border:none;border-radius:0;overflow:visible;padding:0}
.acct-sidebar-grid .acct-sidebar-item{border:1px solid var(--line);border-radius:8px;padding:6px 8px;background:var(--panel);border-bottom:1px solid var(--line)}
.acct-sidebar-grid .acct-sidebar-item:hover{background:var(--panel-2)}
.acct-sidebar-grid .acct-sidebar-item.on{border-left:3px solid var(--brand);padding-left:6px;background:#eff6ff}
.acct-sidebar-grid .asi-name{font-size:12px;margin-bottom:2px;white-space:normal;word-break:break-all;overflow:visible}
.acct-sidebar-grid .asi-meta{font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* 抖音号 / 商品 表格内部滚动，不撑开整页（动态滚动，不一直往下滚） */
.aweme-table-wrap,.product-table-wrap{max-height:calc(100vh - 360px);min-height:320px;overflow:auto}
.form-group input:focus,.form-group select:focus{border-color:var(--accent)}
.hint{font-size:12px;color:var(--txt-3);line-height:1.7}

/* 批量改标题表格 */
.modal .table-wrap{margin-top:6px}
.title-table td .nt{width:100%;height:34px;background:#f8fafc;border:1px solid var(--line);border-radius:8px;color:var(--txt);padding:0 10px;outline:none;font-size:13px}
.title-table td .nt:focus{border-color:var(--accent)}
.roi-readout{display:flex;gap:14px;flex-wrap:wrap;margin:4px 0 14px}
.roi-chip{background:#f8fafc;border:1px solid var(--line);border-radius:10px;padding:9px 14px;font-size:13px;color:var(--txt-2)}
.roi-chip b{color:var(--accent);font-size:15px;margin-left:6px}

/* 授权卡片 */
.acct-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}
.acct-card{background:var(--bg-2);border:1px solid var(--line);border-radius:14px;padding:16px 18px;position:relative}
.acct-card .acct-name{font-size:15px;font-weight:700;color:var(--txt)}
.acct-card .acct-meta{font-size:12px;color:var(--txt-3);margin-top:6px}
.acct-card .acct-del{position:absolute;right:14px;top:14px}

/* 概览/统计 */
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;margin-bottom:22px}
.stat{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:20px;position:relative;overflow:hidden}
.stat::after{content:"";position:absolute;right:-30px;top:-30px;width:120px;height:120px;background:var(--accent-grad);opacity:.10;border-radius:50%}
.stat .k{font-size:13px;color:var(--txt-2)}
.stat .v{font-size:30px;font-weight:800;margin-top:8px;background:var(--accent-grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.stat .v.plain{background:none;-webkit-text-fill-color:var(--txt);color:var(--txt)}

/* 步骤向导 */
.steps{display:flex;gap:6px;margin-bottom:22px}
.step{flex:1;padding:12px;border-radius:11px;background:var(--bg-2);border:1px solid var(--line);text-align:center;font-size:13px;color:var(--txt-2);position:relative}
.step.active{border-color:var(--accent);color:#fff;background:var(--accent-grad)}
.step.done{color:#15803d;border-color:#86efac;background:#f0fdf4}
.step .num{display:inline-block;width:20px;height:20px;line-height:20px;border-radius:50%;background:var(--panel-2);margin-right:7px;font-size:12px}
.step.active .num{background:rgba(255,255,255,.25);color:#fff}
.step.done .num{background:#bbf7d0;color:#15803d}

/* toast */
/* v2026100905：bottom 抬高到 78px 避开右下角操作按钮；pointer-events:none 让通知不拦截
   底部按钮点击（多项通知堆叠时旧版会直接挡住「上一步/下一步」等按钮） */
#toast-root{position:fixed;right:22px;bottom:150px;display:flex;flex-direction:column;gap:10px;z-index:80;pointer-events:none}
.toast{background:var(--panel-2);border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:10px;padding:12px 16px;font-size:13px;box-shadow:var(--shadow);animation:slide .2s ease;min-width:220px;color:var(--txt)}
.toast.ok{border-left-color:var(--green)}
.toast.err{border-left-color:var(--red)}
@keyframes slide{from{transform:translateX(30px);opacity:0}to{transform:translateX(0);opacity:1}}

/* 空态 */
.empty{padding:50px;text-align:center;color:var(--txt-3);font-size:14px}

/* 素材上传：拖拽区域与进度条 */
.upload-dropzone{margin:10px 0 14px;border:2px dashed var(--line);border-radius:14px;background:var(--bg-2);padding:32px 20px;text-align:center;cursor:pointer;transition:.18s}
.upload-dropzone.over{border-color:var(--accent);background:#eef2ff}
.upload-dropzone:hover{border-color:var(--accent);background:#f8fafc}
.upload-dropzone-inner{pointer-events:none}
.upload-icon{font-size:36px;color:var(--accent);margin-bottom:8px}
.upload-title{font-size:15px;font-weight:600;color:var(--txt);margin-bottom:4px}
.upload-sub{font-size:12px;color:var(--txt-3)}
.upload-progress-host{display:flex;flex-direction:column;gap:8px;margin-bottom:14px}
.upload-progress-top{display:flex;align-items:center;gap:10px;margin-bottom:4px}
.upload-item{display:grid;grid-template-columns:28px 1fr auto 110px 54px auto;gap:10px;align-items:center;background:var(--bg-2);border:1px solid var(--line);border-radius:10px;padding:10px 12px;font-size:12px}
.upload-item .up-check{justify-self:center}
.upload-item .up-name{color:var(--txt);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.upload-item .up-size{color:var(--txt-3)}
.upload-item .up-bar{height:6px;background:#e2e8f0;border-radius:3px;overflow:hidden}
.upload-item .up-bar-inner{height:100%;background:var(--accent-grad);border-radius:3px;transition:width .2s}
.upload-item .up-status{color:var(--accent);font-weight:600}
.upload-item .up-actions{display:flex;align-items:center;gap:6px}
.upload-item .up-actions .btn{height:26px;padding:0 8px;font-size:11px}
/* 素材网格 */
.media-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:14px}
.media{background:var(--bg-2);border:1px solid var(--line);border-radius:12px;overflow:hidden;position:relative;cursor:pointer;transition:.15s}
.media:hover{border-color:var(--accent);box-shadow:0 6px 16px rgba(79,70,229,.12)}
.media.on{border-color:var(--brand);box-shadow:0 0 0 2px rgba(37,99,235,.30),0 8px 20px rgba(37,99,235,.18)}
.media .media-check{position:absolute;top:8px;left:8px;z-index:2;background:rgba(255,255,255,.85);border-radius:5px;padding:3px}
.media .thumb{height:104px;background:linear-gradient(135deg,#f1f5f9,#e2e8f0);display:flex;align-items:center;justify-content:center;font-size:30px;color:var(--txt-3)}
.media .cap{padding:9px 11px;font-size:12px;color:var(--txt-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* 计划下素材子表 */
.material-panel{margin-top:14px;border:1px solid var(--line);border-radius:var(--radius);background:var(--bg-2);padding:14px}
.material-panel .mp-head{display:flex;align-items:center;gap:10px;margin-bottom:10px;font-size:13px;color:var(--txt-2);flex-wrap:wrap}
.material-panel .mp-head b{color:var(--txt)}
.material-panel .mp-head .spacer{flex:1}
.material-panel .mp-head .sel-count{font-size:13px;color:var(--txt-2)}

/* ---------- 管理员后台覆盖层 ---------- */
.admin-overlay{position:fixed;inset:0;background:rgba(15,23,42,.55);backdrop-filter:blur(6px);z-index:60;display:flex;align-items:center;justify-content:center;animation:fade .15s ease}
.admin-box{width:min(1040px,96vw);height:min(86vh,860px);background:var(--panel);border:1px solid var(--line);border-radius:18px;box-shadow:0 24px 60px rgba(15,23,42,.18);display:flex;flex-direction:column;overflow:hidden}
/* v2026100919b #859：管理后台头部改系统蓝渐变（与各弹窗 modal-head 同一套蓝），标题与关闭按钮反白 */
.admin-head{display:flex;align-items:center;justify-content:space-between;padding:16px 22px;border-bottom:0;background:linear-gradient(135deg,#2563eb,#3b82f6)}
.admin-head .at{font-size:16px;font-weight:700;color:#fff;letter-spacing:.5px}
.admin-head .hbtn{color:#fff;background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.45);box-shadow:none}
.admin-head .hbtn:hover{background:rgba(255,255,255,.26);border-color:#fff;color:#fff;box-shadow:none}
.admin-tabs{display:flex;gap:4px;padding:12px 22px 0;border-bottom:1px solid var(--line);flex-wrap:wrap}
.admin-tab{padding:9px 15px;font-size:13px;font-weight:600;color:var(--txt-2);background:transparent;border:0;border-bottom:2px solid transparent;cursor:pointer;transition:.15s}
.admin-tab:hover{color:var(--txt)}
.admin-tab.active{color:var(--brand);border-bottom-color:var(--brand)}
.admin-body{flex:1;overflow:auto;padding:22px}
.admin-foot{padding:14px 22px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:10px}
.admin-body .gbox{background:var(--bg-2);border:1px solid var(--line);border-radius:14px;padding:16px}
.admin-body .gbox-h{font-size:14px;font-weight:700;margin-bottom:12px;color:var(--txt)}
.admin-body input[type=radio]{width:16px;height:16px;accent-color:var(--brand);cursor:pointer}
.admin-body .ck:has(input[type=radio]){cursor:pointer}

/* 管理员后台 — 员工表格 */
.emp-table{width:100%;border-collapse:collapse;font-size:13px}
.emp-table thead th{background:var(--panel-2);color:var(--txt-2);font-weight:600;text-align:left;padding:11px 13px;border-bottom:1px solid var(--line);white-space:nowrap}
.emp-table tbody td{padding:10px 13px;border-bottom:1px solid var(--line-soft);color:var(--txt);white-space:nowrap}
.emp-toolbar{display:flex;gap:8px;align-items:center;margin-bottom:14px}
.emp-toolbar .spacer{flex:1}

/* ============ 批量建计划 6 步向导 ============ */
.bstepbar{display:flex;align-items:center;gap:6px;margin-bottom:20px;flex-wrap:wrap}
.bstep{display:flex;align-items:center;gap:8px;padding:7px 14px;border-radius:9px;background:var(--bg-2);border:1px solid var(--line);color:var(--txt-2);font-size:13px;font-weight:600;cursor:pointer;transition:.15s;user-select:none;position:relative}
.bstep:hover{background:#e0f2fe;border-color:#7dd3fc;color:#0369a1;box-shadow:0 2px 8px rgba(14,165,233,.12);transform:translateY(-1px)}
.bstep:active{transform:translateY(1px)}
.bstep.active{background:var(--brand);color:#fff;border-color:var(--brand-d);font-weight:700;cursor:default;box-shadow:0 6px 16px rgba(37,99,235,.30)}
.bstep.active .bnum{background:rgba(255,255,255,.25);color:#fff}
.bstep.done{background:#f0fdf4;color:#15803d;border-color:#86efac;box-shadow:0 3px 10px rgba(22,163,74,.10)}
.bstep.done .bnum{background:#bbf7d0;color:#15803d}
.bstep .bnum{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:var(--panel-2);font-size:12px}
.bflow{display:flex;align-items:center;gap:10px;margin-top:10px}
.bflow .spacer{flex:1}
.bflow .hint{font-size:12px;color:var(--txt-3)}
.bcard{background:var(--bg-2);border:1px solid var(--line);border-radius:14px;padding:18px;margin-bottom:14px}
.bcard-h{font-size:15px;font-weight:700;margin-bottom:10px;color:var(--txt)}
/* 计划类型切换栏（全域 / 乘方），仅新建向导顶部 */
.ptype-bar{display:flex;align-items:center;gap:8px;margin:2px 0 14px;flex-wrap:wrap;padding:10px 12px;background:var(--panel-2);border:1px solid var(--line);border-radius:11px}
.ptype-label{font-weight:600;color:var(--txt);font-size:13px;white-space:nowrap}
.ptype-btn{border:1px solid var(--line);background:#fff;color:var(--txt-2);padding:6px 15px;border-radius:8px;cursor:pointer;font-size:13px;font-weight:600;transition:.15s;box-shadow:0 1px 2px rgba(15,23,42,.04)}
.ptype-btn:hover{border-color:var(--brand);color:var(--brand);background:#eff6ff;transform:translateY(-1px);box-shadow:0 4px 12px rgba(37,99,235,.12)}
.ptype-btn:active{transform:translateY(0)}
.ptype-btn.on{background:var(--green);color:#fff;border-color:transparent;box-shadow:0 4px 12px rgba(22,163,74,.25)}
.ptype-btn.on:hover{background:var(--green);color:#fff}
.ptype-tip{color:var(--txt-3);font-size:12px;margin-left:2px}
.btoolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:10px 0}
.btoolbar .spacer{flex:1}
.bin{height:38px;background-color:#f8fafc;border:1px solid var(--line);border-radius:9px;color:var(--txt);padding:0 12px;font-size:13px;outline:none}
/* 下拉型 .bin（如商品分页下拉）沿用统一箭头 */
select.bin{background-color:#f8fafc;padding:0 32px 0 12px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 11px center;background-size:12px 8px}
.bin:focus{border-color:var(--accent)}
.btab{width:100%;border-collapse:collapse;font-size:13px}
.btab thead th{position:sticky;top:0;z-index:2;background:var(--panel-2);color:var(--txt-2);font-weight:600;text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);white-space:nowrap}
.btab tbody td{padding:9px 12px;border-bottom:1px solid var(--line-soft);white-space:nowrap;color:var(--txt)}
.btab tbody tr{cursor:pointer}
.btab tbody tr:hover{background:#f1f5f9}
.c-check{width:42px;text-align:center}
.ck{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--txt-2);cursor:pointer}
.muted{color:var(--txt-3);font-size:12px}
.badge{display:inline-flex;align-items:center;padding:5px 11px;border-radius:20px;background:#e0e7ff;color:#3730a3;font-size:12px;font-weight:600}
/* 账户切换条（横向按钮，现第2/3步已改为纵向列表，保留供其它场景复用） */
.aswitch{display:flex;align-items:flex-start;gap:10px;margin:6px 0 12px;flex-wrap:wrap}
.as-lbl{font-size:13px;color:var(--txt-2);padding-top:5px;white-space:nowrap}
.as-btns{display:flex;flex-wrap:wrap;gap:6px;flex:1;background:#f8fafc;border:1px solid var(--line);border-radius:8px;padding:6px}
.acbtn{padding:5px 12px;border:1px solid var(--line);border-radius:5px;background:#ffffff;color:var(--txt);font-size:12px;cursor:pointer;transition:.15s;box-shadow:0 1px 2px rgba(15,23,42,.04)}
.acbtn:hover{border-color:var(--accent);background:#eef2ff;transform:translateY(-1px);box-shadow:0 4px 12px rgba(79,70,229,.12)}
.acbtn:active{transform:translateY(0)}
.acbtn.on{background:var(--brand);color:#fff;border-color:var(--brand-d);font-weight:700;box-shadow:0 4px 12px rgba(37,99,235,.25)}

/* 第2/3步：账户竖列侧边栏 + 右侧内容 */
.acct-layout{display:flex;gap:14px;align-items:flex-start;min-height:320px}
.acct-layout-align{align-items:stretch}
.acct-sidebar{width:180px;flex:0 0 180px;background:var(--bg-2);border:1px solid var(--line);border-radius:12px;overflow:hidden;display:flex;flex-direction:column;max-height:520px;overflow:auto}
.acct-layout-align .acct-sidebar{max-height:none;align-self:stretch}
.acct-sidebar-item{padding:12px 14px;border-bottom:1px solid var(--line-soft);cursor:pointer;transition:.15s}
.acct-sidebar-item:hover{background:#f1f5f9}
.acct-sidebar-item.on{background:#eff6ff;border-left:3px solid var(--brand);padding-left:11px}
.acct-sidebar-item .asi-name{font-size:13px;font-weight:600;color:var(--txt);margin-bottom:3px}
.acct-sidebar-item .asi-meta{font-size:11px;color:var(--txt-3)}
.acct-sidebar-item .asi-meta-warn{color:#f87171;font-weight:600}
/* v2026100102：第③步账户条 ✕（移除该账户） */
.acct-sidebar-item .asi-name{display:flex;align-items:flex-start;gap:6px}
.acct-sidebar-item .asi-name .asi-x{margin-left:auto;flex:0 0 auto;width:18px;height:18px;line-height:16px;padding:0;border:1px solid var(--line,#e2e8f0);border-radius:50%;background:var(--panel,#fff);color:var(--txt-3,#94a3b8);font-size:11px;cursor:pointer;text-align:center}
.acct-sidebar-item .asi-name .asi-x:hover{background:#fee2e2;border-color:#fca5a5;color:#dc2626}
.acct-main{flex:1;min-width:0}
.acct-layout-align .acct-main{display:flex;flex-direction:column}
.acct-layout-align .acct-main .table-wrap{flex:1}
/* 商品三步布局：账户侧边栏 + 商品表 + 候选区 */
.prod-layout{display:flex;gap:14px;align-items:flex-start}
.prod-layout .acct-sidebar{max-height:480px}
.prod-layout .prod-table-wrap{flex:1;min-width:0}
.prod-layout .sel-panel{width:280px;flex:0 0 280px;background:var(--bg-2);border:1px solid var(--line);border-radius:10px;padding:12px;max-height:480px;overflow:auto}
/* 第2/3步旧纵向向下列表（保留兼容） */
.acct-list{display:flex;flex-direction:column;gap:14px}
.acct-section{background:var(--bg-2);border:1px solid var(--line);border-radius:14px;overflow:hidden}
.acct-section-h{display:flex;align-items:center;gap:12px;padding:12px 14px;background:var(--panel-2);border-bottom:1px solid var(--line);flex-wrap:wrap}
.acct-section-h .as-name{font-size:14px;font-weight:700;color:var(--txt)}
.acct-section-h .as-meta{font-size:12px;color:var(--txt-3)}
.acct-section-h .spacer{flex:1}
.acct-section-h .mini-btn{height:28px;padding:0 10px;font-size:12px}
.acct-section-body{padding:12px 14px}
.acct-section-body .empty{padding:20px;text-align:center;color:var(--txt-3);font-size:13px}

/* 商品选择左右布局 */
.prod-wrap{display:grid;grid-template-columns:1fr 320px;gap:14px;align-items:start}
.sel-panel{background:var(--bg-2);border:1px solid var(--line);border-radius:10px;padding:12px}
.sp-h{font-size:13px;font-weight:700;color:#1d4ed8;margin-bottom:8px}
.sel-list{max-height:360px;overflow:auto}
.sel-item{font-size:13px;color:var(--txt);padding:8px 10px;border-radius:6px;background:#f8fafc;border:1px solid var(--line-soft);margin-bottom:6px}
.sel-item .si-row{display:flex;align-items:center;gap:8px;justify-content:space-between}
.sel-item .si-name{font-weight:600}
.sel-item .si-id{color:var(--txt-3);font-size:12px}
.pr-img{width:88px}
.pr-img .img{width:72px;height:72px;border-radius:10px;background:linear-gradient(135deg,#e2e8f0,#f1f5f9);display:flex;align-items:center;justify-content:center;font-size:28px;color:var(--txt-3);overflow:hidden}
.pr-img .img img{width:100%;height:100%;object-fit:cover}
/* 素材网格 */
.mat-tabs{display:flex;gap:6px;margin:8px 0}
.mtab{padding:7px 13px;font-size:13px;border:1px solid var(--line);border-radius:9px;background:var(--panel-2);color:var(--txt-2);cursor:pointer}
.mtab.on{background:var(--brand);color:#fff;border-color:var(--brand-d);box-shadow:0 4px 12px rgba(37,99,235,.25)}
.vgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:10px;margin:10px 0}
.vcell{border:2px solid var(--line);border-radius:10px;overflow:hidden;cursor:pointer;transition:.15s;background:var(--bg-2)}
.vcell:hover{border-color:var(--accent);box-shadow:0 5px 14px rgba(79,70,229,.12)}
.vcell.on{border-color:var(--brand);box-shadow:0 0 0 2px rgba(37,99,235,.30),0 6px 16px rgba(37,99,235,.18)}
.vthumb{position:relative;height:96px;background:linear-gradient(135deg,#f1f5f9,#e2e8f0);display:flex;align-items:center;justify-content:center;font-size:22px;color:var(--txt-3)}
.vthumb .vposter{width:100%;height:100%;object-fit:cover;display:block}
.vthumb .vbadge{position:absolute;left:4px;top:4px;background:rgba(0,0,0,.6);color:#fff;font-size:10px;line-height:1;padding:3px 5px;border-radius:4px;pointer-events:none}
/* v2026092101：千川素材标记角标（优质/首发=绿；暗水印/搬运=红），右上角 */
.vthumb .vtag{position:absolute;right:4px;top:4px;font-size:10px;line-height:1;padding:3px 5px;border-radius:4px;pointer-events:none;color:#fff}
.vthumb .vtag-good{background:rgba(22,163,74,.88)}
.vthumb .vtag-bad{background:rgba(220,38,38,.88)}
/* v2026092101：素材工具栏「优质/首发」筛选按键激活态（对齐 mtab.on） */
.btoolbar .ftag{font-size:12px;padding:4px 10px;border-radius:999px;border:1px solid var(--line,#e2e8f0);background:#fff;color:var(--txt-2)}
.btoolbar .ftag.on{background:var(--brand);border-color:var(--brand-d);color:#fff;box-shadow:0 4px 12px rgba(37,99,235,.25)}
/* v2026092107：翻页加载提示条（保留上一页素材，避免「点下一页像没反应」） */
.mat-loading{margin:6px 0 4px;padding:7px 12px;border-radius:8px;background:#eff6ff;border:1px solid #bfdbfe;color:#1d4ed8;font-size:13px}
@keyframes matload{0%{opacity:.45}50%{opacity:1}100%{opacity:.45}}
.mat-loading{animation:matload 1.1s ease-in-out infinite}
/* v2026091913：素材放大预览按钮 + 灯箱 */
.vzoom{position:absolute;right:5px;bottom:5px;width:24px;height:24px;border-radius:8px;display:flex;align-items:center;justify-content:center;background:rgba(15,23,42,.5);color:#fff;font-size:12px;cursor:pointer;z-index:2;line-height:1}
.vzoom:hover{background:rgba(37,99,235,.9)}
.mat-lightbox{position:fixed;inset:0;z-index:95;display:flex;align-items:center;justify-content:center}
.mlb-mask{position:absolute;inset:0;background:rgba(15,23,42,.72);backdrop-filter:blur(3px)}
.mlb-body{position:relative;max-width:min(940px,94vw);max-height:92vh;display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--line);border-radius:16px;overflow:hidden;box-shadow:0 24px 60px rgba(15,23,42,.32)}
.mlb-head{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid var(--line)}
.mlb-name{flex:1;font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mlb-idx{font-size:12px;color:var(--txt-2);flex:0 0 auto}
.mlb-x{background:transparent;border:0;font-size:20px;line-height:1;color:var(--txt-2);cursor:pointer}
.mlb-x:hover{color:var(--txt)}
.mlb-stage{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;background:#0f172a;overflow:auto}
.mlb-stage img{max-width:100%;max-height:68vh;object-fit:contain;display:block}
.mlb-foot{display:flex;align-items:center;gap:8px;padding:10px 14px;border-top:1px solid var(--line)}
.vcap{font-size:11px;color:var(--txt-2);padding:6px 7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bpagebar{display:flex;align-items:center;gap:10px;margin:6px 0;font-size:13px;flex-wrap:wrap}
/* 第④步：素材与标题左右分栏 */
.mat-title-wrap{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start;margin-top:10px}
.mat-left{background:var(--bg-2);border:1px solid var(--line);border-radius:12px;padding:14px}
.mat-right{background:var(--bg-2);border:1px solid var(--line);border-radius:12px;padding:14px;display:flex;flex-direction:column}
.mat-right .ttext{flex:1;min-height:260px}
/* 标题框 */
.ttext{width:100%;min-height:210px;background:#f8fafc;border:1px solid var(--line);border-radius:10px;color:var(--txt);padding:12px;font-size:13px;outline:none;resize:vertical;line-height:1.7}
.ttext:focus{border-color:var(--accent)}
.ttext.err{border-color:var(--red);box-shadow:0 0 0 3px rgba(220,38,38,.12)}
input.err,select.err{border-color:var(--red)!important;box-shadow:0 0 0 3px rgba(220,38,38,.12)!important}
.input-err{color:var(--red);font-size:12px;margin:6px 0 4px;min-height:16px}
.title-err{color:var(--red);font-size:12px;margin:6px 0 4px;min-height:16px}
/* 创意标题违规词检测 */
.title-viol{font-size:12px;line-height:1.9;margin:6px 0 2px}
.title-viol.on{color:#dc2626}
.title-viol .tv-ico{color:#dc2626;font-weight:600}
.tv-chip{display:inline-block;background:#fff1f0;border:1px solid #ffccc7;color:#cf1322;border-radius:6px;padding:1px 7px;margin:2px 4px 2px 0;font-size:12px}
.tv-chip i{font-style:normal;color:#8c8c8c;margin-left:4px;font-size:11px}
.ttext.viol{border-color:#dc2626;box-shadow:0 0 0 3px rgba(220,38,38,.12)}
.form-input.viol{border-color:#dc2626!important;box-shadow:0 0 0 3px rgba(220,38,38,.12)!important}
.titles-box .hint{margin-bottom:8px}
/* 投放设置：两个分组 */
.gboxes{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.gbox{background:var(--bg-2);border:1px solid var(--line);border-radius:14px;padding:16px}
.gbox-h{font-size:14px;font-weight:700;margin-bottom:12px;color:var(--txt)}
.frow{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.frow > label{width:118px;flex:0 0 118px;font-size:13px;color:var(--txt-2)}
.frow .fin{flex:1;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.fin input[type=number],.fin input[type=text],.fin input[type=date]{height:38px;background:#f8fafc;border:1px solid var(--line);border-radius:9px;color:var(--txt);padding:0 11px;font-size:13px;outline:none;min-width:120px}
.fin input[readonly]{background:#f1f5f9;color:var(--txt-2)}
.fin input[type=date]::-webkit-calendar-picker-indicator{filter:invert(0.3);cursor:pointer}
.quick-btns{display:flex;gap:4px;flex-wrap:wrap}
.quick-btns .qb{font-size:12px;color:var(--txt-3);padding:2px 9px;border-radius:5px;background:transparent;cursor:pointer}
.quick-btns .qb:hover{color:var(--accent-2);background:#e0f2fe}
.mini-btn{height:32px;padding:0 12px;border:1px solid #c7d2fe;background:#eef2ff;color:#1d4ed8;border-radius:7px;font-size:12px;font-weight:600;cursor:pointer;transition:.16s;box-shadow:0 1px 2px rgba(37,99,235,.06)}
.mini-btn:hover{background:#dbeafe;transform:translateY(-1px);box-shadow:0 5px 14px rgba(37,99,235,.16)}
.mini-btn:active{transform:translateY(0)}
.name-tpl{font-size:12px;color:var(--txt-3);background:#f8fafc;border:1px solid var(--line);border-radius:8px;padding:7px 10px;line-height:1.6}
.name-preview{width:100%;min-height:38px;background:#f8fafc;border:1px solid var(--line);border-radius:9px;color:var(--txt);padding:8px 11px;font-size:13px;display:flex;align-items:center}

/* ===== 悬停可读性兜底（B#4）：任何悬停态都保证文字清晰可见 ===== */
.btn-primary:hover,.hbtn-primary:hover,.bstep.active:hover,
.acbtn.on:hover,.mtab.on:hover,.nav-item.active:hover,.pill:hover{color:#fff !important}
.acbtn:hover,.hbtn:hover,.btn:hover{color:var(--txt) !important}
.bstep:hover{color:#0369a1 !important}
.bstep.done:hover{color:#15803d !important}
/* 原生下拉在展开时选项文字保持深色，避免悬停高亮看不清 */
select option{color:#1f2937;background:#fff}

/* 右键菜单 */
.row-ctx-menu{position:fixed;z-index:1000;background:var(--bg-2);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);padding:6px 0;min-width:160px}
.row-ctx-menu .ctx-item{padding:8px 14px;font-size:13px;color:var(--txt);cursor:pointer;white-space:nowrap}
.row-ctx-menu .ctx-item:hover{background:var(--line-soft);color:var(--accent)}

/* 上传成功状态 */
.up-status-ok{color:var(--green) !important;font-weight:600}

/* 批量修改标题弹窗：新标题列完整显示 */
.title-table{width:100%;table-layout:auto}
.title-table .col-old-title{max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.title-table .col-new-title{min-width:320px;width:40%}
.title-table .col-new-title input.nt{width:100%;min-width:300px}

/* 批量建计划：重点字段高亮（商品名、线下佣金率、退货率） */
.highlight-field{background:#fffbe6 !important;border-color:#faad14 !important;box-shadow:0 0 0 2px rgba(250,173,20,0.2) !important}
.highlight-field:focus{background:#fff7d6 !important;border-color:#ff8c00 !important;box-shadow:0 0 0 3px rgba(255,140,0,0.25) !important}

/* ROI 调整冷却状态 */
.roi-ready{display:inline-block;padding:2px 8px;border-radius:4px;background:#dcfce7;color:#166534;font-size:12px;font-weight:600;border:1px solid #86efac}
.roi-cooldown{display:inline-block;padding:2px 8px;border-radius:4px;background:var(--bg-3);color:#1f2329;font-size:12px}
.roi-cooldown.warn{background:rgba(255,77,79,0.12);color:#1f2329}
.roi-cooldown-warn{display:inline-block;margin-top:4px;padding:2px 6px;border-radius:4px;background:rgba(255,77,79,0.12);color:#cf1322;font-size:12px}

/* ---------- 数据报表 ---------- */
.report-host .section-title{margin-bottom:0}
/* 报表页：顶部区域固定，下方内容区内部滚动 */
.report-host{display:flex;flex-direction:column;height:calc(100vh - 96px);overflow:hidden}
#report-content{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden;padding:4px 6px 8px 0}
#report-content .report-section:first-child{margin-top:0}
#report-content .report-section{margin-top:16px;display:flex;flex-direction:column;flex:1;min-height:0}
.report-section-title{flex-shrink:0}
.report-hint{flex-shrink:0}
.report-section .table-wrap{flex:1;min-height:0;overflow:auto}
.report-metrics{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;margin:10px 0 14px}
.report-metrics--inline{flex:1 1 0;min-width:260px;display:grid;grid-template-columns:repeat(auto-fit,minmax(92px,1fr));gap:6px;margin:0}
.report-metric{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:9px 11px;box-shadow:0 1px 4px rgba(15,23,42,.04)}
.report-metrics--inline .report-metric{padding:6px 8px;border-radius:8px}
.report-metric-label{font-size:11px;color:var(--txt-2);margin-bottom:3px}
.report-metrics--inline .report-metric-label{font-size:10px;margin-bottom:2px}
.report-metric-value{font-size:17px;font-weight:700;color:var(--txt);line-height:1.15}
.report-metrics--inline .report-metric-value{font-size:14px}
.report-metric-sub{font-size:11px;color:var(--txt-3);margin-top:2px}
.report-controls-row{display:flex;align-items:stretch;gap:12px;flex-wrap:wrap;margin-top:8px}
.report-date-bar{flex:0 0 auto;display:flex;align-items:stretch;gap:8px;flex-wrap:wrap}
.report-date-bar .form-input{padding:6px 10px;border:1px solid #e2e8f0;border-radius:8px;font-size:13px;outline:none}
.report-date-bar .form-input:focus{border-color:#93c5fd}
.report-date-select{height:100%;padding:0 8px;border:1px solid var(--line);border-radius:8px;background:var(--panel);color:var(--txt);font-size:13px;outline:none}
.report-date-custom{display:flex;align-items:center;gap:8px}
.report-date-input{height:100%;padding:0 8px;border:1px solid var(--line);border-radius:8px;background:var(--panel);color:var(--txt);font-size:13px;outline:none}
.report-metrics--inline .report-metric{display:flex;flex-direction:column;justify-content:center}
/* v2026102215：赠款汇总单卡——紧凑自适应，不撑满整行，与其它指标卡统一 */
#grant-cost-box{flex:0 0 auto !important;min-width:0 !important;width:auto !important;margin:0 !important;display:flex !important;align-items:center}
#grant-cost-box .report-metric{min-width:118px;white-space:nowrap}
.report-section-title{font-size:15px;font-weight:700;color:var(--txt);margin-bottom:10px;display:flex;align-items:center;gap:8px}
.report-section-title::before{content:"";width:4px;height:14px;background:var(--accent-grad);border-radius:2px}
.report-section-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:10px;position:relative}
.report-section-head-left{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.report-column-btn{padding:6px 12px;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--txt-2);font-size:13px;cursor:pointer;transition:all .15s;white-space:nowrap}
.report-column-btn:hover{border-color:var(--primary);color:var(--primary)}
.report-column-panel{width:260px;background:var(--panel);border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 24px rgba(15,23,42,.12);z-index:200;padding:12px;font-size:13px;color:var(--txt)}
.report-column-panel-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;font-weight:600}
.report-column-close{width:24px;height:24px;border:none;background:transparent;color:var(--txt-2);font-size:18px;cursor:pointer;border-radius:4px}
.report-column-close:hover{background:var(--bg-2);color:var(--txt)}
.report-column-actions{display:flex;gap:8px;margin-bottom:10px;flex-wrap:wrap}
.report-column-actions .btn{padding:4px 10px;font-size:12px}
.report-column-list{max-height:320px;overflow:auto;margin-bottom:10px}
.report-column-item{display:flex;align-items:center;gap:8px;padding:7px 8px;border-radius:6px;cursor:move;transition:background .15s}
.report-column-item:hover{background:var(--bg-2)}
.report-column-item.dragging{opacity:.5}
.report-column-item[data-draggable='false']{cursor:default}
.report-column-drag{color:var(--txt-3);cursor:grab;font-size:12px;letter-spacing:-1px;width:14px;text-align:center}
.report-column-sep{padding:6px 8px;font-size:11px;color:var(--txt-3);border-top:1px dashed var(--line);margin-top:4px}
.report-column-label{flex:1}
.report-column-save-tpl{display:flex;gap:8px;margin-bottom:8px}
.report-column-save-tpl input{flex:1;min-width:0;padding:5px 8px;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--txt);font-size:12px}
.report-column-template-list{border-top:1px solid var(--line);padding-top:10px}
.report-column-template-title{font-size:12px;color:var(--txt-2);margin-bottom:6px}
.report-column-template-item{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:5px 0}
.report-column-template-item button{padding:3px 8px;font-size:12px;border:1px solid var(--line);border-radius:4px;background:var(--panel);color:var(--txt-2);cursor:pointer}
.report-column-template-item button:hover{border-color:var(--primary);color:var(--primary)}
.report-section-head .report-section-title{margin-bottom:0}
.report-search-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.report-search-bar-inline{flex-wrap:nowrap}
.report-search-input{min-width:160px;width:200px;padding:6px 10px;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--txt);font-size:13px;outline:none;transition:border-color .15s}
.report-search-input:focus{border-color:var(--primary)}
.report-search-clear{padding:6px 12px;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--txt-2);font-size:13px;cursor:pointer;transition:all .15s;white-space:nowrap}
.report-search-clear:hover{border-color:var(--primary);color:var(--txt)}
.report-hint{font-size:12px;color:var(--txt-2);background:var(--bg-2);padding:8px 12px;border-radius:6px;margin-bottom:10px;line-height:1.6}
/* v2026091908 #5：汇总页「时间选择器 + 数据统计」同一行（此前两块各占一行、纵向过高） */
.summary-head-row{display:flex;align-items:flex-start;gap:12px;flex-wrap:wrap;margin-top:10px}
.summary-head-row .report-date-bar{flex:0 0 auto;margin-top:0}
.summary-head-row .report-metrics--inline{flex:1 1 320px;min-width:280px;margin-top:0}
/* v2026091912：商品汇总时间选择框与右侧数据框同尺寸（拉伸到同一行高） */
.summary-head-row{align-items:stretch}
.summary-head-row .report-date-bar{align-items:stretch}
.summary-head-row .report-date-bar .rdd{height:auto;min-height:34px}
.summary-head-row .report-date-bar .report-date-input{height:auto}
/* v2026091912：计划列表拖拽框选时避免选中文字 */
#plist-table tbody{user-select:none}
/* v2026091913：商品汇总计划明细行拖拽框选时避免选中文字 */
.summary-plan-table tbody{user-select:none}
.report-page-head{margin-bottom:14px}
.report-page-head-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.report-date-btn{padding:5px 12px;border:1px solid var(--line);background:var(--panel);color:var(--txt-2);border-radius:6px;cursor:pointer;font-size:13px;transition:all .15s}
.report-date-btn:hover{border-color:var(--primary);color:var(--txt)}
.report-date-btn.active{background:var(--primary);border-color:var(--primary);color:#fff;font-weight:600}
.report-refresh-btn{margin-left:auto}
.report-tabs{display:flex;align-items:center;gap:8px;border-bottom:1px solid var(--line);margin:18px 0 14px;padding-bottom:2px}
.report-tab{padding:7px 16px;border:1px solid transparent;background:transparent;color:var(--txt-2);border-radius:8px 8px 0 0;cursor:pointer;font-size:14px;transition:all .15s;position:relative;top:1px}
.report-tab:hover{color:var(--txt);background:rgba(99,102,241,.06)}
.report-tab.active{border-color:var(--line);border-bottom-color:var(--panel);background:var(--panel);color:var(--primary);font-weight:600}
.report-progress-wrap{margin:18px 0 6px}
.report-progress-bar{height:8px;background:var(--bg-2);border-radius:6px;overflow:hidden}
.report-progress-fill{height:100%;width:0;background:var(--primary);transition:width .4s ease}
.report-progress-text{font-size:12px;color:var(--txt-2);margin-top:6px}
/* v2026092109：头部固定拉取进度条（刷新按钮旁）——常驻占位、visibility 切换，出现/消失不推挤页面 */
.hdr-prog{display:inline-flex;align-items:center;gap:6px;width:200px;height:22px;vertical-align:middle;flex:none}
.hdr-prog .hp-bar{flex:1;height:8px;border-radius:999px;background:#e2e8f0;overflow:hidden}
.hdr-prog .hp-fill{display:block;height:100%;width:0%;border-radius:999px;background:linear-gradient(90deg,#2563eb,#22d3ee);transition:width .3s}
.hdr-prog .hp-txt{font-size:12px;color:var(--txt-2);white-space:nowrap;min-width:74px;text-align:right}
.report-table{width:100%;border-collapse:separate;border-spacing:0;font-size:13px}
.report-table th{position:sticky;top:0;z-index:2;background:#f8fafc;color:var(--txt-2);font-weight:600;text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);white-space:nowrap}
.report-table td{padding:10px 12px;border-bottom:1px solid var(--line-soft);color:var(--txt);max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.report-table tr:hover td{background:#f8fafc}
.report-table .empty{text-align:center;color:var(--txt-3);padding:40px 12px}
.report-table td.report-calc{max-width:320px;white-space:normal;line-height:1.45;color:var(--txt-2);font-size:12px}
.report-sort-header{cursor:pointer;user-select:none;white-space:nowrap}
.report-sort-header:hover{background:#eef2f7}
.report-sort-header.active{color:var(--primary)}
.report-sort-arrow{font-size:11px;margin-left:4px;color:var(--txt-3)}
.report-sort-header.active .report-sort-arrow{color:var(--primary)}
.report-copyable{cursor:context-menu}
.report-copyable:hover{color:var(--primary)}
.report-group-row{background:#f8fafc;font-weight:600}
.report-group-row:hover{background:#eef2f7}
.report-group-row.open{background:#f0fdf9}
.report-group-toggle{display:inline-block;width:18px;text-align:center;color:var(--txt-3);font-size:12px;margin-right:4px}
.report-detail-row{background:transparent}
.report-detail-cell{padding:0 0 0 36px;background:var(--bg-2);border-bottom:1px solid var(--line)}
.report-detail-table{margin:8px 0;background:transparent;box-shadow:none;border:none}
.report-detail-table th{position:sticky;top:0;z-index:2;background:#e2e8f0;font-size:12px;padding:8px 10px}
.report-detail-table td{padding:8px 10px;font-size:12px}
.report-copy-menu{position:fixed;z-index:10000;background:var(--panel);border:1px solid var(--line);border-radius:8px;box-shadow:0 8px 24px rgba(15,23,42,.15);padding:6px 0;min-width:160px}
.report-copy-item{padding:8px 14px;font-size:13px;color:var(--txt);cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.report-copy-item:hover{background:var(--bg-3)}
.profit-positive{color:var(--green);font-weight:600}
.profit-negative{color:var(--red);font-weight:600}
.report-loading .empty{color:var(--txt-3)}
.report-product-img-cell{width:56px;padding:6px 8px!important;text-align:center;vertical-align:middle}
.report-product-img{width:44px;height:44px;object-fit:cover;border-radius:6px;border:1px solid var(--line);background:var(--panel-2);display:inline-block}
.report-product-img-empty{display:inline-flex;align-items:center;justify-content:center;color:var(--txt-3);font-size:12px}

/* ===================================================================
   弹窗多元彩色化 — 渐变头部 / 彩色标签 / 彩色右键与复制菜单
   =================================================================== */
.modal{border-radius:18px}
/* 所有带 variant 的弹窗：头部白字、关闭按钮反白 */
.modal[class*="modal--"] .modal-head{color:#fff;border-bottom:0}
.modal[class*="modal--"] .modal-title{color:#fff}
.modal[class*="modal--"] .modal-close{color:rgba(255,255,255,.85)}
.modal[class*="modal--"] .modal-close:hover{color:#fff;background:rgba(255,255,255,.20);border-radius:8px}

/* 各类型渐变头部 */
.modal--roi .modal-head{background:#2563eb}
.modal--budget .modal-head{background:linear-gradient(135deg,#2563eb,#3b82f6)}
.modal--title .modal-head{background:linear-gradient(135deg,#2563eb,#3b82f6)}
.modal--boost .modal-head{background:linear-gradient(135deg,#ea580c,#f59e0b)}
.modal--admin .modal-head{background:linear-gradient(135deg,#e11d48,#f43f5e)}
.modal--pass .modal-head{background:linear-gradient(135deg,#0d9488,#14b8a6)}
.modal--org .modal-head{background:linear-gradient(135deg,#0891b2,#06b6d4)}
.modal--auth .modal-head{background:linear-gradient(135deg,#0284c7,#0ea5e9)}
.modal--employee .modal-head{background:linear-gradient(135deg,#2563eb,#3b82f6)}
.modal--log .modal-head{background:linear-gradient(135deg,#4f46e5,#6366f1)}
.modal--json .modal-head{background:linear-gradient(135deg,#475569,#64748b)}
.modal--default .modal-head{background:linear-gradient(135deg,#6366f1,#8b5cf6)}

/* 各类型柔和彩底（非纯白） */
.modal--roi .modal-body{background:linear-gradient(180deg,#faf5ff,#ffffff)}
.modal--budget .modal-body{background:linear-gradient(180deg,#eff6ff,#ffffff)}
.modal--title .modal-body{background:linear-gradient(180deg,#eff6ff,#ffffff)}
.modal--boost .modal-body{background:linear-gradient(180deg,#fff7ed,#ffffff)}
.modal--admin .modal-body{background:linear-gradient(180deg,#fff1f2,#ffffff)}
.modal--pass .modal-body{background:linear-gradient(180deg,#f0fdfa,#ffffff)}
.modal--org .modal-body{background:linear-gradient(180deg,#ecfeff,#ffffff)}
.modal--auth .modal-body{background:linear-gradient(180deg,#f0f9ff,#ffffff)}
.modal--employee .modal-body{background:linear-gradient(180deg,#eff6ff,#ffffff)}
.modal--log .modal-body{background:linear-gradient(180deg,#eef2ff,#ffffff)}
.modal--json .modal-body{background:linear-gradient(180deg,#f8fafc,#ffffff)}
.modal--default .modal-body{background:linear-gradient(180deg,#f5f3ff,#ffffff)}
.modal--danger .modal-body{background:linear-gradient(180deg,#fef2f2,#ffffff)}

/* ---------- 「我的素材库 Cookie」弹窗（多元彩色化：翠绿主题） ---------- */
.modal.modal--cookie{width:min(620px,94vw)}
.modal--cookie .modal-head{background:linear-gradient(135deg,#059669,#34d399);padding:16px 20px}
.modal--cookie .modal-body{background:linear-gradient(180deg,#ecfdf5,#ffffff)}
.ck-head{display:flex;align-items:center;gap:12px}
.ck-ico{width:38px;height:38px;flex:0 0 auto;display:flex;align-items:center;justify-content:center;font-size:20px;border-radius:11px;background:rgba(255,255,255,.22);border:1px solid rgba(255,255,255,.30)}
.ck-sub{margin-top:3px;font-size:12px;font-weight:400;color:rgba(255,255,255,.88)}
.ck-status{display:flex;align-items:center;gap:10px;padding:11px 14px;border-radius:12px;margin-bottom:14px;font-size:13px}
.ck-status.ok{background:#d1fae5;border:1px solid #6ee7b7;color:#047857}
.ck-status.warn{background:#fff7ed;border:1px solid #fed7aa;color:#c2410c}
.ck-dot{width:9px;height:9px;flex:0 0 auto;border-radius:50%;background:currentColor;box-shadow:0 0 0 4px rgba(255,255,255,.65)}
.ck-status-txt{flex:1;min-width:0;font-weight:600;word-break:break-all}
.ck-badge{flex:0 0 auto;font-size:12px;font-weight:700;color:#fff;background:linear-gradient(135deg,#059669,#34d399);padding:3px 10px;border-radius:999px}
.ck-badge-warn{background:linear-gradient(135deg,#ea580c,#f59e0b)}
.ck-steps{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}
.ck-step{display:flex;align-items:flex-start;gap:10px;background:#fff;border:1px solid #d1fae5;border-radius:11px;padding:10px 12px}
.ck-n{width:22px;height:22px;flex:0 0 auto;border-radius:50%;background:linear-gradient(135deg,#059669,#34d399);color:#fff;font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center}
.ck-step-txt{display:flex;flex-direction:column;gap:2px;font-size:12.5px;line-height:1.55;color:var(--txt-2)}
.ck-step-txt b{font-size:13px;font-weight:700;color:#065f46}
.ck-label{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:700;color:#065f46;margin-bottom:8px}
.ck-label-tip{margin-left:auto;font-size:12px;font-weight:500;color:#94a3b8}
.ck-textarea{width:100%;min-height:132px;box-sizing:border-box;background:#fff;border:1px solid #a7f3d0;border-radius:11px;color:var(--txt);padding:11px 12px;font-size:12.5px;font-family:ui-monospace,Menlo,Consolas,monospace;line-height:1.65;outline:none;resize:vertical;transition:.15s}
.ck-textarea:focus{border-color:#10b981;box-shadow:0 0 0 3px rgba(16,185,129,.14)}
.ck-meta{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:8px;font-size:12px}
.ck-len{color:#94a3b8;font-weight:600}
.ck-check{font-weight:600}
.ck-check.ok{color:#047857}
.ck-check.bad{color:#c2410c}
.ck-note{margin-top:8px;font-size:12px;line-height:1.6;color:#64748b;background:#f8fafc;border-left:3px solid #10b981;border-radius:8px;padding:8px 11px}

/* 计划操作日志弹窗 */
.log-plan-meta{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}
.log-meta-chip{font-size:12px;padding:6px 12px;border-radius:999px;background:#eef2ff;color:#4338ca;border:1px solid #c7d2fe;font-weight:600}
.log-meta-chip.log-chip-name{background:#faf5ff;color:#7c3aed;border-color:#e9d5ff}
.plan-log-body{max-height:58vh;overflow:auto}
.log-table{width:100%;border-collapse:collapse;font-size:13px}
.log-table th{position:sticky;top:0;background:#eef2ff;color:#4338ca;font-weight:700;padding:10px 12px;text-align:left;border-bottom:2px solid #c7d2fe}
.log-table td{padding:10px 12px;border-bottom:1px solid var(--line);color:var(--txt);vertical-align:top}
.log-table tbody tr:nth-child(even){background:rgba(99,102,241,.04)}
.log-table tbody tr:hover{background:rgba(99,102,241,.09)}

/* 计划列表分页器（解决一次性渲染上千行导致滑动卡死） */
#plan-pager{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:12px;padding-top:10px;border-top:1px solid var(--line)}
#plan-pager .btn-xs{padding:6px 11px;font-size:12px;border:1px solid var(--line);background:#fff;color:var(--txt);border-radius:8px;cursor:pointer;transition:.15s}
#plan-pager .btn-xs:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}
#plan-pager .btn-xs.active{background:linear-gradient(135deg,#6366f1,#8b5cf6);color:#fff;border-color:transparent;font-weight:700}
#plan-pager .btn-xs:disabled{opacity:.4;cursor:not-allowed}
#plan-pager .pg-gap{color:var(--txt-3);padding:0 2px}
#plan-pager .pg-info{margin-left:auto;font-size:12px;color:var(--txt-2)}
/* 表格滚动性能优化：限定重排范围，避免长列表滑动卡顿 */
.grid{contain:content}
/* 拖拽多选时禁止选中文字，避免误触复制 */
#plan-grid tbody tr{-webkit-user-select:none;-moz-user-select:none;user-select:none}
#plan-grid tbody tr *{-webkit-user-select:none;-moz-user-select:none;user-select:none}
.log-time{color:var(--txt-2);font-variant-numeric:tabular-nums;white-space:nowrap}
.log-op{color:var(--txt);font-weight:600}
.log-detail{color:var(--txt-2)}
.log-loading,.log-empty{padding:30px;text-align:center;color:var(--txt-3);font-size:14px}
.log-tag{display:inline-block;padding:3px 12px;border-radius:999px;font-size:12px;font-weight:700;color:#fff}
.tag-roi{background:linear-gradient(135deg,#7c3aed,#a855f7)}
.tag-budget{background:linear-gradient(135deg,#059669,#10b981)}
.tag-title{background:linear-gradient(135deg,#2563eb,#3b82f6)}
.tag-status{background:linear-gradient(135deg,#0d9488,#14b8a6)}
.tag-delete{background:linear-gradient(135deg,#e11d48,#f43f5e)}
.tag-boost{background:linear-gradient(135deg,#ea580c,#f59e0b)}
.tag-default{background:linear-gradient(135deg,#64748b,#94a3b8)}

/* ---------- 批量修改日预算弹窗（参考蓝色多元UI） ---------- */
.modal.modal--budget{width:min(560px,94vw)}
.budget-top-banner{display:flex;align-items:center;gap:10px;background:#dbeafe;border:1px solid #bfdbfe;border-radius:12px;padding:12px 14px;margin-bottom:16px;color:#1e40af;font-size:14px;font-weight:500}
.budget-top-banner .icon{font-size:18px;flex:0 0 auto}
.budget-current{display:flex;align-items:baseline;gap:8px;background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:14px 16px;margin-bottom:16px;box-shadow:0 1px 2px rgba(15,23,42,.04)}
.budget-current-label{font-size:14px;color:#64748b;font-weight:500;white-space:nowrap}
.budget-current-value{font-size:18px;font-weight:700;color:#2563eb;word-break:break-all}
.budget-input-section{background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:16px;box-shadow:0 1px 2px rgba(15,23,42,.04)}
.budget-input-label{display:flex;align-items:center;gap:8px;font-size:15px;font-weight:700;color:#2563eb;margin-bottom:10px}
.budget-input-label .icon{font-size:18px}
.budget-input-wrap{position:relative;margin-bottom:12px}
.budget-input-wrap input{width:100%;height:48px;border:1px solid #cbd5e1;border-radius:10px;padding:0 14px;font-size:18px;font-weight:600;color:#1e293b;text-align:right;background:#f8fafc;outline:none;transition:border-color .2s,box-shadow .2s,background .2s}
.budget-input-wrap input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px rgba(59,130,246,.15);background:#fff}
.budget-input-wrap input.err{border-color:#ef4444;background:#fef2f2}
.budget-presets{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.budget-presets-label{font-size:13px;color:#64748b;margin-right:4px;white-space:nowrap}
.budget-chip{border:1px solid #e2e8f0;background:#fff;border-radius:8px;padding:6px 12px;font-size:13px;font-weight:600;color:#334155;cursor:pointer;transition:.15s}
.budget-chip:hover{border-color:#3b82f6;color:#2563eb;background:#eff6ff}
.budget-hint{display:flex;align-items:center;gap:6px;font-size:12px;color:#94a3b8}
.budget-hint .icon{font-size:14px}
.budget-btn-cancel{display:inline-flex;align-items:center;gap:6px;background:#fff;border:1px solid #e2e8f0;color:#475569}
.budget-btn-ok{display:inline-flex;align-items:center;gap:6px;background:linear-gradient(135deg,#2563eb,#3b82f6);border:0;color:#fff;box-shadow:0 8px 20px rgba(37,99,235,.30)}
/* 右键菜单彩色化 */
.row-ctx-menu{background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 14px 36px rgba(15,23,42,.20);padding:6px;min-width:184px;overflow:hidden;animation:fade .12s ease}
.row-ctx-menu .ctx-item{padding:9px 14px;font-size:13px;color:var(--txt);cursor:pointer;white-space:nowrap;border-radius:8px;transition:.15s}
.row-ctx-menu .ctx-item:hover{background:linear-gradient(90deg,#eef2ff,#faf5ff);color:#4338ca}
.row-ctx-menu .ctx-log{background:linear-gradient(90deg,#6366f1,#8b5cf6);color:#fff;font-weight:700;margin-bottom:2px}
.row-ctx-menu .ctx-log:hover{background:linear-gradient(90deg,#4f46e5,#7c3aed);color:#fff}
.row-ctx-menu .ctx-sep{height:1px;background:var(--line);margin:4px 6px}

/* 复制小菜单彩色化 */
.report-copy-menu{background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 12px 30px rgba(15,23,42,.18);padding:6px;min-width:180px;overflow:hidden;animation:fade .12s ease}
.report-copy-item{padding:9px 14px;font-size:13px;color:var(--txt);cursor:pointer;white-space:nowrap;border-radius:8px;transition:.15s}
.report-copy-item:hover{background:linear-gradient(90deg,#ecfeff,#eef2ff);color:#0e7490}

/* 计划汇总 — 滚动容器 */
.summary-scroll-wrap{flex:1;overflow:auto;position:relative;margin:0 -14px 0 -14px;padding:0 14px 14px 14px;min-height:0}

/* 计划汇总 — 分页（仅在表格底部保留） */
.summary-pagination{padding:14px 0 0 0}
.summary-pagination .summary-page-numbers .summary-page-btn{width:40px;min-width:40px;height:40px;padding:0;line-height:38px;text-align:center;border:1px solid #e2e8f1;background:#fff;color:#475569;font-size:15px;border-radius:8px;box-sizing:border-box;overflow:visible;font-weight:600}
.summary-pagination .summary-page-numbers .summary-page-btn:hover{background:#f1f5f9;border-color:#cbd5e1}
.summary-pagination .summary-page-numbers .summary-page-btn.active{background:#0d6efd;border-color:#0d6efd;color:#fff;font-weight:800;font-size:18px;box-shadow:none;letter-spacing:1px;text-shadow:0 0 2px rgba(255,255,255,.9),0 0 4px rgba(255,255,255,.6)}
.summary-pagination .summary-page-prev,.summary-pagination .summary-page-next{height:40px;padding:0 18px;line-height:38px;border:1px solid #e2e8f1;background:#fff;color:#334155;font-size:13px;border-radius:8px;box-sizing:border-box}
.summary-pagination .summary-page-prev:disabled,.summary-pagination .summary-page-next:disabled{color:#94a3b8;background:#f8fafc;cursor:not-allowed;opacity:1}
.summary-pagination .summary-page-size{height:40px;padding:2px 12px;border-radius:8px;border:1px solid #e2e8f1;font-size:13px;background:#fff;box-sizing:border-box}

/* 计划汇总 — 状态栏限流/陈旧提示 */
#summary-status.summary-status-stale{color:#b45309;background:#fffbeb;border-radius:6px;padding:2px 8px}
#summary-status.summary-status-very-stale{color:#c2410c;background:#fff7ed;border-radius:6px;padding:2px 8px;font-weight:700}

/* 计划汇总 — 商品展开计划明细（简约浅色无渐变主题） */
.summary-detail-row{display:none}
.summary-detail-row td{padding:0!important;border-bottom:none!important;background:transparent}
.summary-detail-card{margin:8px 0 14px 0;background:#fff;border-radius:10px;border:1px solid #e2e8f1;border-left:4px solid #94a3b8;box-shadow:0 4px 12px rgba(15,23,42,.06);overflow:hidden}
.summary-detail-head{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;background:#f8fafc;border-bottom:1px solid #e2e8f1}
.summary-detail-title{font-size:14px;font-weight:700;color:#334155}
.summary-detail-count{font-size:12px;color:#64748b;background:#fff;border:1px solid #e2e8f1;padding:2px 10px;border-radius:12px}
.summary-detail-body{padding:10px;overflow:visible;background:#fff}
.summary-plan-table{width:100%;table-layout:fixed;background:#fff;border-radius:8px;border:1px solid #e2e8f1;box-shadow:0 2px 6px rgba(15,23,42,.04)}
.summary-plan-table th{position:sticky;top:0;z-index:5;background:#f1f5f9;font-size:12px;font-weight:700;color:#475569;padding:8px 6px;border-bottom:1px solid #e2e8f1;white-space:nowrap}
.summary-plan-table td{padding:7px 6px;font-size:12px;color:#334155;border-bottom:1px solid #f1f5f9}
.summary-plan-table tbody tr:nth-child(odd){background:#fafafa}
.summary-plan-table tbody tr:nth-child(even){background:#fff}
.summary-plan-table tbody tr:hover td{background:#f1f5f9}
.summary-plan-table tbody tr.row-off td{background:#fff7ed}
.summary-plan-table tbody tr.row-off:hover td{background:#ffedd5}
.summary-plan-table tbody tr.selected td{background:#93c5fd}
/* v2026092329：商品汇总搜索计划ID定位——命中的计划明细行高亮（金黄色脉冲 2 次后保持淡金） */
.summary-plan-table tbody tr.summary-plan-hl td{background:#fff3bf !important;animation:summary-plan-hl-pulse 1.6s ease-in-out 2}
.summary-plan-table tbody tr.summary-plan-hl:hover td{background:#ffe58f !important}
/* v2026092330：高亮行同样可选中——选中后与普通选中行同款蓝色（覆盖高亮金色，停止脉冲） */
.summary-plan-table tbody tr.summary-plan-hl.selected td{background:#93c5fd !important;animation:none}
.summary-plan-table tbody tr.summary-plan-hl.selected:hover td{background:#93c5fd !important}
@keyframes summary-plan-hl-pulse{0%,100%{background:#fff3bf}50%{background:#ffd43b}}
/* 列宽手动拖拽（2026-09-18）：表头右侧 7px 手柄，拖动改该列宽度并记忆到 localStorage */
.summary-plan-table th.col-resizable{position:sticky}
.col-resizer{position:absolute;top:0;right:0;width:7px;height:100%;cursor:col-resize;user-select:none;-webkit-user-select:none;z-index:8;background:transparent}
.col-resizer::after{content:"";position:absolute;top:20%;right:3px;width:1px;height:60%;background:#cbd5e1}
.col-resizer:hover{background:rgba(37,99,235,.18)}
.col-resizer:hover::after{background:#2563eb}
.col-resizer.dragging{background:rgba(37,99,235,.32)}
body.col-resizing{cursor:col-resize!important;user-select:none!important;-webkit-user-select:none!important}
.summary-plan-table tbody tr.selected:hover td{background:#d1e9ff}
.summary-plan-table tbody tr.deleted td{color:#94a3b8;background:#f8fafc;text-decoration:line-through}
.summary-plan-table tbody tr.deleted:hover td{background:#f1f5f9}
.summary-plan-table tr:last-child td{border-bottom:none}

/* 计划汇总 — 批量操作条 */
.summary-batch-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 12px;background:#f8fafc;border-bottom:1px solid #e2e8f1}
.summary-batch-btn{height:28px;padding:0 12px;border-radius:14px;border:none;color:#fff;font-size:12px;font-weight:600;transition:.15s;box-shadow:0 1px 2px rgba(0,0,0,.08)}
.summary-batch-btn:hover{transform:translateY(-1px);box-shadow:0 3px 5px rgba(0,0,0,.12)}
.summary-batch-select-all{background:#60a5fa}
.summary-batch-select-all:hover{background:#3b82f6}
.summary-batch-invert{background:#38bdf8}
.summary-batch-invert:hover{background:#0ea5e9}
.summary-batch-clear{background:#94a3b8}
.summary-batch-clear:hover{background:#64748b}
.summary-batch-start{background:#22c55e}
.summary-batch-start:hover{background:#16a34a}
.summary-batch-pause{background:#f59e0b}
.summary-batch-pause:hover{background:#d97706}
.summary-batch-delete{background:#f87171}
.summary-batch-delete:hover{background:#ef4444}
.summary-batch-info{font-size:12px;color:#64748b;margin-left:auto}
.summary-batch-info b{color:#334155}

/* 计划汇总 — 状态开关（开启绿 / 关闭灰 / 已删除禁用） */
.summary-status-switch{position:relative;display:inline-flex;align-items:center;width:44px;height:22px;vertical-align:middle}
.summary-status-switch input{opacity:0;width:0;height:0;margin:0}
.summary-status-switch .slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background:#cbd5e1;border-radius:22px;transition:.25s;box-shadow:inset 0 1px 3px rgba(0,0,0,.12)}
.summary-status-switch .slider:before{position:absolute;content:"";height:16px;width:16px;left:3px;bottom:3px;background:#fff;border-radius:50%;transition:.25s;box-shadow:0 1px 3px rgba(0,0,0,.2)}
.summary-status-switch input:checked + .slider{background:#22c55e}
.summary-status-switch input:checked + .slider:before{transform:translateX(22px)}
.summary-status-switch input:focus + .slider{box-shadow:0 0 0 3px rgba(34,197,94,.25)}
.summary-status-switch.disabled{opacity:.55;cursor:not-allowed}
.summary-status-switch.disabled .slider{cursor:not-allowed;background:#e2e8f0}
.summary-status-deleted{display:inline-block;padding:3px 10px;border-radius:12px;background:#e2e8f0;color:#64748b;font-size:11px;font-weight:600;white-space:nowrap;cursor:not-allowed;user-select:none}

/* 计划汇总商品表动态列宽 + 多彩化 */
#summary-table{table-layout:auto;width:auto;min-width:100%;border-radius:8px;border:1px solid #e2e8f1}
#summary-table th{background:#f8fafc;position:sticky;top:0;z-index:10;color:#334155;font-weight:700;border-bottom:1px solid #e2e8f1;padding:10px 10px}
#summary-table th .th-label{white-space:nowrap;color:#334155}
#summary-table th .report-sort-arrow{color:#64748b}
#summary-table th.active .report-sort-arrow{color:#0ea5e9}
#summary-table td{padding:9px 10px;border-bottom:1px solid #f1f5f9;vertical-align:middle;color:#334155;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#summary-table tbody tr{background:#fff}
#summary-table tbody tr.odd{background:#fafafa}
#summary-table tbody tr:hover{background:#f1f5f9}
#summary-table tbody tr.expanded{background:#e0f2fe}
#summary-table td.summary-product-name{padding:8px 10px;overflow:visible;text-overflow:clip;white-space:normal}
#summary-table .summary-product-cell{display:flex;align-items:center;gap:8px;min-width:0}
#summary-table .summary-thumb{width:44px;height:44px;object-fit:cover;border-radius:6px;flex-shrink:0;background:#f1f5f9;border:1px solid #e2e8f1;box-shadow:0 2px 5px rgba(0,0,0,.06)}
#summary-table .summary-thumb.thumb-placeholder{display:inline-block}
#summary-table .summary-thumb.thumb-error{display:none}
#summary-table .summary-product-text{flex:1;min-width:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;line-height:1.35;max-height:2.7em;font-size:12px;color:#334155}
#summary-table td.money-cell{font-weight:700;color:#334155}
#summary-table td.num-cell{color:#334155}
#summary-table .pos{color:#16a34a;font-weight:700}
#summary-table .neg{color:#dc2626;font-weight:700}
#summary-table .high{color:#16a34a;font-weight:700}
#summary-table .mid{color:#d97706;font-weight:700}
#summary-table .low{color:#dc2626;font-weight:700}
#summary-table .profit-red{color:#dc2626;font-weight:700}
#summary-table .profit-green{color:#16a34a;font-weight:700}
#summary-table .profit-black{color:#1f2937;font-weight:700}
#summary-table .roi-red{color:#dc2626;font-weight:700}
#summary-table .roi-green{color:#16a34a;font-weight:700}
#summary-table .roi-black{color:#1f2937;font-weight:700}
#summary-table .cell-tip{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}
#summary-table .cell-full{display:inline-block;max-width:100%;overflow:visible;text-overflow:clip;white-space:normal;word-break:break-all;vertical-align:bottom}
#summary-table tr.rebate-saved td{background:#ecfdf5 !important}
#summary-table tr.rebate-saving td{background:#fffbeb !important}

/* ---------------- 抖音源画下载（网页端集成） ---------------- */

/* ── 计划列表（plist，对齐 826 计划列表 Tab）2026-09-18 ── */
.badge-ok{background:#dcfce7;color:#15803d}
.badge-warn{background:#fef3c7;color:#b45309}

/* ── v2026100911 #846：选择计划弹窗（批量添加素材）列表对齐主计划列表样式 ──
   复用 table.grid 的行高/悬停/粘性表头，这里只补弹窗专属的列宽与选中绿。 */
.pp-grid tbody td{vertical-align:middle;white-space:nowrap}
.pp-grid .pp-acc{max-width:170px;min-width:120px;overflow:hidden;text-overflow:ellipsis;font-weight:500}
.pp-grid .pp-name{max-width:430px;min-width:200px;overflow:hidden;text-overflow:ellipsis}
.pp-grid .pp-id{font-family:Consolas,monospace;font-size:12px;color:var(--txt-2)}
.pp-grid .pp-cost{text-align:right;font-variant-numeric:tabular-nums;font-weight:600}
.pp-grid tbody tr.pprow.on{background:#f0fdf4}
.pp-grid tbody tr.pprow.on:hover{background:#dcfce7}
.plist-toolbar .form-input{padding:6px 10px;border:1px solid #e2e8f0;border-radius:8px;font-size:13px;outline:none}
.plist-toolbar .form-input:focus{border-color:#93c5fd}
/* 批量改标题 / 批量改 ROI 弹窗输入框：圆润风格（对齐用户截图） */
.plt-new, .plroi-new, #plroi-val {
  border:1px solid #c7d2fe;
  border-radius:14px;
  padding:9px 14px;
  font-size:14px;
  outline:none;
  background:#fff;
  transition:.15s;
}
.plt-new:focus, .plroi-new:focus, #plroi-val:focus {
  border-color:#6366f1;
  box-shadow:0 0 0 3px rgba(99,102,241,.18);
}
#plist-table td{font-size:12.5px;padding:5px 8px;white-space:nowrap}
#plist-table thead th{position:sticky;top:0;background:#f8fafc;z-index:2;font-size:12.5px}
#plist-table tbody tr:hover td{background:#f1f5f9}
/* 计划列表：选中行高亮 + 已删除行淡显（对齐 826 交替行/删除行视觉） */
#plist-table tbody tr.plist-row-sel td{background:#e0edff}
#plist-table tbody tr.plist-row-sel td:first-child{box-shadow:inset 3px 0 0 #2563eb}
#plist-table tbody tr.plist-row-deleted td{color:#94a3b8;text-decoration:line-through}

/* ── v2026091821：计划列表 UI 16 项大修 ─────────────────────────── */

/* ② 长文本（账户/计划名/ID）不再超格：省略号 + 悬停提示 */
#plist-table td{overflow:hidden;text-overflow:ellipsis}
#plist-table td .cell-tip{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}
#plist-table td .cell-full{display:inline-block;max-width:100%;overflow:visible;text-overflow:clip;white-space:normal;word-break:break-all;vertical-align:bottom}
/* #4 修复：商品ID/计划ID 列显式不裁切——td 级 overflow 必须放开才能盖过 #...-table td 的 overflow:hidden（ID 完整显示、不省略号、自动换行） */
#summary-table td.no-ellipsis{overflow:visible;text-overflow:clip;white-space:normal;word-break:break-all}
#plist-table td.no-ellipsis{overflow:visible;text-overflow:clip;white-space:normal;word-break:break-all}

/* ① 日期预设下拉：自绘圆角菜单（对齐系统 UI，替代原生 select 弹层） */
.rdd{position:relative;display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 12px;
  border:1px solid var(--line,#e2e8f0);border-radius:10px;background:var(--panel,#fff);color:var(--txt,#0f172a);
  font-size:13px;cursor:pointer;user-select:none;transition:border-color .15s,box-shadow .15s;white-space:nowrap}
.rdd:hover{border-color:#93c5fd;box-shadow:0 2px 8px rgba(37,99,235,.10)}
.rdd .rdd-caret{font-size:10px;color:#94a3b8;transition:transform .15s}
.rdd.open .rdd-caret{transform:rotate(180deg)}
.rdd-menu{display:none;position:absolute;top:calc(100% + 6px);left:0;min-width:140px;z-index:60;
  background:#fff;border:1px solid #e2e8f0;border-radius:12px;box-shadow:0 12px 32px rgba(15,23,42,.14);
  padding:6px;max-height:320px;overflow:auto}
.rdd.open .rdd-menu{display:block;animation:rddIn .12s ease}
@keyframes rddIn{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}
.rdd-item{padding:7px 12px;border-radius:8px;font-size:13px;color:#334155;cursor:pointer}
.rdd-item:hover{background:#eff6ff;color:#1d4ed8}
.rdd-item.on{background:#2563eb;color:#fff;font-weight:600}
/* 计划列表「选择账户」圆角下拉：菜单加宽以容纳账户名 */
.rdd.acct-rdd{min-width:200px}
.rdd.acct-rdd .rdd-menu{min-width:260px;max-width:420px;white-space:nowrap}
/* v2026091908 #3：账户下拉「管理展示账户」批量入口 + 分隔线 */
.rdd-sep{height:1px;background:#e2e8f0;margin:5px 4px}
.rdd-item-act{color:#1d4ed8;font-weight:600;background:#f8fafc}
.rdd-item-act:hover{background:#dbeafe;color:#1e40af}
/* 账户管理面板 */
.acct-manage-list{max-height:min(52vh,420px);overflow:auto;border:1px solid #e2e8f0;border-radius:10px;padding:6px}
.acct-manage-row{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:8px;cursor:pointer;font-size:13px}
.acct-manage-row:hover{background:#f1f5f9}
.acct-manage-row input{cursor:pointer}
/* v2026091910 #2：管理展示账户弹窗多彩化 */
.acct-manage-ava{flex:0 0 24px;width:24px;height:24px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:700}
.acct-manage-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}
.acct-manage-cnt{font-size:12px;flex:0 0 auto;border-radius:999px;padding:2px 10px;font-weight:600;background:#f1f5f9;color:#64748b}
/* v2026091912：账户管理弹窗补齐外框（标准三段式 + 蓝紫主题） */
.modal.modal--acctmgr{width:min(680px,94vw);border:2px solid rgba(124,58,237,.28)}
.modal--acctmgr .modal-head{background:linear-gradient(135deg,#2563eb,#7c3aed)}
.modal--acctmgr .modal-body{background:linear-gradient(180deg,#f5f3ff,#ffffff);padding:16px 20px}
.modal--acctmgr .modal-foot{border-top:1px solid var(--line)}
.acct-mgr-title{display:flex;align-items:center;gap:8px}
.acct-mgr-total{font-size:12px;font-weight:600;color:#fff;background:rgba(255,255,255,.22);border-radius:999px;padding:2px 10px;-webkit-text-fill-color:#fff}
.acct-mgr-toolbar{display:flex;align-items:center;gap:8px;margin:10px 0;flex-wrap:wrap}
.acct-mgr-btn-all{background:#eff6ff;color:#1d4ed8;border-color:#bfdbfe;font-weight:600}
.acct-mgr-btn-none{background:#fff7ed;color:#c2410c;border-color:#fed7aa;font-weight:600}
.acct-mgr-btn-inv{background:#f5f3ff;color:#6d28d9;border-color:#ddd6fe;font-weight:600}
.btn-acctmgr{background:linear-gradient(135deg,#2563eb,#7c3aed);color:#fff;border:none;font-weight:600}
.btn-acctmgr:hover{filter:brightness(1.1)}
.btn-acctmgr:disabled{opacity:.6}
/* 批量建计划完成结果明细弹窗 */
.batch-result-summary{display:flex;gap:12px;flex-wrap:wrap}
.batch-result-summary .brs-card{flex:1;min-width:150px;border-radius:12px;padding:14px 12px;text-align:center;border:1px solid var(--line)}
.batch-result-summary .brs-card .brs-n{font-size:30px;font-weight:800;line-height:1.1}
.batch-result-summary .brs-card .brs-l{font-size:12.5px;color:var(--txt-2);margin-top:4px}
.batch-result-summary .brs-card.ok{background:#f0fdf4;border-color:#bbf7d0}
.batch-result-summary .brs-card.ok .brs-n{color:#16a34a}
.batch-result-summary .brs-card.fail{background:#fef2f2;border-color:#fecaca}
.batch-result-summary .brs-card.fail .brs-n{color:#dc2626}
.batch-result-summary .brs-card.unknown{background:#fffbeb;border-color:#fde68a}
.batch-result-summary .brs-card.unknown .brs-n{color:#d97706}

/* ⑤ 类型/状态筛选做进列表头：筛选 caret + 下拉面板 */
.plist-col-filter{display:inline-flex;align-items:center;gap:2px;margin-left:4px;padding:1px 6px;border-radius:6px;
  font-size:11px;cursor:pointer;color:#94a3b8;transition:.15s}
.plist-col-filter:hover{background:#e0e7ff;color:#1d4ed8}
.plist-col-filter.on{background:#dbeafe;color:#1d4ed8;font-weight:700}
.plist-filter-menu{position:fixed;z-index:10001;background:#fff;border:1px solid #e2e8f0;border-radius:12px;
  box-shadow:0 12px 32px rgba(15,23,42,.16);padding:6px;min-width:130px;max-height:300px;overflow:auto}
.plist-filter-menu .pfm-item{padding:7px 12px;border-radius:8px;font-size:13px;color:#334155;cursor:pointer;white-space:nowrap}
.plist-filter-menu .pfm-item:hover{background:#eff6ff;color:#1d4ed8}
.plist-filter-menu .pfm-item.on{background:#2563eb;color:#fff;font-weight:600}

/* ⑥ 上次/下次调价（对齐 826）：倒计时红、可调绿 */
.nadj{display:inline-block;min-width:52px;text-align:center;padding:1px 8px;border-radius:10px;font-size:12px;font-weight:700;font-variant-numeric:tabular-nums}
.nadj-cd{background:#fee2e2;color:#b91c1c}
.nadj-ok{background:#dcfce7;color:#15803d}
.nadj-none{color:#94a3b8;font-weight:400}

/* ⑬ 净成交ROI vs 保本ROI 盈亏染色（A股涨红跌绿） */
#plist-table td .roi-win{color:#dc2626;font-weight:700}
#plist-table td .roi-lose{color:#16a34a;font-weight:700}

/* ⑭ 详情按钮/弹窗（对齐 826 详情弹窗：分区色条卡片 + KPI） */
.plist-detail-btn{padding:2px 10px;font-size:12px;border-radius:8px}
.pdd-sec{border:1px solid #e2e8f0;border-radius:12px;padding:12px 14px;margin-bottom:12px;background:#fff}
.pdd-sec-title{font-size:13px;font-weight:700;margin-bottom:8px;padding-left:8px;border-left:4px solid #2563eb;line-height:1.2}
.pdd-kpis{display:flex;gap:10px;flex-wrap:wrap}
.pdd-kpi{flex:1;min-width:110px;background:#f8fafc;border:1px solid #eef2f7;border-radius:10px;padding:8px 10px;text-align:center}
.pdd-kpi .kv{font-size:16px;font-weight:700;font-variant-numeric:tabular-nums}
.pdd-kpi .kl{font-size:11px;color:#64748b;margin-bottom:2px}
.pdd-kv{display:flex;font-size:13px;padding:4px 0;border-bottom:1px dashed #f1f5f9}
.pdd-kv:last-child{border-bottom:none}
.pdd-kv .k{width:96px;color:#64748b;flex:0 0 96px}
.pdd-kv .v{color:#0f172a;font-weight:500;word-break:break-all}

/* ⑩ 批量改ROI：彩色模式 chips */
.plchip{border:1px solid #e2e8f0;border-radius:10px;background:#fff;padding:6px 14px;font-size:13px;font-weight:600;cursor:pointer;transition:.15s}
.plchip:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(15,23,42,.10)}
.plchip.abs.on{background:#eff6ff;border-color:#2563eb;color:#1d4ed8}
.plchip.inc.on{background:#fef2f2;border-color:#dc2626;color:#dc2626}
.plchip.dec.on{background:#f0fdf4;border-color:#16a34a;color:#16a34a}
.plroi-delta-up{color:#dc2626;font-weight:700}
.plroi-delta-dn{color:#16a34a;font-weight:700}

/* ⑫ 批量改预算（对齐 826）：蓝色提示卡 + 快捷档位 chips */
.plbud-tip{background:#eff6ff;border-left:4px solid #2563eb;border:1px solid #dbeafe;border-left:4px solid #2563eb;
  border-radius:10px;padding:10px 14px;color:#1d4ed8;font-size:13px;font-weight:600;margin-bottom:12px}
.plbud-chip{background:#f8fafc;border:1px solid #e2e8f0;border-radius:14px;padding:4px 14px;font-size:12px;
  font-weight:500;color:#475569;cursor:pointer;transition:.15s;min-width:64px}
.plbud-chip:hover{background:#eff6ff;border-color:#2563eb;color:#1d4ed8}
.plbud-input{height:44px;font-size:16px;font-weight:600;text-align:right;border:1px solid #cbd5e1;border-radius:10px;
  padding:0 12px;outline:none;width:260px}
.plbud-input:focus{border-color:#2563eb;box-shadow:0 0 0 3px rgba(37,99,235,.15)}
.plbud-input.bad{background:#fef2f2;color:#b91c1c;border:2px solid #dc2626}
.plbud-err{color:#b91c1c;font-size:12px;font-weight:700;margin-top:6px;min-height:16px}

/* ⑮/⑯ 行级右键复制菜单（多条目） */
.report-copy-menu .report-copy-item{padding:8px 14px;font-size:13px;color:#334155;cursor:pointer;white-space:nowrap;max-width:340px;overflow:hidden;text-overflow:ellipsis}
.report-copy-menu .report-copy-item:hover{background:#eff6ff;color:#1d4ed8}
.report-copy-menu .report-copy-item.danger{color:#dc2626}
.report-copy-menu .report-copy-item.danger:hover{background:#fef2f2;color:#b91c1c}
.report-copy-sep{height:1px;background:#f1f5f9;margin:4px 0}

/* ⑪ 批量改标题：彩色表单（826 同色系） */
.plt-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px;margin-bottom:10px}
.plt-form-col{flex-direction:column;display:flex;gap:10px}
.plt-field{display:flex;align-items:center;gap:8px;background:#f8fafc;border:1px solid #eef2f7;border-radius:10px;padding:8px 12px}
.plt-field .fl{font-size:12.5px;font-weight:700;white-space:nowrap;color:#1d4ed8}
.plt-field input{border:1px solid #e2e8f0;border-radius:8px;padding:5px 8px;font-size:13px;outline:none;width:86px}
.plt-field input:focus{border-color:#93c5fd}
/* 系数 / 净退货率 只读自动算（系统蓝风格） */
.plt-field.plt-readonly{background:#f1f5f9;border-color:#dbeafe}
.plt-field.plt-readonly .fl{color:#3b82f6}
.plt-field.plt-readonly input{background:#e2e8f0;color:#475569;cursor:not-allowed}
.plt-field.plt-roi{background:#eff6ff;border-color:#dbeafe}
.plt-field.plt-roi .fl{color:#1d4ed8}
.plt-field.plt-roi #plt-roi{font-weight:700;color:#1d4ed8}


/* ===================== 自动调价页面样式 ===================== */
/* ============================================================================
 * sp.css — 千川网页版自动调价 通用样式（单一真理源）
 * 蓝主色、强对比、大字号、非纯白背景。
 * 预览页与生产 styles.css 共用本文件（生产通过 @import 或合并引入）。
 *
 * 布局策略：整页自然滚动（左右栏不再固定高度/内部滚动），窗口大小自适应；
 * 窄屏（<=960px）左右栏自动堆叠为上下栏。
 * ==========================================================================*/

.sp-page {
  font-family: "Microsoft YaHei", "PingFang SC", "Segoe UI", system-ui, sans-serif;
  color: #1f2d3d;
  background: linear-gradient(160deg, #e8eefb 0%, #eef2f7 45%, #e6ecf5 100%);
  padding: 18px 22px 60px;
  min-height: 100vh;
  box-sizing: border-box;
  font-size: 15px;
}
.sp-page * { box-sizing: border-box; }

/* 顶部操作条 */
.sp-actions {
  display: flex;
  gap: 12px;
  align-items: center;
  margin-bottom: 16px;
  flex-wrap: wrap;
}
.sp-actions .sp-title {
  font-size: 21px;
  font-weight: 800;
  margin-right: auto;
  color: #142238;
  letter-spacing: .5px;
}

/* 按钮 */
.sp-btn {
  border: 1px solid #c3d0e0;
  background: #ffffff;
  color: #22334c;
  padding: 9px 18px;
  border-radius: 9px;
  font-size: 14px;
  cursor: pointer;
  transition: all .15s ease;
  font-weight: 700;
  box-shadow: 0 1px 2px rgba(20,40,80,.08);
}
.sp-btn:hover { border-color: #2f7bff; color: #2f7bff; transform: translateY(-1px); box-shadow: 0 3px 8px rgba(47,123,255,.18); }
.sp-btn.primary {
  background: linear-gradient(135deg, #3d86ff 0%, #2166ec 100%);
  border-color: #2166ec; color: #fff;
  box-shadow: 0 2px 8px rgba(47,123,255,.35);
}
.sp-btn.primary:hover { background: linear-gradient(135deg, #2f7bff 0%, #1a5ad4 100%); color: #fff; }
.sp-btn.ghost { background: transparent; box-shadow: none; }
.sp-btn.sm { padding: 6px 14px; font-size: 13px; border-radius: 7px; }
.sp-btn.danger { color: #e23a3a; border-color: #f0b4b4; }
.sp-btn.danger:hover { background: #ffecec; border-color: #e23a3a; color: #e23a3a; }
.sp-btn.warn { color: #d9820c; border-color: #f2cd97; }
.sp-btn.warn:hover { background: #fff7e8; border-color: #d9820c; color: #d9820c; }
.sp-btn:disabled { opacity: .5; cursor: not-allowed; transform: none; box-shadow: none; }

/* 布局 —— 整页自然滚动，左右栏各自独立高度，不再固定等高/内部滚动 */
.sp-row { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin: 10px 0; }
.sp-col { display: flex; flex-direction: column; gap: 10px; }
.sp-sep { height: 1px; background: linear-gradient(90deg, #d8e2f0, rgba(216,226,240,0)); margin: 16px 0; }

/* ── 整页左右栏：左选右开（动态高度，整页滚动） ── */
.sp-layout { display: flex; gap: 18px; align-items: flex-start; }
.sp-side {
  width: 330px; flex: none; display: flex; flex-direction: column; gap: 12px;
}
.sp-sidehead { margin: 0; font-size: 20px; font-weight: 800; color: #142238; display: flex; align-items: center; gap: 8px; }
.sp-sidehead .sp-count {
  font-size: 12px; font-weight: 700; color: #2f7bff; background: #e3edff;
  border-radius: 20px; padding: 2px 10px;
}
.sp-listbox {
  background: #fff;
  border: 1px solid #dce4ef; border-radius: 12px; padding: 10px;
  display: flex; flex-direction: column; gap: 8px;
  box-shadow: 0 2px 10px rgba(20,40,80,.07);
}
.sp-listitem {
  padding: 13px 15px; border-radius: 9px; cursor: pointer;
  border: 1px solid #e8eef6; background: #fbfdff;
  transition: all .13s ease; border-left: 3px solid transparent;
}
.sp-listitem:hover { background: #f0f6ff; border-color: #d3e3fb; }
.sp-listitem.active {
  background: #e9f1ff; border-color: #2f7bff; border-left: 3px solid #2f7bff;
  box-shadow: 0 2px 8px rgba(47,123,255,.14);
}
.sp-itemname { display: flex; align-items: center; gap: 6px; font-weight: 700; font-size: 14.5px; color: #16243a; }
.sp-itemname .sp-name-text {
  flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.sp-itemname .sp-badge { flex: none; white-space: nowrap; }
.sp-itemmeta { font-size: 12px; color: #6b7a90; margin-top: 6px; display: flex; gap: 10px; flex-wrap: wrap; align-items: center; }
.sp-itemmeta .sp-badge { white-space: nowrap; }
/* 左栏：组织下的账户子项（缩进一层，视觉上区分层级） */
.sp-listitem.sub {
  margin-left: 16px; padding: 9px 12px;
  background: #fff; border-left-color: #cfe0f8;
}
.sp-listitem.sub::before {
  content: "└"; color: #a9b8cc; font-size: 12px; margin-right: 4px;
}
.sp-listitem.sub .sp-itemname { font-size: 13.5px; font-weight: 600; }
.sp-listitem.sub .sp-name-text { white-space: normal; word-break: break-all; line-height: 1.45; }
.sp-listitem.sub .sp-itemmeta { margin-top: 4px; font-size: 11.5px; }
.sp-listitem.sub.active { border-left-color: #2f7bff; background: #e9f1ff; }
.sp-listitem.off { opacity: .62; }
.sp-listitem.off:hover { opacity: 1; }

/* 账户表格里可点击进计划的账户名 */
.sp-linkname { color: #2f7bff; cursor: pointer; }
.sp-linkname:hover { text-decoration: underline; }

/* 内嵌计划面板（合并页：账户设置 + 计划表同页） */
.sp-camphost { margin-top: 8px; }
.sp-camphost .sp-editorhead { padding: 10px 0; border-bottom: 1px solid #e8eef6; }
.sp-camphost .sp-editorhead h3 { font-size: 17px; margin: 0; }
.sp-camphost .sp-mainbody { padding: 14px 0 0; }

/* 模态对话框（替代原生 confirm / prompt / alert） */
/* 关键：空层必须 pointer-events:none，否则会拦截整页点击 */
.sp-modal-layer { position: fixed; inset: 0; z-index: 9999; pointer-events: none; }
.sp-modal-mask {
  position: absolute; inset: 0; background: rgba(15,28,48,.42);
  display: flex; align-items: center; justify-content: center;
  pointer-events: auto;
  animation: spFade .12s ease;
}
@keyframes spFade { from { opacity: 0; } to { opacity: 1; } }
.sp-modal-box {
  width: 440px; max-width: calc(100vw - 40px);
  background: #fff; border-radius: 14px; padding: 22px 24px 18px;
  box-shadow: 0 18px 48px rgba(15,28,48,.28);
  animation: spPop .16s ease;
}
@keyframes spPop { from { transform: translateY(10px) scale(.98); opacity: 0; } to { transform: none; opacity: 1; } }
.sp-modal-title { font-size: 16.5px; font-weight: 800; color: #16243a; margin-bottom: 10px; }
.sp-modal-msg { font-size: 14px; color: #46556b; line-height: 1.65; white-space: pre-wrap; word-break: break-all; }
.sp-modal-inputwrap { margin-top: 14px; display: flex; flex-direction: column; gap: 6px; }
.sp-modal-foot { margin-top: 20px; display: flex; justify-content: flex-end; gap: 10px; }

.sp-main {
  flex: 1; min-width: 0; background: #fff;
  border: 1px solid #dce4ef; border-radius: 12px; padding: 0 0 40px;
  box-shadow: 0 2px 10px rgba(20,40,80,.07);
  display: flex; flex-direction: column;
}
.sp-mainhint { color: #8a98ad; text-align: center; padding: 140px 20px; font-size: 15px; margin: auto; }
.sp-mainbody { padding: 28px 40px 48px; }
.sp-editorhead {
  display: flex; align-items: center; gap: 10px;
  padding: 16px 28px; margin: 0;
  border-bottom: 1px solid #e8eef6;
  background: linear-gradient(180deg, #f7faff, #fff);
  position: sticky; top: 0; z-index: 5;
}
.sp-editorhead h3 { margin: 0; font-size: 18px; font-weight: 800; color: #142238; margin-right: auto; display: flex; align-items: center; gap: 10px; }
.sp-section {
  font-size: 16px; font-weight: 800; color: #142238;
  margin: 24px 0 12px; padding: 8px 14px; border-left: 4px solid #2f7bff;
  background: linear-gradient(90deg, #eef4ff, rgba(238,244,255,0));
  border-radius: 0 8px 8px 0;
}
.sp-sub { font-size: 14px; font-weight: 700; color: #2a3b52; margin: 14px 0 8px; }
.sp-doc { font-size: 13px; color: #6b7a90; line-height: 1.7; margin: 6px 0; }
.sp-doc b { color: #2f7bff; }
.sp-hint { font-size: 12px; color: #8492a6; line-height: 1.6; margin: 4px 0 10px; padding-left: 6px; border-left: 2px solid #dbe6ff; }
.sp-hint.warn { color: #d9820c; border-left-color: #ffd8a8; }
.sp-labeled { display: flex; flex-direction: column; gap: 7px; }
.sp-lbl { font-size: 13.5px; color: #44566e; font-weight: 700; margin-bottom: 5px; }

/* 徽标 */
.sp-badge {
  display: inline-block; padding: 3px 10px; border-radius: 20px;
  font-size: 11.5px; font-weight: 700; line-height: 1.6; white-space: nowrap;
}
.sp-badge.blue { background: #e3edff; color: #2f7bff; }
.sp-badge.gray { background: #eef1f5; color: #6b7a90; }
.sp-badge.green { background: #e3f7e9; color: #1e9e50; }
.sp-badge.red { background: #ffecec; color: #e23a3a; }
.sp-badge.orange { background: #fff3e0; color: #d9820c; }

/* 表单控件 */
.sp-num, .sp-text, .sp-time, .sp-select, .sp-textarea {
  border: 1px solid #c3d0e0;
  border-radius: 8px;
  padding: 10px 13px;
  font-size: 14px;
  background: #fff;
  color: #1f2d3d;
  outline: none;
  transition: border-color .13s, box-shadow .13s;
  font-family: inherit;
}
.sp-num:focus, .sp-text:focus, .sp-time:focus, .sp-select:focus, .sp-textarea:focus {
  border-color: #2f7bff; box-shadow: 0 0 0 3px rgba(47,123,255,.14);
}
.sp-textarea { width: 100%; min-height: 110px; resize: vertical; font-size: 12.5px; line-height: 1.5; word-break: break-all; }
.sp-unit { font-size: 13px; color: #6b7a90; }
.sp-cb {
  display: inline-flex; align-items: center; gap: 8px;
  font-size: 14px; cursor: pointer; color: #2a3b52; font-weight: 700;
  user-select: none;
}
.sp-cb.bold { font-weight: 800; color: #142238; }
.sp-cb input { width: 17px; height: 17px; cursor: pointer; accent-color: #2f7bff; }
.sp-toggle { display: inline-flex; align-items: center; gap: 6px; cursor: pointer; }
.sp-toggle .sp-toggle-track {
  width: 42px; height: 23px; border-radius: 20px; background: #cfd8e6;
  position: relative; transition: background .18s; flex: none;
}
.sp-toggle .sp-toggle-track::after {
  content: ""; position: absolute; top: 2px; left: 2px;
  width: 19px; height: 19px; border-radius: 50%; background: #fff;
  box-shadow: 0 1px 3px rgba(0,0,0,.25); transition: left .18s;
}
.sp-toggle.on .sp-toggle-track { background: #2f7bff; }
.sp-toggle.on .sp-toggle-track::after { left: 21px; }
.sp-toggle:not(.on) { opacity: .85; }

/* 表格 */
.sp-tablewrap { overflow-x: auto; background: #fff; border-radius: 12px; box-shadow: 0 2px 10px rgba(20,40,80,.07); }
.sp-table { width: 100%; border-collapse: collapse; font-size: 14px; }
.sp-table th, .sp-table td { padding: 14px 20px; text-align: left; border-bottom: 1px solid #eef2f7; }
.sp-table th { background: #f3f7fc; color: #34465e; font-weight: 800; white-space: nowrap; }
.sp-table td { white-space: nowrap; }
.sp-table tr:hover td { background: #f7faff; }
.sp-table .sp-tag {
  display: inline-block; padding: 2px 9px; border-radius: 5px;
  font-size: 12px; background: #e8f0ff; color: #2f7bff; font-weight: 700;
}
.sp-table .sp-tag.builtin { background: #f0f2f5; color: #6b7a90; }
.sp-cellname { display: inline-block; max-width: 300px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; vertical-align: middle; }

/* 计划管理：名称+ID 两行、紧凑数字列 */
.sp-campname { min-width: 220px; }
.sp-campname .sp-campid { font-size: 11.5px; color: #8a98ad; margin-top: 2px; }
.sp-camptable th, .sp-camptable td { padding: 12px 16px; font-size: 14px; }
/* 列顺序对齐 701 桌面端：1启停 2计划 3商品ID 4类型 5策略 6状态 | 7预算 8计划ROI 9今日消耗
   10成交金额 11今日ROI 12今日净ROI 13订单数 14订单成本 15保本ROI 16佣金退货
   17近2h消耗 18近2hROI 19近10min消耗 20最新操作 21上次调价 22下次调价 */
.sp-camptable td:nth-child(n+7) { text-align: right; font-variant-numeric: tabular-nums; }
.sp-camptable td:nth-child(20) { text-align: left; }               /* 最新操作 */
.sp-camptable td:nth-child(21) { text-align: center; }             /* 上次调价 */
.sp-camptable td:nth-child(22) { text-align: center; }             /* 下次调价 */
.sp-camptable td:nth-child(4), .sp-camptable td:nth-child(6) { text-align: center; }  /* 类型 / 状态 */
.sp-cell-pid { font-size: 12.5px; color: #5b6b82; max-width: 150px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sp-cell-time { font-variant-numeric: tabular-nums; color: #6b7a90; }
.sp-cell-dim { color: #b3bccb; }

/* 总览统计卡 / 组织卡 */
/* v2026100601 #792：总览卡片恢复「正常宽度」——上一版 176px 上限偏小，改回 1fr 自适应铺满。 */
.sp-stat-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 14px; margin: 16px 0 22px; }
.sp-statcard {
  border: 1px solid #dce4ef; border-radius: 12px; padding: 20px 22px;
  background: linear-gradient(160deg, #fbfdff, #f2f7ff); box-shadow: 0 2px 8px rgba(20,40,80,.06);
}
.sp-statcard .sp-statval { font-size: 26px; font-weight: 800; color: #142238; }
.sp-statcard .sp-statval.c-blue { color: #2f7bff; }
.sp-statcard .sp-statval.c-green { color: #1e9e50; }
.sp-statcard .sp-statval.c-orange { color: #d9820c; }
.sp-statcard .sp-statlbl { font-size: 13px; color: #6b7a90; margin-top: 6px; font-weight: 700; }
.sp-orggrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 14px; }
.sp-orgcard {
  border: 1px solid #dce4ef; border-radius: 12px; padding: 18px 20px; cursor: pointer;
  background: #fbfdff; transition: all .14s ease;
}
.sp-orgcard:hover { border-color: #2f7bff; box-shadow: 0 4px 14px rgba(47,123,255,.16); transform: translateY(-2px); }
.sp-orgcard .sp-orggoto { margin-top: 10px; font-size: 13px; color: #2f7bff; font-weight: 700; }

/* 空状态 */
.sp-empty { padding: 40px; text-align: center; color: #8a98ad; font-size: 15px; }
.sp-loading { padding: 40px; text-align: center; color: #8a98ad; }
.sp-error { padding: 24px; text-align: center; color: #e23a3a; }

/* 分组卡片（时间段 / 关键动作 / 账户信息块） */
.sp-grp {
  border: 1px solid #dce4ef; border-radius: 11px; padding: 16px 18px;
  background: #fbfdff; margin: 12px 0;
}
.sp-grptitle { font-size: 15px; font-weight: 800; color: #142238; margin-bottom: 10px; }
.sp-kv { display: flex; gap: 8px; font-size: 14px; margin: 7px 0; align-items: baseline; line-height: 1.6; }
.sp-kv .sp-kvkey { color: #6b7a90; flex: none; min-width: 104px; font-weight: 600; }
.sp-kv .sp-kvval { color: #22334c; font-weight: 700; word-break: break-all; }

/* Tab 切换（胶囊风格） */
.sp-tabbar {
  display: flex; gap: 6px; flex-wrap: wrap;
  background: #eef3fa; border-radius: 11px; padding: 5px;
  margin-bottom: 18px;
}
.sp-tab {
  padding: 8px 18px; cursor: pointer; font-size: 14px; font-weight: 700;
  color: #5a6b83; border: none; background: transparent;
  border-radius: 8px; transition: all .14s ease;
}
.sp-tab:hover { color: #2f7bff; background: rgba(47,123,255,.08); }
.sp-tab.active { color: #fff; background: linear-gradient(135deg, #3d86ff, #2166ec); box-shadow: 0 2px 6px rgba(47,123,255,.35); }
.sp-tabbody.active { display: block; }

/* 时间段卡片 / 参数卡片 */
.sp-segbox { display: flex; flex-direction: column; gap: 12px; }
.sp-segcard {
  border: 1px solid #dce4ef; border-radius: 11px; padding: 16px 18px;
  background: #fbfdff;
}
.sp-segtitle { font-weight: 800; color: #142238; margin-bottom: 8px; font-size: 15px; }
.sp-paramcard {
  border: 1px dashed #b9c8dc; border-radius: 11px; padding: 14px 16px;
  background: #f7faff; margin: 8px 0;
}
.sp-paramcard .sp-grptitle { font-size: 14px; }
.sp-wide { width: 100%; }

/* 提示横幅 */
.sp-banner {
  border: 1px solid #cfe0fb; background: linear-gradient(90deg, #eef4ff, #f8fbff);
  border-radius: 11px; padding: 14px 18px; margin-bottom: 14px;
  font-size: 13.5px; color: #44566e; line-height: 1.7;
}
.sp-banner b { color: #2f7bff; }

/* 下拉框统一美化 */
.sp-select {
  min-height: 38px;
  padding: 9px 34px 9px 13px;
  background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%236b7a90' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") no-repeat right 10px center;
  background-size: 14px;
  cursor: pointer;
  appearance: none;
  -webkit-appearance: none;
  -moz-appearance: none;
}
.sp-select::-ms-expand { display: none; }
.sp-select option { padding: 8px 12px; font-size: 14px; }

/* 复选框：统一加大、无边框默认样式 */
input[type="checkbox"].sp-cb-input,
.sp-table input[type="checkbox"],
.sp-cb input[type="checkbox"] {
  appearance: none; -webkit-appearance: none;
  width: 20px; height: 20px;
  border: 2px solid #c3d0e0; border-radius: 5px;
  background: #fff; cursor: pointer; position: relative; flex: none;
  transition: all .13s ease;
}
input[type="checkbox"].sp-cb-input:checked,
.sp-table input[type="checkbox"]:checked,
.sp-cb input[type="checkbox"]:checked {
  background: #2f7bff; border-color: #2f7bff;
}
input[type="checkbox"].sp-cb-input:checked::after,
.sp-table input[type="checkbox"]:checked::after,
.sp-cb input[type="checkbox"]:checked::after {
  content: ""; position: absolute; left: 5px; top: 1px;
  width: 5px; height: 10px;
  border: solid #fff; border-width: 0 2px 2px 0;
  transform: rotate(45deg);
}
input[type="checkbox"].sp-cb-input:hover,
.sp-table input[type="checkbox"]:hover,
.sp-cb input[type="checkbox"]:hover { border-color: #2f7bff; }

/* 策略编辑器内边距（避免内容贴边） */
.sp-editor { padding: 0 40px 48px; }
.sp-editor .sp-editorhead { margin: 0 -40px; padding-left: 40px; padding-right: 40px; }
.sp-tabpane { padding-top: 6px; }

/* 账户名称完整显示 */
.sp-account-name { white-space: normal; word-break: break-all; line-height: 1.5; }

/* 表格行选中高亮 + 拖拽选择（计划表不显示选择框，改用整行高亮 + 左侧蓝条） */
.sp-table tbody tr { cursor: pointer; }
.sp-table tbody tr.selected td { background: #e9f1ff !important; }
.sp-table tbody tr.selected:hover td { background: #d8e7ff !important; }
.sp-table tbody tr:active td { background: #f0f6ff; }
.sp-camptable tbody input[type=checkbox] { display: none; }
.sp-camptable tbody td:first-child, .sp-camptable thead th:first-child {
  width: 6px; min-width: 6px; padding-left: 0; padding-right: 6px;
}
.sp-camptable tbody tr.selected td:first-child {
  background: #2f7bff !important; box-shadow: inset 0 0 0 1px #2f7bff;
}

/* 表格内嵌表头筛选 */
.sp-table thead th .sp-select {
  width: 100%; min-height: 32px; padding: 4px 22px 4px 6px;
  font-size: 13px; font-weight: 600; color: #16243a;
  background-position: right 6px center; background-size: 12px;
}

/* 右键菜单 */
.sp-contextmenu {
  position: absolute; background: #fff; border: 1px solid #dce4ef; border-radius: 10px;
  box-shadow: 0 10px 28px rgba(15,28,48,.18); padding: 6px 0; min-width: 150px; z-index: 10000;
}
.sp-contextitem { padding: 9px 16px; font-size: 13.5px; color: #16243a; cursor: pointer; }
.sp-contextitem:hover { background: #f0f6ff; }

/* 更多徽标颜色（状态多样性） */
.sp-badge.yellow { background: #fff8e1; color: #c28e00; }
.sp-badge.purple { background: #f0e6ff; color: #8e44ad; }
.sp-badge.cyan { background: #e0f7fa; color: #00838f; }

/* ── 响应式：窄屏左右栏堆叠为上下栏，整页滚动 ── */
@media (max-width: 960px) {
  .sp-layout { flex-direction: column; }
  .sp-side { width: 100%; }
  .sp-mainbody { padding: 22px 16px 40px; }
  .sp-editorhead { padding: 14px 16px; }
  .sp-table th, .sp-table td { padding: 12px 12px; }
  .sp-camptable th, .sp-camptable td { padding: 10px 11px; }
}
