/* ============================================================
   用户洞察 V2 · 应用外壳样式（工作台 / 表单 / 进度 / 库 / 设置）
   规则：仅使用 tokens.css 中的令牌，禁止硬编码颜色。
   ============================================================ */

/* ---------- 顶栏 ---------- */
.topbar{
  position:sticky;top:0;z-index:50;background:rgba(255,255,255,.92);
  backdrop-filter:saturate(180%) blur(12px);
  border-bottom:1px solid var(--line);
}
.topbar .inner{
  max-width:var(--wrap-max);margin:0 auto;padding:12px 32px;
  display:flex;align-items:center;gap:22px;flex-wrap:wrap;
}
.topbar .brand{display:flex;align-items:center;gap:10px;font-weight:800;font-size:15px;color:var(--ink);text-decoration:none;letter-spacing:-.2px;}
.topbar .brand .dot{width:9px;height:9px;border-radius:50%;background:var(--ink);flex:none;}
.topbar .brand small{font-weight:600;font-size:11px;color:var(--on-dark,#fff);background:var(--blue);padding:2px 7px;border-radius:var(--radius-badge);letter-spacing:.06em;}
.topbar nav{display:flex;gap:4px;flex-wrap:wrap;margin-left:auto;}
.topbar nav a{
  font-size:13px;color:var(--ink2);text-decoration:none;padding:6px 11px;border-radius:8px;
  border:1px solid transparent;
}
.topbar nav a:hover{background:var(--panel);border-color:var(--line);}
.topbar nav a[aria-current="page"]{background:var(--ink);color:var(--on-dark,#fff);font-weight:700;}

.crumb{font-size:12px;color:var(--ink3);margin:0 0 18px;}
.crumb a{color:var(--ink3);text-decoration:none;border-bottom:1px solid var(--line2);}
.crumb a:hover{color:var(--ink);}

/* ---------- 面板 ---------- */
.panel{border:1px solid var(--line);border-radius:12px;background:var(--bg);padding:20px 22px;margin:16px 0;}
.panel.soft{background:var(--panel);}
.panel h3{margin-top:0;}
.panel-h{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px;}
.panel-h h3{margin:0;}
.panel-h .right{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap;}

.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;}
@media (max-width:900px){.grid-2,.grid-3{grid-template-columns:1fr;}}

/* ---------- 表单 ---------- */
.field{margin:0 0 16px;}
.field > label{display:block;font-size:12.5px;font-weight:700;color:var(--ink);margin-bottom:6px;}
.field .hint{font-size:11.5px;color:var(--ink3);margin-top:5px;line-height:1.55;}
.field .err{font-size:11.5px;color:var(--red);margin-top:5px;font-weight:600;display:none;}
.field.invalid .err{display:block;}
.field.invalid input,.field.invalid select{border-color:var(--red);background:var(--redbg);}
.req{color:var(--red);font-weight:700;margin-left:3px;}

input[type=text],input[type=number],select,textarea{
  width:100%;font-family:var(--font-sans);font-size:14px;color:var(--ink);
  background:var(--bg);border:1px solid var(--line2);border-radius:9px;padding:10px 12px;
  font-variant-numeric:tabular-nums;
}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px var(--bluebg);}
textarea{min-height:88px;resize:vertical;line-height:1.65;font-size:13px;}
input::placeholder,textarea::placeholder{color:var(--placeholder);}

/* ASIN 大输入框（工作台首屏第一视觉焦点） */
.asin-hero{
  border:1px solid var(--blueline);background:var(--bluebg);border-radius:12px;
  padding:22px;margin:18px 0;
}
.asin-hero .row{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end;}
.asin-hero .grow{flex:1;min-width:260px;}
.asin-hero input[type=text]{
  font-size:19px;font-weight:700;letter-spacing:1.2px;padding:12px 14px;font-family:var(--font-mono);
  text-transform:uppercase;
}
.asin-hero select{width:auto;min-width:170px;padding:12px;font-weight:600;}

/* ---------- 按钮 ---------- */
.btn{
  display:inline-flex;align-items:center;gap:7px;font-family:var(--font-sans);
  font-size:13.5px;font-weight:700;padding:10px 18px;border-radius:9px;cursor:pointer;
  border:1px solid var(--ink);background:var(--ink);color:var(--on-dark,#fff);text-decoration:none;
}
.btn:hover{opacity:.88;}
.btn.ghost{background:var(--bg);color:var(--ink);border-color:var(--line2);}
.btn.ghost:hover{background:var(--panel);opacity:1;}
.btn.sm{font-size:12px;padding:6px 12px;border-radius:7px;font-weight:600;}
.btn.danger{background:var(--red);border-color:var(--red);}
.btn:disabled{opacity:.42;cursor:not-allowed;}
.btn-link{background:none;border:none;padding:0;font-family:var(--font-sans);font-size:12.5px;color:var(--blue);font-weight:700;cursor:pointer;text-decoration:underline;}

/* ---------- 进度 ---------- */
.progress{height:10px;border-radius:999px;background:var(--panel2);overflow:hidden;border:1px solid var(--line);}
.progress i{display:block;height:100%;background:var(--ink);width:0;transition:width .35s ease;}
.progress.red i{background:var(--red);}
.stages{margin:16px 0 0;padding:0;list-style:none;}
.stages li{display:flex;gap:12px;align-items:flex-start;padding:9px 0;border-bottom:1px solid var(--line);}
.stages li:last-child{border-bottom:none;}
.stages .mk{
  flex:none;width:20px;height:20px;border-radius:50%;border:2px solid var(--line2);
  display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:800;color:var(--ink3);margin-top:2px;
  background:var(--bg);
}
.stages li.done .mk{background:var(--green);border-color:var(--green);color:var(--on-dark,#fff);}
.stages li.active .mk{background:var(--ink);border-color:var(--ink);color:var(--on-dark,#fff);}
.stages li.fail .mk{background:var(--red);border-color:var(--red);color:var(--on-dark,#fff);}
.stages .nm{font-size:13px;font-weight:700;color:var(--ink);}
.stages li:not(.done):not(.active):not(.fail) .nm{color:var(--ink3);font-weight:600;}
.stages .ds{font-size:11.5px;color:var(--ink3);}
.stages .tm{margin-left:auto;font-size:11.5px;color:var(--ink3);font-variant-numeric:tabular-nums;flex:none;}

.log{
  background:var(--code-bg,#0f1116);color:var(--log-ink,#c8d3e0);border-radius:9px;padding:12px 14px;
  font-family:var(--font-mono);font-size:11.5px;line-height:1.75;max-height:260px;overflow:auto;
  white-space:pre-wrap;word-break:break-all;
}
.log b{color:var(--log-ok);font-weight:600;}
.log i{color:var(--log-info);font-style:normal;}
.log u{color:var(--log-warn);text-decoration:none;}

/* ---------- 列表 / 卡片 ---------- */
.list{margin:0;padding:0;list-style:none;}
.list li{border:1px solid var(--line);border-radius:var(--radius-card);padding:13px 15px;margin:10px 0;background:var(--bg);display:flex;gap:14px;align-items:flex-start;}
.list li:hover{border-color:var(--line2);}
.list .thumb{
  flex:none;width:52px;height:52px;border-radius:8px;background:var(--panel2);border:1px solid var(--line);
  display:flex;align-items:center;justify-content:center;font-size:10px;color:var(--ink3);font-weight:700;text-align:center;line-height:1.3;
}
.list .bd{flex:1;min-width:0;}
.list .t1{font-size:13.5px;font-weight:700;color:var(--ink);margin-bottom:3px;}
.list .t2{font-size:12px;color:var(--ink2);}
.list .t3{font-size:11.5px;color:var(--ink3);margin-top:5px;display:flex;gap:10px;flex-wrap:wrap;}
.list .rt{margin-left:auto;flex:none;display:flex;gap:6px;align-items:center;}

.empty{border:1px dashed var(--line2);border-radius:var(--radius-card);padding:28px;text-align:center;color:var(--ink3);font-size:13px;background:var(--panel);}

/* ---------- 指标小卡（工作台） ---------- */
.kpi{border:1px solid var(--line);border-radius:11px;padding:14px 15px;background:var(--bg);}
.kpi .k{font-size:11.5px;color:var(--ink3);letter-spacing:.03em;}
.kpi .v{font-size:22px;font-weight:800;margin:5px 0 3px;font-variant-numeric:tabular-nums;letter-spacing:-.5px;}
.kpi .d{font-size:11.5px;color:var(--ink3);line-height:1.5;}
.kpi.g{background:var(--greenbg);border-color:var(--greenline);}
.kpi.g .v{color:var(--green);}
.kpi.a{background:var(--amberbg);border-color:var(--amberline);}
.kpi.a .v{color:var(--amber);}
.kpi.r{background:var(--redbg);border-color:var(--redline);}
.kpi.r .v{color:var(--red);}

/* ---------- 数据源额度条 ---------- */
.quota{margin:10px 0;}
.quota .bar{height:8px;border-radius:999px;background:var(--panel2);overflow:hidden;border:1px solid var(--line);}
.quota .bar i{display:block;height:100%;background:var(--green);}
.quota.low .bar i{background:var(--amber);}
.quota.critical .bar i{background:var(--red);}
.quota .lbl{display:flex;justify-content:space-between;font-size:12px;color:var(--ink2);margin-bottom:5px;font-variant-numeric:tabular-nums;}

/* ---------- 复制按钮（Prompt 卡右上角） ---------- */
.copy-btn{
  font-family:var(--font-sans);font-size:11px;font-weight:700;letter-spacing:.04em;
  background:rgba(255,255,255,.14);color:var(--on-dark,#fff);border:1px solid rgba(255,255,255,.32);
  padding:4px 11px;border-radius:var(--radius-badge);cursor:pointer;
}
.copy-btn:hover{background:rgba(255,255,255,.26);}
.copy-btn.ok{background:var(--green);border-color:var(--green);}

/* ---------- 行动看板 ---------- */
.act{border:1px solid var(--line);border-radius:var(--radius-card);padding:12px 14px;margin:10px 0;background:var(--bg);display:flex;gap:12px;align-items:flex-start;}
.act.p0{border-left:5px solid var(--red);}
.act.p1{border-left:5px solid var(--amber);}
.act.p2{border-left:5px solid var(--green);}
.act .bd{flex:1;min-width:0;}
.act .nm{font-size:13px;font-weight:700;color:var(--ink);}
.act .ef{font-size:11.5px;color:var(--ink3);margin-top:4px;}
.act .meta{font-size:11.5px;color:var(--ink3);margin-top:6px;display:flex;gap:12px;flex-wrap:wrap;}
.act .rt{margin-left:auto;flex:none;display:flex;flex-direction:column;gap:6px;align-items:flex-end;}
.act select{width:auto;font-size:12px;padding:5px 8px;border-radius:7px;}
.act.done{opacity:.62;}

/* ---------- 工具条 ---------- */
.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin:14px 0;}
.toolbar .grow{flex:1;min-width:200px;}
.toolbar input[type=text],.toolbar select{width:auto;min-width:150px;}

/* ---------- 分段筛选 ---------- */
.seg{display:inline-flex;border:1px solid var(--line2);border-radius:9px;overflow:hidden;background:var(--bg);}
.seg button{
  font-family:var(--font-sans);font-size:12.5px;font-weight:600;color:var(--ink2);
  background:var(--bg);border:none;border-right:1px solid var(--line);padding:7px 14px;cursor:pointer;
}
.seg button:last-child{border-right:none;}
.seg button[aria-pressed="true"]{background:var(--ink);color:var(--on-dark,#fff);font-weight:700;}

/* ---------- 页内锚点导航（报告页） ---------- */
.anchorbar{
  position:sticky;top:57px;z-index:40;background:rgba(247,248,250,.94);
  backdrop-filter:saturate(180%) blur(10px);
  border-bottom:1px solid var(--line);margin:0 0 8px;
}
.anchorbar .inner{max-width:var(--wrap-max);margin:0 auto;padding:8px 32px;display:flex;gap:6px;flex-wrap:wrap;}
.anchorbar a{font-size:11.5px;color:var(--ink2);text-decoration:none;padding:4px 9px;border-radius:var(--radius-badge);border:1px solid transparent;}
.anchorbar a:hover{background:var(--bg);border-color:var(--line);color:var(--ink);}
@media (max-width:768px){
  .topbar .inner,.anchorbar .inner{padding-left:16px;padding-right:16px;}
  .topbar nav{margin-left:0;width:100%;}
  .list li{flex-direction:column;}
  .list .rt{margin-left:0;}
}
