/* 竞品工作台 · 云端 01 品牌信息 —— 浅色工业工具台视觉 */
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;background:#F6F6F7;color:#17171A;-webkit-font-smoothing:antialiased}
.app{display:flex;min-height:100vh}

.side{width:248px;flex:none;background:#fff;border-right:1px solid #E9E9EB;padding:22px 16px;display:flex;flex-direction:column;gap:26px;height:100vh;position:sticky;top:0}
.brand{display:flex;align-items:center;gap:11px}
.mark{width:38px;height:38px;border-radius:11px;background:#F0683C;display:grid;place-items:center;color:#fff;flex:0 0 auto;box-shadow:0 6px 16px rgba(240,104,60,.24)}
.brand b{font-size:20px;font-weight:700;letter-spacing:-.03em;white-space:nowrap}
.nav{display:flex;flex-direction:column;gap:4px}
.nav a{display:flex;align-items:center;gap:12px;padding:11px 12px;border-radius:10px;font-size:13.5px;color:#3A3A3F;text-decoration:none;position:relative;min-height:44px}
.nav a:hover{background:#F1F1F3;color:#17171A}
.nav a.on{background:#FDEFE9;color:#17171A;font-weight:600}
.nav a.on::before{content:"";position:absolute;left:0;top:10px;bottom:10px;width:3px;border-radius:0 3px 3px 0;background:#F0683C}
.nav i{font-style:normal;font:11px/1 ui-monospace,Menlo,monospace;color:#9A9AA0;width:18px;flex:0 0 auto}
.nav a.on i{color:#F0683C}
.nav a em{font-style:normal;font:10px/1 ui-monospace,Menlo,monospace;color:#9A9AA0;margin-left:auto;letter-spacing:.04em}
.side-foot{margin-top:auto;display:flex;align-items:center;gap:9px;font-size:12.5px;color:#8A8A90;border-top:1px solid #E9E9EB;padding-top:14px}
.ava{width:26px;height:26px;border-radius:50%;background:#F4F4F5;display:grid;place-items:center;font-size:11px;color:#6C6C72}
.side-foot button{margin-left:auto;border:none;background:none;color:#9A9AA0;font-size:11.5px;cursor:pointer;font-family:inherit}
.side-foot button:hover{color:#17171A}

.main{flex:1;min-width:0;padding:0 36px 56px}
.topbar{height:54px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #E9E9EB;margin:0 -36px 24px;padding:0 36px;position:sticky;top:0;background:rgba(246,246,247,.92);backdrop-filter:blur(10px);z-index:5}
.crumb{font-size:12.5px;color:#8A8A90}
.crumb b{color:#17171A;font-weight:500}
.tb-right{display:flex;align-items:center;gap:14px;font-size:12.5px;color:#8A8A90}

.head{display:flex;align-items:flex-start;gap:18px;margin-bottom:22px}
.head .idx{font:600 52px/.9 ui-monospace,Menlo,monospace;color:#F0683C;letter-spacing:-.06em;flex:0 0 auto;margin-top:-5px}
.head h1{font-size:27px;font-weight:700;letter-spacing:-.03em;line-height:1.2;margin:0}

.grid2{display:grid;grid-template-columns:1.02fr .98fr;gap:18px;align-items:stretch}
.card{background:#fff;border:1px solid #E9E9EB;border-radius:16px}
.card+.card,.grid2+.card{margin-top:18px}
.card.acct{display:flex;flex-direction:column}
.card.acct .cb{flex:1;display:flex;flex-direction:column;justify-content:center}
.card.acct .note{margin-top:auto}
.card.acct .plat{padding:16px 0}
.card.auth{display:flex;flex-direction:column}
.card.auth .cb:last-child{flex:1;display:flex;flex-direction:column;justify-content:space-evenly;padding-top:6px;padding-bottom:10px}
.card.auth .dev{padding:11px 14px}
.card.auth .dl{padding:10px 13px}
.ch{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:15px 20px;border-bottom:1px solid #E9E9EB}
.ch h3{font-size:13.5px;font-weight:600;display:flex;align-items:center;gap:8px}
.ch h3 span{font-size:11.5px;color:#9A9AA0;font-weight:400}
.cb{padding:16px 20px}

.btn{height:32px;padding:0 13px;border-radius:9px;border:1px solid #E9E9EB;background:#fff;font-size:12.5px;color:#17171A;cursor:pointer;display:inline-flex;align-items:center;gap:6px;font-family:inherit}
.btn:hover{border-color:#D8D8DC;background:#FCFCFD}
.btn:disabled{opacity:.55;cursor:not-allowed}
.btn:focus-visible,.inp:focus-visible,.search:focus-visible,.nav a:focus-visible{outline:2px solid #F0683C;outline-offset:2px}
@media (prefers-reduced-motion: reduce){*{transition:none!important;animation:none!important}}
.btn.sm{height:27px;padding:0 10px;font-size:11.5px;border-radius:8px}
.btn-primary{background:#F0683C;border-color:#F0683C;color:#fff}
.btn-primary:hover{background:#E75E32;border-color:#E75E32}
.btn-dark{background:#17171A;border-color:#17171A;color:#fff}
.btn-dark:hover{background:#2A2A2E}

.plat{display:flex;align-items:center;gap:12px;padding:13px 0;border-bottom:1px dashed #EDEDEF}
.plat:last-of-type{border-bottom:none}
.pico{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;font-size:12px;font-weight:600;flex:none}
.tmall{background:#FDEBE6;color:#D8482A}
.jd{background:#FDECEC;color:#C9302C;font-size:10.5px}
.pmeta{flex:1;min-width:0}
.pmeta b{font-size:13px;display:block;margin-bottom:3px;white-space:nowrap}
.pmeta span{font-size:11.5px;color:#9A9AA0}
.inp{height:30px;border:1px solid #E9E9EB;border-radius:8px;padding:0 9px;font-size:12.5px;font-family:inherit;background:#fff;color:#17171A;width:100%}
.inp:focus{outline:none;border-color:#C9C9CE}
.inp:disabled{background:#FAFAFB;color:#6C6C72;border-color:#EFEFF1}
.pw{width:132px;min-width:104px;flex-shrink:1;position:relative}
.pw .eye{position:absolute;right:8px;top:7px;font-size:11px;color:#B4B4BA;cursor:pointer;user-select:none}
.pw .eye:hover{color:#17171A}
.pw .inp{padding-right:38px}
.uname{width:150px;min-width:96px;flex-shrink:1}

.stat{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;color:#8A8A90;white-space:nowrap;min-width:0;justify-content:flex-end}
.dot{width:6px;height:6px;border-radius:50%;background:#C9C9CE;display:inline-block;flex:none}
.dot.ok{background:#2FA36B}.dot.warn{background:#E0A11B}

.note{font-size:11.5px;color:#9A9AA0;line-height:1.7;background:#FAFAFB;border:1px solid #F0F0F2;border-radius:10px;padding:10px 12px;margin-top:14px}
.note b{color:#6C6C72;font-weight:500}

.dl-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.dl{display:flex;align-items:center;gap:10px;border:1px solid #E9E9EB;border-radius:12px;padding:11px 12px;min-width:0}
.os{width:32px;height:32px;border-radius:9px;background:#F4F4F5;display:grid;place-items:center;flex:none}
.dl b{font-size:12.5px;display:block;margin-bottom:3px}
.dl span{font-size:10.5px;color:#9A9AA0;white-space:nowrap}
.dl .btn{margin-left:auto;flex:none}

.dev-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.dev{display:flex;align-items:flex-start;gap:8px;border:1px solid #F0F0F2;border-radius:12px;padding:11px 14px;background:#FCFCFD;min-width:0}
.dev .nm{font-size:12.5px;font-weight:500;display:flex;align-items:center;gap:6px}
.dev .sub{font-size:11px;color:#9A9AA0;margin-top:3px;line-height:1.5}
.dev .btn{margin-left:auto;flex:none}
.dev-empty{grid-column:1/-1;border:1px dashed #E9E9EB;border-radius:12px;padding:14px 14px;font-size:11.5px;color:#9A9AA0;background:#FCFCFD;line-height:1.7}

.hintbar{display:flex;align-items:flex-start;gap:8px;font-size:11.5px;color:#8A8A90;line-height:1.75;background:#FAFAFB;border:1px solid #F0F0F2;border-radius:10px;padding:10px 12px;margin-bottom:4px}
.hintbar code{font-family:ui-monospace,Menlo,monospace;font-size:11px;color:#5E5E64;background:#fff;border:1px solid #ECECEE;border-radius:5px;padding:1px 5px}

/* 表格导入 · 格式与示范（沿用采集台规则） */
.import-note{display:flex;gap:12px;align-items:flex-start;background:#FDF3EE;border:1px solid rgba(240,104,60,.16);border-radius:12px;padding:14px 16px;margin:14px 0 18px}
.import-note .ico{font-size:16px;line-height:1.2;color:#F0683C}
.import-note strong{font-size:12px;display:block;margin-bottom:3px}
.import-note p{font-size:11px;color:#8A8A90;line-height:1.6}
.demo-links{margin-top:8px;display:flex;flex-direction:column;gap:3px}
.demo-links div{display:flex;align-items:baseline;gap:8px;font-size:11px;line-height:1.55}
.demo-links b{font:600 10px/1.5 ui-monospace,Menlo,monospace;color:#F0683C;width:76px;flex:0 0 auto}
.demo-links code{font:10.5px/1.5 ui-monospace,Menlo,monospace;color:#5E5E64;word-break:break-all}

.tools{display:flex;align-items:center;gap:8px}
.search{height:30px;width:190px;border:1px solid #E9E9EB;border-radius:9px;padding:0 10px 0 30px;font-size:12.5px;font-family:inherit;background:#fff url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23B4B4BA' stroke-width='2'><circle cx='11' cy='11' r='7'/><path d='M20 20l-4-4'/></svg>") no-repeat 9px center}
.search:focus{outline:none;border-color:#C9C9CE}

table{width:100%;border-collapse:collapse}
th{text-align:left;font-size:11.5px;font-weight:500;color:#9A9AA0;padding:0 0 9px}
td{padding:11px 0;border-top:1px solid #F2F2F4;font-size:12.5px;vertical-align:middle}
.tier{font-size:11px;color:#6C6C72;background:#F4F4F5;border-radius:6px;padding:3px 7px;white-space:nowrap}
/* 层级下拉：外观沿用上面的灰色胶囊，右侧留出下拉箭头 */
.tier-sel{font-family:inherit;font-size:11px;line-height:1.6;color:#6C6C72;background-color:#F4F4F5;
  border:1px solid transparent;border-radius:6px;padding:3px 21px 3px 7px;white-space:nowrap;
  cursor:pointer;appearance:none;-webkit-appearance:none;
  background-image:linear-gradient(45deg,transparent 50%,#8A8A90 50%),linear-gradient(135deg,#8A8A90 50%,transparent 50%);
  background-position:calc(100% - 13px) 52%,calc(100% - 9px) 52%;
  background-size:4px 4px,4px 4px;background-repeat:no-repeat}
.tier-sel:hover{border-color:#D5D5DA;color:#17171A}
.tier-sel:focus{outline:none;border-color:#F0683C;color:#F0683C}
.tier-sel:disabled{opacity:.55;cursor:wait}
.tier-sel option{color:#17171A;background:#fff}
.bname{font-size:13px;font-weight:500}
.lk{display:inline-flex;align-items:center;gap:5px;font-size:11px;border:1px solid #E9E9EB;border-radius:7px;padding:4px 7px;color:#5E5E64;max-width:170px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;text-decoration:none}
a.lk:hover{border-color:#C9C9CE;color:#17171A}
.lk.empty{color:#C0C0C6;border-style:dashed;background:#FCFCFD}
.lk .s{width:5px;height:5px;border-radius:50%;background:#2FA36B;flex:none}
.op{font-size:11.5px;color:#9A9AA0;white-space:nowrap}
.op button{border:none;background:none;padding:0;margin-left:10px;color:#D8482A;font-size:11.5px;cursor:pointer;font-family:inherit}
.op button.del{color:#B4B4BA}
.op button:hover{text-decoration:underline}
.empty-row td{text-align:center;color:#9A9AA0;font-size:12px;padding:26px 0}

/* 活动配置 */
.camps{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.camp{display:inline-flex;align-items:center;gap:6px;border:1px solid #E9E9EB;border-radius:999px;padding:4px 10px;font-size:11.5px;background:#fff;color:#4A4A50}
.camp button{border:none;background:none;color:#C0C0C6;cursor:pointer;font-size:11px;padding:0;line-height:1}
.camp button:hover{color:#D8482A}

/* 弹层 */
.overlay{position:fixed;inset:0;background:rgba(23,23,26,.32);display:grid;place-items:center;z-index:60;padding:24px}
.modal{width:560px;max-width:100%;max-height:88vh;overflow:auto;background:#fff;border-radius:18px;box-shadow:0 26px 70px rgba(23,23,26,.18)}
.modal.wide{width:720px}
.mh{padding:17px 22px;border-bottom:1px solid #F0F0F2;display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.mh h2{font-size:15.5px;font-weight:600;margin-bottom:4px}
.mh p{font-size:11.5px;color:#9A9AA0;line-height:1.6}
.mh .x{border:none;background:none;font-size:15px;color:#B4B4BA;cursor:pointer;line-height:1;padding:2px}
.mh .x:hover{color:#17171A}
.mb{padding:16px 22px 6px}
.fld{margin-bottom:14px}
.fld .k{font-size:11.5px;color:#8A8A90;margin-bottom:7px;display:flex;align-items:center;gap:8px}
.fld .k .tip{margin-left:auto;font-size:10.5px;color:#B4B4BA}
.mf{padding:13px 22px;border-top:1px solid #F0F0F2;display:flex;align-items:center;justify-content:flex-end;gap:8px;background:#FCFCFD;border-radius:0 0 18px 18px}
.mf .left{margin-right:auto;font-size:11.5px;color:#9A9AA0}
textarea.inp{height:150px;padding:9px;resize:vertical;line-height:1.7;font-family:ui-monospace,Menlo,monospace;font-size:11.5px}

/* 登录 */
.login-card{width:340px;background:#fff;border-radius:18px;padding:24px;box-shadow:0 26px 70px rgba(23,23,26,.2)}
.login-card h2{font-size:16px;margin-bottom:6px}
.login-card p{font-size:12px;color:#9A9AA0;margin-bottom:14px}
.login-card .inp{height:36px;margin-bottom:10px}
.login-card .btn{width:100%;justify-content:center;height:36px;margin-top:4px}
.login-card .err{font-size:11.5px;color:#D8482A;min-height:16px}

/* 轻提示 */
.toast{position:fixed;left:50%;bottom:32px;transform:translateX(-50%);background:#17171A;color:#fff;font-size:12.5px;padding:9px 15px;border-radius:10px;z-index:80;box-shadow:0 12px 30px rgba(23,23,26,.25);opacity:0;transition:opacity .18s}
.toast.on{opacity:1}
.toast.err{background:#C0392B}

@media (max-width:1180px){
  .grid2{grid-template-columns:1fr}
  .side{position:static;height:auto}
  .app{flex-direction:column}
}

/* ---------- 采集任务队列（01 执行端卡片） ---------- */
.tq-head{display:flex;align-items:center;font-size:12.5px;font-weight:700;color:#5A5A60;margin:14px 0 6px}
.tq-row{display:flex;align-items:center;gap:10px;font-size:12.5px;color:#3A3A3E;
  padding:7px 10px;border:1px solid #E9E9EB;border-radius:10px;margin-top:6px;background:#FAFAFB}
.tq-row b{color:#17171A}
.tq-row span:nth-child(2){color:#9A9AA0}
.tq-row span:last-child{color:#B4B4BA;font-variant-numeric:tabular-nums}

/* ---------- 发起采集弹层 ---------- */
.cbx{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid #E9E9EB;
  border-radius:10px;margin-top:6px;cursor:pointer;font-size:13px;color:#17171A;background:#fff}
.cbx:hover{border-color:#D8D8DC}
.cbx.inline{display:inline-flex;margin:0 8px 6px 0;padding:7px 14px}
.cbx input{accent-color:#F0683C;width:15px;height:15px}
.cbx-sub{margin-left:auto;font-size:11.5px;color:#9A9AA0}
.cbx-list{max-height:220px;overflow:auto;border:1px solid #E9E9EB;border-radius:12px;padding:4px 8px}
.cbx-list .cbx{border:none;border-radius:8px;margin-top:0}
.cbx-list .cbx:hover{background:#F6F6F7}
