/* ============================================================================
   56s 广告位中心（/ads）
   —— 只作用于本页。全站浮层横幅的样式在 banner.js 里自带（它得跑在所有页面上，
      拿不到这份 CSS）。

   ⚠ 变量必须挂在 :root：.ads-mask / .ads-toast / .ads-fab 都在 .ads-page 外面
      （见 view.html），挂在 .ads-page 上它们继承不到 —— var() 解析成空，
      「下一步 / 确认」这类主按钮变成透明底 + 白字，肉眼完全看不见
      （v4.1.x 时代最大的隐形 bug，就是这么来的）。
   ========================================================================== */

:root {
  --ads-primary: var(--ls-primary, #fa8c16);
  --ads-primary-deep: #e0760a;
  --ads-primary-soft: #fff3e6;
  --ads-ink: #1f2430;
  --ads-ink-2: #5b6473;
  --ads-ink-3: #8c94a3;
  --ads-line: #e8ebf1;
  --ads-card: #ffffff;
  --ads-soft: #f5f7fb;
  --ads-ok: #17a673;
  --ads-warn: #e08700;
  --ads-bad: #e04a4a;
  --ads-blue: #2f5fe0;
  --ads-radius: 14px;
  --ads-shadow-sm: 0 1px 3px rgba(25, 34, 55, .06);
  --ads-shadow: 0 4px 16px rgba(25, 34, 55, .07);
  --ads-shadow-lg: 0 12px 40px rgba(25, 34, 55, .14);
}

.ads-page {
  box-sizing: border-box;
  width: 100%;
  max-width: 1080px;
  margin: 0 auto;
  padding: 4px 14px 48px;
  color: var(--ads-ink);
  font-size: 14px;
  line-height: 1.6;
  -webkit-text-size-adjust: 100%;
}

.ads-page *,
.ads-page *::before,
.ads-page *::after { box-sizing: border-box; }

.ads-page [hidden],
.ads-lpc [hidden],
/* view.html 里 .ads-mask / .ads-toast 是 .ads-page 的**兄弟节点**，
   作用域守卫够不到，必须点名 —— 否则 PC 端一进页面就顶着一整块遮罩。 */
.ads-mask[hidden],
.ads-toast[hidden] { display: none !important; }

/* ---------------- Hero ---------------- */
.ads-hero {
  display: flex;
  align-items: center;
  gap: 14px;
  flex-wrap: wrap;
  padding: 18px 18px;
  border-radius: 14px;
  background: linear-gradient(120deg, #e9f0ff 0%, #f7f9ff 55%, #fff6ea 100%);
  border: 1px solid var(--ads-line);
}
.ads-hero-title {
  margin: 0;
  font-size: 20px;
  font-weight: 800;
  letter-spacing: .5px;
}
.ads-hero-sub {
  margin: 4px 0 0;
  color: var(--ads-ink-2);
  font-size: 13px;
}
.ads-hero-main { flex: 1 1 240px; min-width: 0; }
.ads-hero-side {
  flex: 0 0 auto;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  padding: 8px 14px;
  border-radius: 12px;
  background: #fff;
  border: 1px solid var(--ads-line);
}
.ads-bal-label { font-size: 12px; color: var(--ads-ink-3); }
.ads-bal { font-size: 20px; color: #e08700; font-weight: 800; }

/* ---------------- KPI ---------------- */
.ads-kpis {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  margin-top: 12px;
}
.ads-kpi {
  padding: 10px 12px;
  border-radius: 12px;
  background: var(--ads-card);
  border: 1px solid var(--ads-line);
}
.ads-kpi-k { display: block; font-size: 12px; color: var(--ads-ink-3); }
.ads-kpi-v { display: block; font-size: 18px; font-weight: 800; margin-top: 2px; }

/* ---------------- Tabs ---------------- */
.ads-tabs {
  display: flex;
  gap: 6px;
  margin: 16px 0 12px;
  padding: 4px;
  border-radius: 12px;
  background: var(--ads-soft);
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}
.ads-tab {
  flex: 1 0 auto;
  padding: 8px 14px;
  border: 0;
  border-radius: 9px;
  background: transparent;
  color: var(--ads-ink-2);
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
  white-space: nowrap;
  position: relative;
}
.ads-tab.on { background: #fff; color: var(--ads-primary); box-shadow: 0 1px 4px rgba(20, 30, 60, .08); }
.ads-tab-dot {
  display: inline-block;
  min-width: 17px;
  margin-left: 5px;
  padding: 0 5px;
  border-radius: 9px;
  background: var(--ads-bad);
  color: #fff;
  font-size: 11px;
  font-style: normal;
  line-height: 17px;
  text-align: center;
}

/* ---------------- 位卡片 ---------------- */
.ads-slots { display: grid; gap: 12px; }
.ads-slot {
  display: flex;
  gap: 14px;
  padding: 16px;
  border-radius: 14px;
  background: var(--ads-card);
  border: 1px solid var(--ads-line);
  align-items: flex-start;
}
.ads-slot-ico {
  flex: 0 0 46px;
  height: 46px;
  border-radius: 12px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 22px;
  background: var(--ads-soft);
}
.ads-slot-main { flex: 1 1 auto; min-width: 0; }
.ads-slot-name { font-size: 16px; font-weight: 700; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.ads-slot-tag {
  padding: 1px 7px;
  border-radius: 6px;
  background: #eef3ff;
  color: var(--ads-blue);
  font-size: 11px;
  font-weight: 600;
}
.ads-slot-desc { margin: 6px 0 0; color: var(--ads-ink-2); font-size: 13px; }
.ads-slot-spec { margin: 4px 0 0; color: var(--ads-ink-3); font-size: 12px; }
.ads-slot-side {
  flex: 0 0 auto;
  text-align: right;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 8px;
}
.ads-slot-price { font-size: 18px; font-weight: 800; color: #e08700; white-space: nowrap; }
.ads-slot-price em { font-size: 12px; font-weight: 500; color: var(--ads-ink-3); font-style: normal; }
.ads-slot-off { font-size: 12px; color: var(--ads-ink-3); }

/* ---------------- 按钮 ---------------- */
.ads-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 9px 18px;
  border: 0;
  border-radius: 10px;
  background: var(--ads-primary);
  color: #fff;
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
  white-space: nowrap;
}
.ads-btn:hover { filter: brightness(1.05); }
.ads-btn[disabled] { background: #cfd5df; cursor: not-allowed; }
.ads-btn-ghost {
  background: #fff;
  color: var(--ads-ink-2);
  border: 1px solid var(--ads-line);
}
.ads-btn-sm { padding: 6px 12px; font-size: 13px; border-radius: 8px; }
.ads-btn-bad { background: #fff; color: var(--ads-bad); border: 1px solid #f3c9c9; }

/* ---------------- 订单列表 ---------------- */
.ads-list { display: grid; gap: 12px; }
.ads-order {
  padding: 14px 16px;
  border-radius: 14px;
  background: var(--ads-card);
  border: 1px solid var(--ads-line);
}
.ads-order-top { display: flex; align-items: flex-start; gap: 10px; flex-wrap: wrap; }
.ads-order-title { font-size: 15px; font-weight: 700; min-width: 0; flex: 1 1 auto; word-break: break-all; }
.ads-badge {
  flex: 0 0 auto;
  padding: 2px 9px;
  border-radius: 8px;
  font-size: 12px;
  font-weight: 600;
}
.ads-badge-pending { background: #fff5e0; color: var(--ads-warn); }
.ads-badge-active { background: #e6f7f0; color: var(--ads-ok); }
.ads-badge-rejected,
.ads-badge-canceled { background: #f2f4f8; color: var(--ads-ink-3); }
.ads-badge-removed,
.ads-badge-expired { background: #f2f4f8; color: var(--ads-ink-3); }
.ads-order-meta {
  margin-top: 8px;
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
  color: var(--ads-ink-2);
  font-size: 12.5px;
}
.ads-order-meta b { color: var(--ads-ink); font-weight: 700; }
.ads-order-note {
  margin-top: 8px;
  padding: 7px 10px;
  border-radius: 8px;
  background: var(--ads-soft);
  color: var(--ads-ink-2);
  font-size: 12.5px;
}
.ads-order-act { margin-top: 10px; display: flex; gap: 8px; flex-wrap: wrap; }
.ads-order-thumb {
  flex: 0 0 76px;
  height: 50px;
  border-radius: 8px;
  overflow: hidden;
  background: var(--ads-soft);
}
.ads-order-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }

.ads-empty {
  padding: 34px 18px;
  text-align: center;
  color: var(--ads-ink-3);
  background: var(--ads-card);
  border: 1px dashed var(--ads-line);
  border-radius: 14px;
  font-size: 13.5px;
}
.ads-empty-ico { display: block; font-size: 30px; margin-bottom: 8px; }

/* ---------------- 说明 ---------------- */
.ads-guide {
  padding: 16px 18px;
  border-radius: 14px;
  background: var(--ads-card);
  border: 1px solid var(--ads-line);
}
.ads-guide h3 { margin: 0 0 10px; font-size: 15px; }
.ads-guide ol { margin: 0 0 14px; padding-left: 20px; color: var(--ads-ink-2); }
.ads-guide li { margin: 6px 0; }
.ads-guide .ads-contact {
  margin-top: 12px;
  padding: 12px 14px;
  border-radius: 10px;
  background: var(--ads-soft);
  color: var(--ads-ink);
  white-space: pre-wrap;
  word-break: break-all;
  font-size: 13px;
}

/* ---------------- 弹窗 ---------------- */
.ads-mask {
  position: fixed;
  inset: 0;
  z-index: 2100;
  background: rgba(15, 20, 32, .5);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
}
/* `display:flex` 的类选择器会盖掉 `hidden` 属性的 UA `display:none`，
   弹窗没开时整块遮罩就常驻在页面中间 —— 必须 [hidden] 兜底拉回来。 */
.ads-mask[hidden] { display: none !important; }
.ads-modal {
  width: 100%;
  max-width: 520px;
  max-height: 88vh;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  padding: 18px;
  border-radius: 16px;
  background: #fff;
  color: var(--ads-ink, #1f2430);
  box-shadow: 0 18px 48px rgba(10, 16, 30, .28);
}
.ads-modal-title {
  margin: 0 0 4px;
  font-size: 17px;
  font-weight: 800;
}
.ads-modal-sub { margin: 0 0 14px; color: #5b6473; font-size: 12.5px; }
.ads-field { margin-bottom: 12px; }
.ads-field > label {
  display: block;
  margin-bottom: 5px;
  font-size: 13px;
  font-weight: 600;
  color: #3d4451;
}
.ads-field .ads-hint { margin-top: 4px; font-size: 12px; color: #8c94a3; }
.ads-field .ads-err { margin-top: 4px; font-size: 12px; color: #e04a4a; }
.ads-input {
  width: 100%;
  padding: 9px 11px;
  border: 1px solid #e8ebf1;
  border-radius: 10px;
  background: #fbfcfe;
  color: #1f2430;
  font-size: 14px;
  font-family: inherit;
  outline: none;
}
.ads-input:focus { border-color: var(--ads-primary, #fa8c16); background: #fff; }

.ads-stepper { display: flex; align-items: center; gap: 10px; }
.ads-step-btn {
  width: 34px;
  height: 34px;
  border: 1px solid #e8ebf1;
  border-radius: 9px;
  background: #fff;
  color: #3d4451;
  font-size: 18px;
  line-height: 1;
  cursor: pointer;
}
.ads-step-btn[disabled] { color: #cfd5df; cursor: not-allowed; }
.ads-step-val { min-width: 84px; text-align: center; font-size: 15px; font-weight: 700; }
.ads-step-val em { font-size: 12px; font-weight: 500; color: #8c94a3; font-style: normal; }

.ads-picker { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.ads-pick {
  padding: 9px 8px;
  border: 1px solid #e8ebf1;
  border-radius: 10px;
  background: #fff;
  text-align: center;
  cursor: pointer;
  font-size: 13px;
  font-weight: 600;
  color: #3d4451;
}
.ads-pick small { display: block; margin-top: 3px; font-size: 11.5px; font-weight: 500; color: #8c94a3; }
.ads-pick.on { border-color: var(--ads-primary, #fa8c16); background: #fff7ee; color: var(--ads-primary, #fa8c16); }

.ads-up {
  display: flex;
  align-items: center;
  gap: 12px;
}
.ads-up-box {
  flex: 0 0 92px;
  height: 62px;
  border-radius: 10px;
  border: 1px dashed #d6dbe5;
  background: #fbfcfe center/cover no-repeat;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #a9b0bd;
  font-size: 12px;
  overflow: hidden;
}
.ads-up-box img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ads-up-side { flex: 1 1 auto; min-width: 0; }
.ads-up-side .ads-input { font-size: 12.5px; }
.ads-file { display: none; }

.ads-sum {
  margin: 14px 0 0;
  padding: 12px 14px;
  border-radius: 12px;
  background: #f7f9fd;
  border: 1px solid #e8ebf1;
}
.ads-sum-row { display: flex; justify-content: space-between; font-size: 13px; color: #5b6473; }
.ads-sum-row + .ads-sum-row { margin-top: 5px; }
.ads-sum-total {
  margin-top: 8px;
  padding-top: 8px;
  border-top: 1px dashed #dde3ee;
  font-size: 15px;
  font-weight: 800;
  color: #1f2430;
}
.ads-sum-total b { color: #e08700; }
.ads-sum-warn { margin-top: 8px; color: #e04a4a; font-size: 12.5px; }

/* v3.4.1 操作栏固定在弹窗可视区底部。
   以前 act 跟着内容一起滚，第 1 步内容一长（套餐+位子+已选区），
   「下一步」就被埋到滚动区最底下，手机上看起来像没有按钮。
   sticky bottom:0 让它永远贴在弹窗可视区下沿；负 margin 抵消
   弹窗自身的 18px 内边距，让白底横条通到两边。 */
.ads-modal-act {
  display: flex; gap: 10px;
  margin: 16px -18px -18px;
  padding: 12px 18px calc(14px + env(safe-area-inset-bottom, 0px));
  position: sticky; bottom: 0; z-index: 2;
  background: linear-gradient(180deg, rgba(255,255,255,.86) 0%, #fff 34%);
  border-top: 1px solid var(--ads-line);
  border-radius: 0 0 16px 16px;
}
.ads-modal-act .ads-btn { flex: 1 1 0; }

/* ---------------- Toast ---------------- */
.ads-toast {
  position: fixed;
  left: 50%;
  bottom: 84px;
  transform: translateX(-50%);
  z-index: 2200;
  max-width: 84vw;
  padding: 10px 18px;
  border-radius: 22px;
  background: rgba(24, 30, 44, .92);
  color: #fff;
  font-size: 13.5px;
  text-align: center;
}

/* ---------------- 双端适配 ---------------- */
@media (max-width: 760px) {
  .ads-hero { padding: 14px; border-radius: 12px; }
  .ads-hero-title { font-size: 18px; }
  .ads-hero-side { align-items: flex-start; }
  .ads-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ads-slot { flex-wrap: wrap; }
  .ads-slot-side { width: 100%; flex-direction: row; align-items: center; justify-content: space-between; }
  .ads-picker { grid-template-columns: 1fr; }
  .ads-modal { max-height: 92vh; border-radius: 16px 16px 0 0; }
  .ads-modal-act { border-radius: 0; }
  .ads-mask { align-items: flex-end; padding: 0; }
  .ads-toast { bottom: 96px; }
}

@media (min-width: 761px) {
  .ads-slots { grid-template-columns: 1fr; }
}

/* ============================================================================
   租期与续租（追加）
   —— 提醒条、订单卡里的租期块与进度条、续租按钮。
      配色沿用上面的变量，临期用 --ads-warn、已到期用 --ads-bad。
   ========================================================================== */

/* ---- 顶部提醒条 ---- */
.ads-alert {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0 0 12px;
  padding: 11px 13px;
  border: 1px solid #ffe0b2;
  border-radius: 12px;
  background: linear-gradient(180deg, #fffaf0, #fff5e6);
}
.ads-alert-ico { flex: 0 0 auto; font-size: 18px; line-height: 1; }
.ads-alert-main { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.ads-alert-main b {
  font-size: 13.5px;
  font-weight: 600;
  color: #7a4b00;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.ads-alert-main span { font-size: 12px; color: var(--ads-ink-3); }
.ads-alert .ads-btn { flex: 0 0 auto; }

/* ---- 订单卡里的租期块 ---- */
.ads-term {
  margin-top: 8px;
  padding: 9px 11px;
  border-radius: 10px;
  background: var(--ads-soft);
  border: 1px solid var(--ads-line);
}
.ads-term-top {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 8px;
}
.ads-term-dates {
  font-size: 12px;
  color: var(--ads-ink-2);
  font-variant-numeric: tabular-nums;
}
.ads-term-left { font-size: 12.5px; font-weight: 600; white-space: nowrap; }

/* 三档状态：up 正常在投 / soon 临期 / over 已到期 */
.ads-term-up   .ads-term-left { color: var(--ads-ok); }
.ads-term-soon { background: #fffaf0; border-color: #ffe0b2; }
.ads-term-soon .ads-term-left { color: var(--ads-warn); }
.ads-term-over { background: #fef4f4; border-color: #f7d4d4; }
.ads-term-over .ads-term-left { color: var(--ads-bad); }

/* ---- 进度条 ---- */
.ads-term-bar {
  margin-top: 7px;
  height: 5px;
  border-radius: 999px;
  background: #e6eaf2;
  overflow: hidden;
}
.ads-term-bar > i {
  display: block;
  height: 100%;
  border-radius: 999px;
  background: var(--ads-ok);
  transition: width .3s ease;
}
.ads-term-soon .ads-term-bar > i { background: var(--ads-warn); }
.ads-term-over .ads-term-bar > i { background: var(--ads-bad); }
.ads-term-foot {
  margin-top: 5px;
  display: flex;
  justify-content: space-between;
  font-size: 11.5px;
  color: var(--ads-ink-3);
  font-variant-numeric: tabular-nums;
}

/* 续租按钮：用主题色实心，跟「撤回」这类次要操作拉开 */
.ads-order-act button[data-renew] { font-weight: 600; }

/* ============================================================================
   电脑端（桌面级版式）
   —— 上面那套是「一副版式撑两端」：760px 以下收紧，761px 以上只是把单列
      拉宽到 1080px。宽屏上卡片纵向堆叠、留白很大，读起来空。
      这一段把 761px 以上拆成两档做真正的桌面栅格：
        · 761–1199px  平板/小窗：KPI 4 列，内容仍单列但更舒展
        · ≥1200px     桌面：容器加宽、KPI 5 列、广告位与订单改双列
      只用 CSS，不动 DOM 与 JS —— 移动端（≤760px）一个像素都不受影响。
   ========================================================================== */

/* ---- 761px 起：整体舒展，不改变结构 ---- */
@media (min-width: 761px) {
  .ads-page { padding: 8px 20px 64px; }

  .ads-hero { padding: 22px 24px; }
  .ads-hero-title { font-size: 24px; }
  .ads-hero-sub { font-size: 14px; }

  .ads-kpis { gap: 12px; margin-top: 14px; }

  .ads-slots,
  .ads-list { gap: 14px; }

  .ads-slot { padding: 18px 20px; }
  .ads-order { padding: 16px 18px; }

  .ads-tabs { gap: 8px; padding: 5px; }
  .ads-tab { padding: 8px 18px; font-size: 14px; }

  /* 弹窗在宽屏上居中、固定宽度（移动端仍是底部弹出的抽屉） */
  .ads-mask { padding: 40px 20px; align-items: center; }
  .ads-modal { max-width: 560px; max-height: 84vh; border-radius: 16px; }
}

/* ---- 1200px 起：真正的桌面栅格 ---- */
@media (min-width: 1200px) {
  .ads-page { max-width: 1200px; padding: 10px 24px 80px; }

  /* 五个指标一横排 —— 宽屏下方块留白太多，横排一眼扫完 */
  .ads-kpis { grid-template-columns: repeat(5, minmax(0, 1fr)); }

  /* 广告位：两个一行。三个位时最后一行留一个，不至于拉成整行大长条 */
  .ads-slots { grid-template-columns: repeat(2, minmax(0, 1fr)); }

  /* 订单：两个一行。每条自带租期块与统计，独立成块比整行更好比对 */
  .ads-list { grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; }

  /* 订单卡内部：位子/时长/花费那一排横着摊开，宽卡片才用得满 */
  .ads-order-meta { gap: 6px 18px; }

  /* 投放说明这类长文本，宽屏下也按两列排，行宽不至于太长 */
  .ads-guide ol { columns: 2; column-gap: 28px; }
  .ads-guide ol > li { break-inside: avoid; }

  /* 提醒条：宽屏下拉长，右侧按钮不至于贴到很远的角落 */
  .ads-alert { padding: 13px 18px; }
}

/* ---- 超宽屏（≥1600px）：广告位回到三列，铺满三位招商的现实 ---- */
@media (min-width: 1600px) {
  .ads-page { max-width: 1360px; }
  .ads-slots { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

/* ---------- 成长引导条（把广告自然接入成长体系） ---------- */

.ads-growth {
    display: flex;
    align-items: center;
    gap: 12px;
    margin: 12px 14px;
    padding: 14px 16px;
    border: 1px solid #fde68a;
    border-radius: 14px;
    background: linear-gradient(120deg, #fffbeb, #fff);
    text-decoration: none;
    color: #1c1917;
}

.ads-growth > i:first-child {
    flex: 0 0 auto;
    width: 38px;
    height: 38px;
    border-radius: 11px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 19px;
    color: #b45309;
    background: #fef3c7;
}

.ads-growth-body { flex: 1 1 auto; display: flex; flex-direction: column; min-width: 0; }
.ads-growth-body b { font-size: 14px; font-weight: 600; }
.ads-growth-body span { font-size: 12px; color: #78716c; margin-top: 1px; }
.ads-growth-arrow { color: #a8a29e; font-size: 18px; flex: 0 0 auto; }

/* ============================================================================
   位子地图（区域图 + 价格对比表）
   —— renderMap() / mapTable() 用。
      线框图只画「页面骨架」，三个位子按真实出现的位置落色块：
        · 全站浮层  → 落在页面右下角浮出
        · 激励弹窗  → 落在棋盘中央弹出
        · 信息流条  → 落在棋盘下方横条
      色块点一下就直接进下单，所以它长得像按钮。
   ========================================================================== */

.ads-map { display: grid; gap: 12px; }
.ads-map-head {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  font-size: 12.5px;
  color: var(--ads-ink-3);
}
.ads-map-head b { font-size: 14px; font-weight: 700; color: var(--ads-ink); }
.ads-map-legend {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  margin-left: auto;
}
.ads-map-legend > i {
  width: 11px;
  height: 11px;
  border-radius: 3px;
  background: var(--ads-primary);
  display: inline-block;
}

/* ---- 线框：一块「假页面」 ---- */
.ads-wire {
  position: relative;
  padding: 10px;
  border: 1px solid #dfe4ee;
  border-radius: 12px;
  background: #fff;
  box-shadow: 0 1px 3px rgba(20, 30, 60, .04);
  overflow: hidden;
}
.ads-wire + .ads-wire { margin-top: 12px; }

/* 顶栏 */
.ads-wire-top {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 0 2px 9px;
  border-bottom: 1px dashed #e8ebf1;
}
.ads-wire-logo {
  width: 46px;
  height: 12px;
  border-radius: 4px;
  background: #c8d1e2;
  flex: 0 0 auto;
}
.ads-wire-nav {
  width: 34px;
  height: 8px;
  border-radius: 4px;
  background: #e3e8f2;
  flex: 0 0 auto;
}

/* 正文：左信息流 + 右内容区 */
.ads-wire-main {
  display: grid;
  grid-template-columns: 1.35fr 1fr;
  gap: 10px;
  padding: 10px 0 12px;
}
.ads-wire-feed,
.ads-wire-side {
  position: relative;
  min-height: 82px;
  padding: 10px;
  border-radius: 9px;
  background: var(--ads-soft);
  display: flex;
  flex-direction: column;
  gap: 7px;
  justify-content: center;
}
.ads-wire-line {
  display: block;
  height: 7px;
  border-radius: 4px;
  background: #dde4f0;
}
.ads-wire-line.short { width: 58%; }
.ads-wire-note {
  font-size: 11.5px;
  color: #a2aab8;
  text-align: center;
  letter-spacing: .3px;
}
.ads-wire-foot {
  padding-top: 9px;
  border-top: 1px dashed #e8ebf1;
}
.ads-wire-foot .ads-wire-line { width: 40%; background: #eaeef6; }

/* 全站浮层位：贴在页面右下角 */
.ads-zone-float {
  position: absolute;
  right: 12px;
  bottom: 12px;
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 6px;
}

/* ---- 线框：拾光之旅页 ---- */
.ads-wire-game { padding-bottom: 12px; }
.ads-wire-gamehead {
  display: flex;
  align-items: center;
  gap: 7px;
  padding: 0 2px 9px;
  border-bottom: 1px dashed #e8ebf1;
  font-size: 12.5px;
  color: var(--ads-ink-2);
}
.ads-wire-gamehead b { font-size: 12.5px; font-weight: 600; color: var(--ads-ink-2); }
.ads-wire-gameico { font-size: 14px; line-height: 1; }

.ads-wire-board {
  position: relative;
  margin: 12px 0 10px;
  padding: 26px 0;
  border-radius: 10px;
  background:
    repeating-linear-gradient(90deg, #eef2f9 0 9%, #fff 9% 10%),
    repeating-linear-gradient(0deg, #eef2f9 0 9%, #fff 9% 10%);
  min-height: 132px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.ads-wire-grid {
  position: absolute;
  inset: 6px;
  border: 1px dashed #e2e8f3;
  border-radius: 7px;
  pointer-events: none;
}
/* 激励位：棋盘中央弹出的那张卡 */
.ads-wire-pop {
  position: relative;
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 7px;
  padding: 12px 16px;
  border-radius: 11px;
  background: #fff;
  border: 1px solid #ffe0b2;
  box-shadow: 0 6px 20px rgba(20, 30, 60, .10);
}
/* 信息流位：棋盘下面的横条 */
.ads-wire-feedbar {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 8px;
  border-radius: 9px;
  background: var(--ads-soft);
}

/* ---- 色块（= 可直接下单的按钮） ---- */
.ads-zone {
  /* v3.0.0：占用徽标是绝对定位的子元素，父级必须是定位上下文，
     否则会往上一路找到 .ads-map 甚至 body，徽标跑到页面角落。 */
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  max-width: 100%;
  padding: 6px 10px;
  border: 1px solid var(--ads-primary);
  border-radius: 9px;
  background: #fff7ee;
  color: #b45309;
  font-size: 12.5px;
  font-weight: 600;
  line-height: 1.35;
  cursor: pointer;
  text-align: left;
  transition: transform .12s ease, box-shadow .12s ease, background .12s ease;
}
.ads-zone:hover:not([disabled]) {
  background: #fff1de;
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(250, 140, 22, .20);
}
.ads-zone:active:not([disabled]) { transform: translateY(0); }
.ads-zone-ico { flex: 0 0 auto; font-size: 14px; line-height: 1; }
.ads-zone-name {
  flex: 0 1 auto;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.ads-zone-price {
  flex: 0 0 auto;
  font-variant-numeric: tabular-nums;
  color: #e08700;
}
.ads-zone-price em { font-size: 11px; font-style: normal; font-weight: 500; color: var(--ads-ink-3); }
.ads-zone-off,
.ads-zone[disabled] {
  border-color: #e2e6ef;
  border-style: dashed;
  background: #fafbfd;
  color: #a9b0bd;
  cursor: not-allowed;
}
.ads-zone-off .ads-zone-price { color: #a9b0bd; }

/* ---- 价格对比表 ---- */
.ads-maplist { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.ads-ptable {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
  background: #fff;
  border: 1px solid var(--ads-line);
  border-radius: 12px;
  overflow: hidden;
}
.ads-ptable thead th {
  padding: 9px 11px;
  background: var(--ads-soft);
  color: var(--ads-ink-2);
  font-size: 12px;
  font-weight: 600;
  text-align: left;
  white-space: nowrap;
}
.ads-ptable td {
  padding: 10px 11px;
  border-top: 1px solid var(--ads-line);
  vertical-align: middle;
}
.ads-ptable tbody tr:hover { background: #fcfdff; }
.ads-pt-ico { margin-right: 6px; font-size: 15px; vertical-align: -1px; }
.ads-pt-where { color: var(--ads-ink-3); font-size: 12.5px; }
.ads-pt-price { font-weight: 700; color: #e08700; white-space: nowrap; font-variant-numeric: tabular-nums; }
.ads-pt-price em { font-size: 11px; font-style: normal; font-weight: 500; color: var(--ads-ink-3); }
.ads-pt-days { white-space: nowrap; }
.ads-pt-act { text-align: right; white-space: nowrap; }
.ads-tr-off { background: #fbfcfd; color: #a9b0bd; }
.ads-tr-off td { color: #a9b0bd; }
.ads-tr-off .ads-pt-price { color: #a9b0bd; }
.ads-yes { color: var(--ads-ok); font-weight: 800; font-variant-numeric: tabular-nums; }
.ads-no { color: var(--ads-bad); font-size: 12.5px; font-weight: 600; }
.ads-dim { color: #a9b0bd; font-size: 12.5px; }

/* ============================================================================
   下单弹窗：三步步骤条
   —— 选位子 → 填素材 → 确认投放。已走过的步骤可点回改。
   ========================================================================== */

.ads-steps {
  display: flex;
  align-items: center;
  gap: 0;
  margin: 0 0 14px;
  padding: 0 2px;
}
.ads-stp {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  flex: 0 0 auto;
  font-size: 12.5px;
  font-weight: 600;
  color: var(--ads-ink-3);
  white-space: nowrap;
}
.ads-stp > i {
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: #eef1f7;
  color: #98a1b2;
  font-size: 11.5px;
  font-style: normal;
  font-weight: 700;
  line-height: 20px;
  text-align: center;
  flex: 0 0 auto;
}
.ads-stp.on { color: var(--ads-primary); }
.ads-stp.on > i { background: var(--ads-primary); color: #fff; }
.ads-stp.done { color: var(--ads-ok); cursor: pointer; }
.ads-stp.done > i { background: #e6f7f0; color: var(--ads-ok); }
.ads-stp[data-goto]:hover { opacity: .8; }
.ads-stp-line {
  flex: 1 1 auto;
  height: 2px;
  margin: 0 8px;
  border-radius: 2px;
  background: #e8ebf1;
  font-size: 0;
  font-style: normal;
}

.ads-stepbody { min-height: 40px; }

/* 步骤 1：加大的位子选择卡 */
.ads-picker-lg { grid-template-columns: 1fr; gap: 8px; }
.ads-pick-name { display: block; font-size: 13.5px; font-weight: 700; }
.ads-pick-ico { display: block; font-size: 18px; line-height: 1; margin-bottom: 2px; }
.ads-pick-price { display: block; margin-top: 2px; font-size: 12.5px; color: #e08700; font-weight: 700; }
.ads-pick-where { display: block; margin-top: 1px; font-size: 11.5px; font-weight: 500; color: var(--ads-ink-3); }
.ads-pick-days { display: block; margin-top: 4px; font-size: 11.5px; font-weight: 500; color: var(--ads-ink-3); }
.ads-picker-lg .ads-pick {
  text-align: left;
  padding: 11px 13px;
  position: relative;
}
.ads-picker-lg .ads-pick.on { background: #fff7ee; }
.ads-picker-lg .ads-pick.on::after {
  content: '✓';
  position: absolute;
  top: 9px;
  right: 11px;
  font-size: 13px;
  font-weight: 800;
  color: var(--ads-primary);
}

/* 步骤 3：确认的位子摘要 */
.ads-confirm-slot {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 12px 0 0;
  padding: 10px 12px;
  border-radius: 11px;
  background: #fffaf2;
  border: 1px solid #ffe6c7;
}
.ads-confirm-slot > div { min-width: 0; display: flex; flex-direction: column; }
.ads-confirm-slot b { font-size: 13.5px; font-weight: 700; color: #7a4b00; }
.ads-confirm-slot span { font-size: 12px; color: var(--ads-ink-3); }

/* ============================================================================
   窄屏：区域图改竖排，线框正文由两栏收成一栏
   ========================================================================== */
@media (max-width: 760px) {
  .ads-wire-main { grid-template-columns: 1fr; }
  .ads-wire-side { min-height: 54px; }
  .ads-zone-float {
    position: static;
    align-items: stretch;
    margin-top: 10px;
  }
  .ads-zone { width: 100%; justify-content: flex-start; }
  .ads-zone-name { white-space: normal; }
  .ads-steps { flex-wrap: wrap; gap: 6px 0; }
  .ads-stp { font-size: 12px; }
  .ads-stp-line { margin: 0 5px; }
  .ads-maplist { margin: 0 -2px; }
  .ads-ptable { min-width: 520px; }
  .ads-ptable thead th,
  .ads-ptable td { padding: 9px 9px; }
}

/* ============================================================================
   位子管理（v2.7.0）—— 站长后台页签
   与主系统「广告管理」互补：那边管素材，这边管位子与定价。
   ========================================================================== */
.ads-adm-pend {
  margin: 0 2px 12px;
  padding: 12px 14px;
  border-radius: 12px;
  background: #f0f7ff;
  border: 1px solid #cfe4ff;
}
.ads-adm-pend > b { font-size: 13.5px; color: #0b5fd0; display: block; }
.ads-adm-pend > span { font-size: 12px; color: var(--ads-ink-3); display: block; margin: 3px 0 9px; }
.ads-adm-pendlist { display: flex; flex-direction: column; gap: 7px; }
.ads-adm-penditem {
  display: flex; align-items: center; gap: 8px;
  padding: 8px 10px; border-radius: 9px; background: #fff;
  border: 1px solid #e3edfa;
}
.ads-adm-penditem code {
  font-size: 12.5px; color: #1d2129; background: #f2f4f7;
  padding: 2px 7px; border-radius: 5px;
}
.ads-adm-pendhit { font-size: 12px; color: var(--ads-ink-3); flex: 1; }

/* 与主系统「广告管理」的对照说明（可折叠） */
.ads-adm-rel {
  margin: 0 2px 12px;
  border-radius: 10px;
  background: #fafbfc;
  border: 1px solid #eceef1;
  overflow: hidden;
}
.ads-adm-rel > summary {
  cursor: pointer;
  padding: 9px 13px;
  font-size: 12.5px;
  color: var(--ads-ink-2);
  user-select: none;
  list-style: none;
}
.ads-adm-rel > summary::-webkit-details-marker { display: none; }
.ads-adm-rel > summary::before {
  content: '▸';
  display: inline-block;
  margin-right: 6px;
  color: var(--ads-ink-3);
  transition: transform .15s;
}
.ads-adm-rel[open] > summary::before { transform: rotate(90deg); }
.ads-adm-rel > summary:hover { color: #0b5fd0; }
.ads-adm-relbody {
  padding: 0 14px 13px;
  font-size: 12.5px;
  line-height: 1.75;
  color: var(--ads-ink-2);
}
.ads-adm-relbody > p { margin: 0 0 8px; }
.ads-adm-reltbl {
  width: 100%;
  border-collapse: collapse;
  margin: 9px 0;
  background: #fff;
  border-radius: 8px;
  overflow: hidden;
  font-size: 12px;
}
.ads-adm-reltbl th {
  text-align: left;
  padding: 7px 10px;
  background: #f4f6f8;
  color: var(--ads-ink-3);
  font-weight: 600;
  border-bottom: 1px solid #eaedf1;
}
.ads-adm-reltbl td {
  padding: 7px 10px;
  border-bottom: 1px solid #f2f4f6;
  color: var(--ads-ink-2);
  vertical-align: top;
}
.ads-adm-reltbl tr:last-child td { border-bottom: 0; }
.ads-adm-reltbl code {
  font-size: 11px;
  color: var(--ads-ink-3);
  background: #f2f4f7;
  padding: 1px 5px;
  border-radius: 4px;
}
.ads-adm-reltip {
  margin: 8px 0 0 !important;
  padding-top: 8px;
  border-top: 1px dashed #e6e9ed;
  color: var(--ads-ink-3);
  font-size: 12px;
}

/* 表单里的「对应主系统形态」提示，跟模板下拉框走 */
.ads-tpl-compat {
  color: #0b5fd0;
  background: #f0f7ff;
  border-radius: 7px;
  padding: 6px 10px !important;
  margin-top: 6px !important;
}

/* ============================================================================
   经营看板（v2.8.0）—— 位子管理页签里的真实经营数字
   后端 site_stats 一直在算，前端以前从没接过；这一版补上，
   并把「去重 UV / 人均频次 / 素材级 / 分端位」四个新维度一起排出来。
   ========================================================================== */
.ads-board {
  margin: 0 2px 14px;
  padding: 14px;
  border-radius: 12px;
  background: #fff;
  border: 1px solid #eceef1;
}
.ads-board-load {
  font-size: 12.5px; color: var(--ads-ink-3); padding: 8px 2px;
}
.ads-board-head { margin-bottom: 12px; }
.ads-board-head > b { font-size: 14.5px; display: block; }
.ads-board-head > span { font-size: 12px; color: var(--ads-ink-3); display: block; margin-top: 3px; }

.ads-board-kpi {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(112px, 1fr));
  gap: 9px;
  margin-bottom: 14px;
}
.ads-board-cell {
  padding: 10px 11px;
  border-radius: 9px;
  background: #f8fafc;
  border: 1px solid #eef1f5;
}
.ads-board-lb { font-size: 11.5px; color: var(--ads-ink-3); display: block; }
.ads-board-vl {
  font-size: 19px; font-weight: 700; color: #1d2129;
  display: block; margin: 2px 0 1px; line-height: 1.2;
}
.ads-board-sb { font-size: 11px; color: var(--ads-ink-3); display: block; }

.ads-board-block { margin-bottom: 14px; }
.ads-board-bt {
  font-size: 12.5px; font-weight: 600; color: var(--ads-ink-2);
  margin-bottom: 8px;
}

/* 趋势柱状：纯 CSS，不引图表库 */
.ads-board-chart {
  display: flex; align-items: flex-end; gap: 3px;
  height: 88px; padding: 0 2px;
}
.ads-board-bar {
  flex: 1; min-width: 0;
  display: flex; flex-direction: column; align-items: center;
  height: 100%; justify-content: flex-end;
}
.ads-board-bar > i {
  display: block; width: 100%;
  background: linear-gradient(180deg, #4a9eff, #0b5fd0);
  border-radius: 3px 3px 0 0;
  min-height: 2px;
}
.ads-board-bar:hover > i { background: linear-gradient(180deg, #0b5fd0, #084a9e); }
.ads-board-bar > span {
  font-size: 9px; color: var(--ads-ink-3);
  margin-top: 3px; white-space: nowrap;
  transform: rotate(-45deg); transform-origin: center;
}

.ads-board-tbl {
  width: 100%; border-collapse: collapse; font-size: 12px;
  background: #fff; border-radius: 8px; overflow: hidden;
}
.ads-board-tbl th {
  text-align: left; padding: 7px 9px;
  background: #f4f6f8; color: var(--ads-ink-3);
  font-weight: 600; border-bottom: 1px solid #eaedf1;
}
.ads-board-tbl td {
  padding: 7px 9px; border-bottom: 1px solid #f4f6f8;
  color: var(--ads-ink-2);
}
.ads-board-tbl tr:last-child td { border-bottom: 0; }
.ads-board-tbl code {
  font-size: 11px; color: var(--ads-ink-3);
  background: #f2f4f7; padding: 1px 5px; border-radius: 4px;
}
.ads-board-mat { max-width: 160px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.ads-board-tip {
  margin: 0; font-size: 11.5px; color: var(--ads-ink-3);
  line-height: 1.65; padding-top: 10px;
  border-top: 1px dashed #e6e9ed;
}

.ads-adm-bar {
  display: flex; align-items: center; justify-content: space-between;
  margin: 4px 2px 10px;
}.ads-adm-bar b { font-size: 14px; }

.ads-adm-list { display: flex; flex-direction: column; gap: 9px; }
.ads-adm-row {
  display: flex; align-items: center; gap: 12px;
  padding: 12px 14px; border-radius: 12px;
  background: #fff; border: 1px solid #eceef1;
}
.ads-adm-row.pend { background: #fbfdff; border-color: #dceafd; }
.ads-adm-row:hover { border-color: #d9dce1; }
.ads-adm-main { display: flex; align-items: center; gap: 11px; flex: 1; min-width: 0; }
.ads-adm-ico {
  font-size: 21px; width: 38px; height: 38px; flex: none;
  display: flex; align-items: center; justify-content: center;
  background: #f4f5f7; border-radius: 10px;
}
.ads-adm-meta { min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.ads-adm-name {
  font-size: 14px; font-weight: 600; color: #1d2129;
  display: flex; align-items: center; gap: 6px; flex-wrap: wrap;
}
.ads-adm-key {
  font-size: 11.5px; color: #86909c; background: #f7f8fa;
  padding: 1px 6px; border-radius: 4px; align-self: flex-start;
}
.ads-adm-sub { font-size: 12px; color: var(--ads-ink-3); }
.ads-adm-tag {
  font-size: 11px; font-style: normal; padding: 1px 7px; border-radius: 20px;
  font-weight: 500; line-height: 1.6;
}
.ads-adm-tag.on { background: #e8ffea; color: #00b42a; }
.ads-adm-tag.off { background: #f2f3f5; color: #86909c; }
.ads-adm-tag.pend { background: #e8f3ff; color: #165dff; }
.ads-adm-tag.seed { background: #fff7e8; color: #d25f00; }

.ads-adm-sides { display: flex; gap: 6px; flex: none; }
.ads-adm-side {
  display: flex; align-items: center; gap: 4px; cursor: pointer;
  padding: 5px 9px; border-radius: 8px; background: #f7f8fa;
  border: 1px solid #eceef1; font-size: 12px; color: #4e5969;
}
.ads-adm-side.off { opacity: .5; }
.ads-adm-side input { margin: 0; }
.ads-adm-side em { font-style: normal; font-weight: 600; color: #d25f00; }

.ads-adm-ops { display: flex; align-items: center; gap: 7px; flex: none; }
.ads-adm-switch { position: relative; display: inline-block; width: 38px; height: 21px; cursor: pointer; }
.ads-adm-switch input { opacity: 0; width: 0; height: 0; }
.ads-adm-switch span {
  position: absolute; inset: 0; background: #d6d8db; border-radius: 21px;
  transition: background .18s;
}
.ads-adm-switch span::before {
  content: ''; position: absolute; width: 17px; height: 17px; left: 2px; top: 2px;
  background: #fff; border-radius: 50%; transition: transform .18s;
  box-shadow: 0 1px 3px rgba(0,0,0,.2);
}
.ads-adm-switch input:checked + span { background: #165dff; }
.ads-adm-switch input:checked + span::before { transform: translateX(17px); }

/* 位子表单弹窗 */
.ads-modal-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 16px 20px 12px;
}
.ads-modal-head b { font-size: 16px; }
.ads-modal-x {
  border: 0; background: transparent; cursor: pointer; font-size: 19px;
  color: #86909c; padding: 4px; line-height: 1;
}
.ads-modal-x:hover { color: #1d2129; }
.ads-modal-body { padding: 0 20px 6px; }
.ads-field { margin-bottom: 13px; display: flex; flex-direction: column; gap: 5px; }
.ads-field > label { font-size: 13px; color: #4e5969; font-weight: 500; }
.ads-field input,
.ads-field select {
  width: 100%; box-sizing: border-box; padding: 9px 11px; font-size: 13.5px;
  border: 1px solid #e5e6eb; border-radius: 9px; outline: none; background: #fff;
  color: #1d2129; font-family: inherit;
}
.ads-field input:focus,
.ads-field select:focus { border-color: #165dff; box-shadow: 0 0 0 3px rgba(22,93,255,.1); }
.ads-field input:disabled { background: #f7f8fa; color: #86909c; }
.ads-field-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.ads-field-2 > div,
.ads-field-3 > div { display: flex; flex-direction: column; gap: 5px; }
.ads-field-2 label,
.ads-field-3 label { font-size: 13px; color: #4e5969; font-weight: 500; }
.ads-field-3 { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 12px; }
.ads-field-tip { font-size: 12px; color: var(--ads-ink-3); line-height: 1.6; margin: 4px 0 0; }
.ads-field-tip code {
  background: #f2f3f5; padding: 1px 5px; border-radius: 4px; font-size: 11.5px;
}
.ads-check {
  display: flex; align-items: center; gap: 7px; font-size: 13.5px;
  color: #1d2129; cursor: pointer; margin-bottom: 13px;
}
.ads-modal-foot {
  display: flex; justify-content: flex-end; gap: 10px;
  padding: 12px 20px 18px;
}

/* 「其他位子」区块：图外的 inline / custom 位子 */
.ads-zone-other {
  display: flex; flex-wrap: wrap; gap: 8px;
  margin-top: 10px; padding-top: 10px; border-top: 1px dashed #eceef1;
}
.ads-zone-other:empty { display: none; }

@media (max-width: 760px) {
  .ads-adm-row { flex-wrap: wrap; gap: 9px; }
  .ads-adm-main { flex-basis: 100%; }
  .ads-adm-sides { flex-basis: 100%; }
  .ads-adm-ops { margin-left: auto; }
  .ads-field-2, .ads-field-3 { grid-template-columns: 1fr; }
}

/* ============================================================================
   v2.8.2 —— 开屏 / 插屏弹层 · 广告角标
   ========================================================================== */
/* 整屏遮罩：开屏全黑压顶，插屏四周留白弱一点 */
.lsads-ovl {
  position: fixed; inset: 0; z-index: 99999;
  display: flex; align-items: center; justify-content: center;
  background: rgba(10, 12, 16, .92);
  animation: lsadsOvlIn .25s ease-out;
}
.lsads-ovl-inter { background: rgba(10, 12, 16, .62); }
@keyframes lsadsOvlIn { from { opacity: 0; } to { opacity: 1; } }

/* 弹层里的素材卡 */
.lsads-ovl .ls-ads-slot { display: block; position: relative; max-width: min(520px, 92vw); }
.lsads-ovl .ls-ads-fullcard {
  position: relative; display: block; overflow: hidden;
  border-radius: 14px; background: #fff;
  box-shadow: 0 18px 60px rgba(0,0,0,.45);
}
.lsads-ovl .ls-ads-big { display: block; width: 100%; max-height: 62vh; object-fit: cover; }
.lsads-ovl .ls-ads-title {
  display: block; padding: 12px 16px 14px; font-size: 15px; color: #1d2129;
}

/* 跳过 / 关闭：倒计时没走完是灰的，走完亮起 */
.lsads-ovl .ls-ads-skip {
  position: absolute; top: 12px; right: 12px; z-index: 2;
  padding: 6px 14px; border-radius: 999px;
  background: rgba(0,0,0,.55); color: #fff;
  font-size: 12.5px; cursor: not-allowed; user-select: none;
  backdrop-filter: blur(4px);
}
.lsads-ovl .ls-ads-skip.ready {
  background: rgba(255,255,255,.95); color: #1d2129;
  cursor: pointer; font-weight: 600;
}

/* 「广告」角标：所有非原生位子的合规标识 */
.ls-ads-slot { position: relative; }
.ls-ads-mark {
  position: absolute; top: 0; left: 0; z-index: 2;
  padding: 2px 8px; font-style: normal;
  font-size: 10.5px; line-height: 1.6;
  color: #fff; background: rgba(0,0,0,.38);
  border-radius: 0 0 8px 0;
  pointer-events: none;
}
.lsads-ovl .ls-ads-mark {
  position: absolute; top: 0; left: 0;
  border-radius: 14px 0 8px 0;
}

/* 原生信息流：跟宿主列表卡片同构，不额外套壳 */
.ls-ads-native { list-style: none; }

/* ============================================================================
   v2.9.0 新增：多素材轮播 / 定向与预算 / AB 对比
   —— 轮播样式在 slots.js 的 injectStyle 里随脚本注入（全站浮层用），
      这里补的是 /ads 后台页自己的部分。
   ============================================================================ */

/* 定向与节奏的「小标签」行：订单卡片上一排灰底小胶囊 */
.ads-chips { display: flex; flex-wrap: wrap; gap: 6px; margin: 10px 0 2px; }
.ads-chip {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 3px 9px; border-radius: 999px;
  background: #f2f3f5; color: #4e5969;
  font-size: 12px; line-height: 1.7;
}
.ads-chip b { color: #1d2129; font-weight: 600; }
.ads-chip .ads-chip-d { font-style: normal; color: #86909c; font-size: 11px; }
.ads-chip .ads-chip-warn {
  font-style: normal; color: #d4380d; background: #fff1e9;
  padding: 0 6px; border-radius: 999px; font-size: 11px;
}
/* 权重的小按钮：数字 +「调整」，点一下就改 */
.ads-wbtn {
  border: 1px solid #d9dce1; background: #fff; color: #1d2129;
  border-radius: 999px; padding: 1px 9px; cursor: pointer;
  font-size: 12px; font-family: inherit;
}
.ads-wbtn em { font-style: normal; color: #165dff; margin-left: 3px; }
.ads-wbtn:hover { border-color: #165dff; color: #165dff; }

/* 预算进度：与租期条同构，但超支时整体转红 */
.ads-budget {
  margin: 10px 0 2px; padding: 9px 11px;
  border: 1px solid #e5e6eb; border-radius: 10px; background: #fafbfc;
}
.ads-budget-over { border-color: #ffccc7; background: #fff2f0; }
.ads-budget-top {
  display: flex; justify-content: space-between; align-items: baseline; gap: 10px;
  font-size: 12px; color: #4e5969; margin-bottom: 6px;
}
.ads-budget-top em { font-style: normal; color: #86909c; font-size: 11px; }
.ads-budget-over .ads-budget-top b { color: #cf1322; }

/* AB 对比表：结论列用小色块区分 */
.ads-ab-tbl code { margin-left: 6px; }
.ads-ab-tag {
  font-style: normal; font-size: 11.5px; padding: 1px 8px;
  border-radius: 999px; white-space: nowrap;
}
.ads-ab-tag.win { background: #e8ffea; color: #00a854; }
.ads-ab-tag.tie { background: #f2f3f5; color: #4e5969; }
.ads-ab-tag.wait { background: #fff7e8; color: #d46b08; }
.ads-board-note { margin: 8px 0 0; font-size: 12px; color: #86909c; }

/* 下单弹窗：时段格子 —— 24 个小方块，按住可拖选一段 */
.ads-hours {
  display: grid; grid-template-columns: repeat(12, 1fr);
  gap: 4px; margin-top: 4px; user-select: none;
}
.ads-hour {
  padding: 5px 0; border: 1px solid #e5e6eb; border-radius: 6px;
  background: #fff; color: #86909c; font-size: 11.5px;
  font-family: inherit; cursor: pointer; transition: none;
}
.ads-hour.on { background: #e8f3ff; border-color: #165dff; color: #165dff; font-weight: 600; }
.ads-hour:hover { border-color: #165dff; }

/* 节奏三选一：卡片式按钮，选中描边 */
.ads-paces { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.ads-pace {
  display: flex; flex-direction: column; gap: 3px; align-items: flex-start;
  padding: 9px 11px; border: 1px solid #e5e6eb; border-radius: 10px;
  background: #fff; cursor: pointer; text-align: left; font-family: inherit;
}
.ads-pace b { font-size: 13px; color: #1d2129; }
.ads-pace span { font-size: 11.5px; color: #86909c; line-height: 1.5; }
.ads-pace.on { border-color: #165dff; background: #f2f7ff; }
.ads-pace.on b { color: #165dff; }

/* 版块多选按钮 */
.ads-bbs {
  padding: 3px 10px; border: 1px solid #e5e6eb; border-radius: 999px;
  background: #fff; color: #4e5969; font-size: 12px;
  font-family: inherit; cursor: pointer;
}
.ads-bbs.on { background: #e8f3ff; border-color: #165dff; color: #165dff; font-weight: 600; }
.ads-chips-load { font-size: 12px; color: #86909c; }

/* ================= v2.9.1 回收站（自 v2.5.2 移植恢复） ================= */
.ads-trash-tip {
  padding: 14px 16px;
  margin-bottom: 14px;
  border-radius: 14px;
  background: var(--ads-soft);
  border: 1px solid var(--ads-line);
  color: var(--ads-ink-2);
  font-size: 13px;
  line-height: 1.75;
}
.ads-trash-tip > b { display: block; margin-bottom: 6px; color: var(--ads-ink); font-size: 13.5px; }
.ads-trash-tip ul { margin: 0; padding-left: 18px; }
.ads-trash-tip li { margin: 3px 0; }
.ads-trash-tip li b { color: var(--ads-ink); }

.ads-trash-bar {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  padding: 10px 14px;
  margin-bottom: 12px;
  border-radius: 12px;
  background: var(--ads-card);
  border: 1px solid var(--ads-line);
}
.ads-trash-cnt { color: var(--ads-ink-2); font-size: 13px; }
.ads-trash-cnt b { color: var(--ads-ink); font-weight: 700; }
.ads-trash-sel {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  color: var(--ads-ink-2);
  font-size: 13px;
  cursor: pointer;
  user-select: none;
}
.ads-trash-sel input { cursor: pointer; }
.ads-trash-bar .ads-btn { margin-left: auto; }
.ads-trash-bar .ads-btn + .ads-btn { margin-left: 0; }
.ads-trash-bar .ads-btn:disabled { opacity: .45; cursor: not-allowed; }

.ads-trash-pick {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  padding-top: 3px;
  cursor: pointer;
}
.ads-trash-cb { cursor: pointer; }

.ads-order-trashed {
  border-style: dashed;
  background: linear-gradient(0deg, rgba(0, 0, 0, .012), rgba(0, 0, 0, .012)), var(--ads-card);
}
.ads-order-trashed .ads-order-title,
.ads-order-trashed .ads-order-thumb img { opacity: .62; }
.ads-badge-muted { background: #f2f4f8; color: var(--ads-ink-3); }

/* ---- v2.9.2 短代码参数生成器 ---- */
.ads-code-out {
  width: 100%; box-sizing: border-box; margin-bottom: 6px;
  font-family: var(--ls-font-mono, "SFMono-Regular", Consolas, monospace);
  font-size: 12px; line-height: 1.6; color: var(--ls-text, #333);
  background: var(--ls-bg-soft, #f6f7f9); border: 1px solid var(--ls-line, #e3e5e8);
  border-radius: 6px; padding: 7px 9px; resize: vertical; white-space: pre;
  overflow: auto;
}
.ads-code-out:focus { outline: none; border-color: var(--ls-pri, #4f7cf0); }

/* ==========================================================================
   v3.0.0 数据闭环与策略落地
   —— 新增的几块 UI：暂停徽标 / 投放诊断条 / 位子占用 / A/B 开关
   ========================================================================== */

/* 暂停原因徽标：跟在订单标题后，四种暂停原因共用一套样式，
   靠 title 文字区分（预算用尽 / 匀速暂缓 / 非高峰 / AB 止损）。 */
.ads-pause-tag {
    display: inline-block;
    margin-left: 6px;
    padding: 1px 7px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 500;
    line-height: 18px;
    color: #b45309;
    background: #fef3c7;
    border: 1px solid #fde68a;
    vertical-align: middle;
    white-space: nowrap;
}

/* 投放诊断条：只在「有问题」时出现，所以默认就该显眼但不刺眼。
   三档颜色对应 后端 diag.level 的 ok / warn / bad。 */
.ads-diag {
    display: flex;
    align-items: flex-start;
    gap: 6px;
    margin: 8px 0 2px;
    padding: 8px 10px;
    border-radius: 8px;
    font-size: 12.5px;
    line-height: 1.55;
    color: #334155;
    background: #f1f5f9;
    border: 1px solid #e2e8f0;
}
.ads-diag i { flex: 0 0 auto; margin-top: 1px; opacity: 0.75; }
.ads-diag span { flex: 1 1 auto; word-break: break-word; }

.ads-diag-warn {
    color: #92400e;
    background: #fffbeb;
    border-color: #fde68a;
}
.ads-diag-bad {
    color: #991b1b;
    background: #fef2f2;
    border-color: #fecaca;
}

/* 位子占用徽标：位子色块右下角的小字「已占 2/3」。 */
.ads-zone-cap {
    position: absolute;
    right: 6px;
    bottom: 4px;
    font-size: 10px;
    line-height: 1;
    padding: 2px 5px;
    border-radius: 4px;
    color: #475569;
    background: rgba(241, 245, 249, 0.92);
    border: 1px solid #e2e8f0;
    pointer-events: none;
}
.ads-zone-cap-full {
    color: #b91c1c;
    background: #fee2e2;
    border-color: #fecaca;
}

/* A/B 测试开关：灰 → 亮，点击后展开 B 版素材输入。 */
.ads-ab-toggle {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin-top: 4px;
    padding: 7px 14px;
    border-radius: 8px;
    font-size: 13px;
    cursor: pointer;
    color: #475569;
    background: #f8fafc;
    border: 1px solid #e2e8f0;
    transition: background .15s, border-color .15s, color .15s;
}
.ads-ab-toggle:hover { background: #f1f5f9; border-color: #cbd5e1; }
.ads-ab-toggle.on {
    color: #1d4ed8;
    background: #eff6ff;
    border-color: #bfdbfe;
    font-weight: 500;
}
.ads-ab-toggle i { font-size: 15px; }

/* 深色模式：站点主体是深色的，这几块不加适配会白得刺眼 */
@media (prefers-color-scheme: dark) {
    .ads-pause-tag { color: #fcd34d; background: rgba(180, 83, 9, .18); border-color: rgba(253, 230, 138, .3); }
    .ads-diag { color: #cbd5e1; background: rgba(148, 163, 184, .1); border-color: rgba(148, 163, 184, .2); }
    .ads-diag-warn { color: #fcd34d; background: rgba(180, 83, 9, .14); border-color: rgba(253, 230, 138, .25); }
    .ads-diag-bad { color: #fca5a5; background: rgba(185, 28, 28, .16); border-color: rgba(254, 202, 202, .25); }
    .ads-zone-cap { color: #94a3b8; background: rgba(30, 41, 59, .9); border-color: rgba(148, 163, 184, .25); }
    .ads-zone-cap-full { color: #fca5a5; background: rgba(185, 28, 28, .22); border-color: rgba(254, 202, 202, .3); }
    .ads-ab-toggle { color: #cbd5e1; background: rgba(148, 163, 184, .1); border-color: rgba(148, 163, 184, .2); }
    .ads-ab-toggle.on { color: #93c5fd; background: rgba(37, 99, 235, .18); border-color: rgba(147, 197, 253, .35); }
}

/* ============================================================================
   v3.2.0 批量投放（多选位子 / 套餐预填 / 素材口径 / 逐条核对）
   —— 只在下单弹窗里出现，全部挂在 .ads-page 下，不污染站点其他区域。
   ========================================================================== */

/* ---- 选中角标：比 on::after 更强，且带一点弹入 ---- */
.ads-pick-tick {
  position: absolute;
  top: 8px;
  right: 9px;
  width: 18px;
  height: 18px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: var(--ads-primary, #fa8c16);
  color: #fff;
  font-size: 11px;
  font-style: normal;
  font-weight: 800;
  line-height: 1;
  box-shadow: 0 2px 6px rgba(250, 140, 22, .35);
  animation: adsTickIn .18s ease-out;
}
@keyframes adsTickIn {
  from { transform: scale(.4); opacity: 0; }
  to { transform: scale(1); opacity: 1; }
}
/* 有了真角标，就别再画那个伪元素 ✓ */
.ads-picker-lg .ads-pick.on::after { content: none; }
.ads-pick.on .ads-pick-days { color: var(--ads-primary, #fa8c16); font-weight: 700; }

/* ---- 套餐 ---- */
.ads-bundles { display: grid; gap: 8px; }
.ads-bundle {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  padding: 10px 12px;
  border: 1px solid #eae2d6;
  border-radius: 11px;
  background: linear-gradient(180deg, #fffdfa, #fff9f1);
  cursor: pointer;
  text-align: left;
  font: inherit;
  color: inherit;
  transition: border-color .15s, box-shadow .15s, transform .1s;
}
.ads-bundle:hover:not(:disabled) {
  border-color: var(--ads-primary, #fa8c16);
  box-shadow: 0 3px 10px rgba(250, 140, 22, .12);
}
.ads-bundle:active:not(:disabled) { transform: translateY(1px); }
.ads-bundle.off,
.ads-bundle:disabled {
  opacity: .55;
  cursor: not-allowed;
  background: #fafafa;
  border-color: #ececec;
}
.ads-bundle-ico {
  flex: 0 0 auto;
  font-size: 19px;
  line-height: 1;
}
.ads-bundle-mid {
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.ads-bundle-mid b { font-size: 13.5px; font-weight: 700; color: #4a3200; }
.ads-bundle-mid span {
  font-size: 11.5px;
  color: var(--ads-ink-3);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.ads-bundle-p {
  flex: 0 0 auto;
  text-align: right;
  display: flex;
  flex-direction: column;
  gap: 1px;
}
.ads-bundle-p em {
  font-style: normal;
  font-size: 15px;
  font-weight: 800;
  color: #e08700;
  font-variant-numeric: tabular-nums;
}
.ads-bundle-p i {
  font-style: normal;
  font-size: 11px;
  color: var(--ads-ink-3);
}

/* ---- 已选 · 逐条配置 ---- */
.ads-cart,
.ads-crows {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 8px;
  border-radius: 11px;
  background: #fbfaf7;
  border: 1px solid #efe9df;
}
.ads-crow {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 8px;
  border-radius: 9px;
  background: #fff;
  border: 1px solid #f0ece4;
  font-size: 12.5px;
  min-width: 0;
}
.ads-crow-ico { flex: 0 0 auto; font-size: 15px; line-height: 1; }
.ads-crow-name {
  flex: 1 1 auto;
  min-width: 0;
  font-weight: 600;
  color: var(--ads-ink);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.ads-crow-days {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  gap: 5px;
  color: var(--ads-ink-2);
  font-variant-numeric: tabular-nums;
}
.ads-crow-days b { color: var(--ads-ink); font-weight: 800; }
.ads-crow-btn {
  flex: 0 0 auto;
  width: 22px;
  height: 22px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1px solid #e6e0d6;
  border-radius: 6px;
  background: #fff;
  color: var(--ads-ink-2);
  font-size: 13px;
  line-height: 1;
  cursor: pointer;
  padding: 0;
  transition: border-color .15s, color .15s, background .15s;
}
.ads-crow-btn:hover:not(:disabled) {
  border-color: var(--ads-primary, #fa8c16);
  color: var(--ads-primary, #fa8c16);
}
.ads-crow-btn:disabled { opacity: .35; cursor: not-allowed; }
.ads-crow-del { color: #c9ced8; border-color: #eef0f4; }
.ads-crow-del:hover { border-color: #f3c9c9; color: var(--ads-bad, #e04a4a); background: #fff6f6; }
.ads-crow-keep { flex: 0 0 auto; width: 22px; }
.ads-crow-sum {
  flex: 0 0 auto;
  min-width: 62px;
  text-align: right;
  font-weight: 700;
  color: #e08700;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

/* ---- 常驻汇总条 ---- */
.ads-slim {
  position: sticky;
  bottom: -1px;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  flex-wrap: wrap;
  margin: 12px -20px -6px;
  padding: 10px 20px;
  background: linear-gradient(180deg, rgba(255, 250, 242, .92), #fff7ee);
  border-top: 1px solid #ffe6c7;
  backdrop-filter: blur(6px);
  font-size: 12.5px;
  color: #7a4b00;
}
.ads-slim > span { font-variant-numeric: tabular-nums; }
.ads-slim b { font-weight: 800; color: #b35c00; }
.ads-slim > i {
  font-style: normal;
  font-size: 11.5px;
  color: var(--ads-ink-3);
}
.ads-slim.poor {
  background: linear-gradient(180deg, rgba(255, 244, 244, .94), #fef4f4);
  border-top-color: #f7d4d4;
  color: var(--ads-bad, #e04a4a);
}
.ads-slim.poor b { color: var(--ads-bad, #e04a4a); }
.ads-slim.poor > i { color: var(--ads-bad, #e04a4a); font-weight: 600; }

/* ---- 素材口径 ---- */
.ads-mm {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
}
.ads-mm-btn {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 2px;
  padding: 9px 11px;
  border: 1px solid #e8ebf1;
  border-radius: 10px;
  background: #fff;
  cursor: pointer;
  font: inherit;
  text-align: left;
  transition: border-color .15s, background .15s;
}
.ads-mm-btn b { font-size: 13px; font-weight: 700; color: var(--ads-ink); }
.ads-mm-btn span { font-size: 11.5px; color: var(--ads-ink-3); }
.ads-mm-btn:hover { border-color: #f5c99b; }
.ads-mm-btn.on {
  border-color: var(--ads-primary, #fa8c16);
  background: #fff7ee;
}
.ads-mm-btn.on b { color: var(--ads-primary, #fa8c16); }

/* ---- 每条素材 chips ---- */
.ads-mchips { display: flex; flex-wrap: wrap; gap: 6px; }
.ads-mchip {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  max-width: 100%;
  padding: 6px 11px;
  border: 1px solid #e8ebf1;
  border-radius: 999px;
  background: #fff;
  font: inherit;
  font-size: 12.5px;
  color: var(--ads-ink-2);
  cursor: pointer;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  transition: border-color .15s, background .15s, color .15s;
}
.ads-mchip:hover { border-color: #f5c99b; color: var(--ads-ink); }
.ads-mchip.on {
  border-color: var(--ads-primary, #fa8c16);
  background: #fff7ee;
  color: var(--ads-primary, #fa8c16);
  font-weight: 600;
}
.ads-mchip i.ok {
  font-style: normal;
  font-size: 10px;
  font-weight: 800;
  color: #fff;
  background: var(--ads-ok, #17b26a);
  border-radius: 50%;
  width: 14px;
  height: 14px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  line-height: 1;
}

/* ---- 标题里的条数小标 ---- */
.ads-title-n {
  display: inline-block;
  margin-left: 6px;
  padding: 1px 7px;
  border-radius: 999px;
  background: #fff1e0;
  color: #b35c00;
  font-size: 11.5px;
  font-style: normal;
  font-weight: 700;
  vertical-align: 2px;
}

/* ---- 窄屏收口 ---- */
@media (max-width: 760px) {
  .ads-slim { margin-left: -14px; margin-right: -14px; padding-left: 14px; padding-right: 14px; }
  .ads-crow { flex-wrap: wrap; row-gap: 5px; }
  .ads-crow-name { flex: 1 1 60%; }
  .ads-crow-sum { min-width: 0; }
  .ads-mm { grid-template-columns: 1fr; }
  .ads-bundle-p em { font-size: 14px; }
}

/* 深色模式 */
@media (prefers-color-scheme: dark) {
  .ads-bundle { background: #1e232d; border-color: #2f3742; }
  .ads-bundle-mid b { color: #f0d9b5; }
  .ads-cart, .ads-crows { background: #1b2028; border-color: #2c333d; }
  .ads-crow { background: #222933; border-color: #2f3742; }
  .ads-crow-btn { background: #222933; border-color: #39414d; color: #cbd5e1; }
  .ads-slim { background: rgba(40, 32, 22, .95); border-top-color: #4a3a22; color: #f0d9b5; }
  .ads-slim b { color: #ffc078; }
  .ads-slim.poor { background: rgba(60, 26, 26, .95); border-top-color: #5c2b2b; color: #fca5a5; }
  .ads-mm-btn { background: #1e232d; border-color: #2f3742; }
  .ads-mm-btn b { color: #e2e8f0; }
  .ads-mm-btn.on { background: rgba(250, 140, 22, .14); border-color: var(--ads-primary, #fa8c16); }
  .ads-mchip { background: #1e232d; border-color: #2f3742; color: #cbd5e1; }
  .ads-mchip.on { background: rgba(250, 140, 22, .14); }
  .ads-title-n { background: rgba(250, 140, 22, .18); color: #ffc078; }
}

/* ============================================================================
   v3.2.0 批量投放（多选位子 / 套餐预填 / 素材口径 / 逐条核对）
   —— 只在下单弹窗里出现，全部挂在 .ads-page 下，不污染站点其他区域。
   ========================================================================== */

/* ---- 选中角标：比 on::after 更强，且带一点弹入 ---- */
.ads-pick-tick {
  position: absolute;
  top: 8px;
  right: 9px;
  width: 18px;
  height: 18px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: var(--ads-primary, #fa8c16);
  color: #fff;
  font-size: 11px;
  font-style: normal;
  font-weight: 800;
  line-height: 1;
  box-shadow: 0 2px 6px rgba(250, 140, 22, .35);
  animation: adsTickIn .18s ease-out;
}
@keyframes adsTickIn {
  from { transform: scale(.4); opacity: 0; }
  to { transform: scale(1); opacity: 1; }
}
/* 有了真角标，就别再画那个伪元素 ✓ */
.ads-picker-lg .ads-pick.on::after { content: none; }
.ads-pick.on .ads-pick-days { color: var(--ads-primary, #fa8c16); font-weight: 700; }

/* ---- 套餐 ---- */
.ads-bundles { display: grid; gap: 8px; }
.ads-bundle {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  padding: 10px 12px;
  border: 1px solid #eae2d6;
  border-radius: 11px;
  background: linear-gradient(180deg, #fffdfa, #fff9f1);
  cursor: pointer;
  text-align: left;
  font: inherit;
  color: inherit;
  transition: border-color .15s, box-shadow .15s, transform .1s;
}
.ads-bundle:hover:not(:disabled) {
  border-color: var(--ads-primary, #fa8c16);
  box-shadow: 0 3px 10px rgba(250, 140, 22, .12);
}
.ads-bundle:active:not(:disabled) { transform: translateY(1px); }
.ads-bundle.off,
.ads-bundle:disabled {
  opacity: .55;
  cursor: not-allowed;
  background: #fafafa;
  border-color: #ececec;
}
.ads-bundle-ico {
  flex: 0 0 auto;
  font-size: 19px;
  line-height: 1;
}
.ads-bundle-mid {
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.ads-bundle-mid b { font-size: 13.5px; font-weight: 700; color: #4a3200; }
.ads-bundle-mid span {
  font-size: 11.5px;
  color: var(--ads-ink-3);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.ads-bundle-p {
  flex: 0 0 auto;
  text-align: right;
  display: flex;
  flex-direction: column;
  gap: 1px;
}
.ads-bundle-p em {
  font-style: normal;
  font-size: 15px;
  font-weight: 800;
  color: #e08700;
  font-variant-numeric: tabular-nums;
}
.ads-bundle-p i {
  font-style: normal;
  font-size: 11px;
  color: var(--ads-ink-3);
}

/* ---- 已选 · 逐条配置 ---- */
.ads-cart,
.ads-crows {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 8px;
  border-radius: 11px;
  background: #fbfaf7;
  border: 1px solid #efe9df;
}
.ads-crow {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 8px;
  border-radius: 9px;
  background: #fff;
  border: 1px solid #f0ece4;
  font-size: 12.5px;
  min-width: 0;
}
.ads-crow-ico { flex: 0 0 auto; font-size: 15px; line-height: 1; }
.ads-crow-name {
  flex: 1 1 auto;
  min-width: 0;
  font-weight: 600;
  color: var(--ads-ink);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.ads-crow-days {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  gap: 5px;
  color: var(--ads-ink-2);
  font-variant-numeric: tabular-nums;
}
.ads-crow-days b { color: var(--ads-ink); font-weight: 800; }
.ads-crow-btn {
  flex: 0 0 auto;
  width: 22px;
  height: 22px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1px solid #e6e0d6;
  border-radius: 6px;
  background: #fff;
  color: var(--ads-ink-2);
  font-size: 13px;
  line-height: 1;
  cursor: pointer;
  padding: 0;
  transition: border-color .15s, color .15s, background .15s;
}
.ads-crow-btn:hover:not(:disabled) {
  border-color: var(--ads-primary, #fa8c16);
  color: var(--ads-primary, #fa8c16);
}
.ads-crow-btn:disabled { opacity: .35; cursor: not-allowed; }
.ads-crow-del { color: #c9ced8; border-color: #eef0f4; }
.ads-crow-del:hover { border-color: #f3c9c9; color: var(--ads-bad, #e04a4a); background: #fff6f6; }
.ads-crow-keep { flex: 0 0 auto; width: 22px; }
.ads-crow-sum {
  flex: 0 0 auto;
  min-width: 62px;
  text-align: right;
  font-weight: 700;
  color: #e08700;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

/* ---- 常驻汇总条 ---- */
.ads-slim {
  position: sticky;
  bottom: -1px;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  flex-wrap: wrap;
  margin: 12px -20px -6px;
  padding: 10px 20px;
  background: linear-gradient(180deg, rgba(255, 250, 242, .92), #fff7ee);
  border-top: 1px solid #ffe6c7;
  backdrop-filter: blur(6px);
  font-size: 12.5px;
  color: #7a4b00;
}
.ads-slim > span { font-variant-numeric: tabular-nums; }
.ads-slim b { font-weight: 800; color: #b35c00; }
.ads-slim > i {
  font-style: normal;
  font-size: 11.5px;
  color: var(--ads-ink-3);
}
.ads-slim.poor {
  background: linear-gradient(180deg, rgba(255, 244, 244, .94), #fef4f4);
  border-top-color: #f7d4d4;
  color: var(--ads-bad, #e04a4a);
}
.ads-slim.poor b { color: var(--ads-bad, #e04a4a); }
.ads-slim.poor > i { color: var(--ads-bad, #e04a4a); font-weight: 600; }

/* ---- 素材口径 ---- */
.ads-mm {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
}
.ads-mm-btn {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 2px;
  padding: 9px 11px;
  border: 1px solid #e8ebf1;
  border-radius: 10px;
  background: #fff;
  cursor: pointer;
  font: inherit;
  text-align: left;
  transition: border-color .15s, background .15s;
}
.ads-mm-btn b { font-size: 13px; font-weight: 700; color: var(--ads-ink); }
.ads-mm-btn span { font-size: 11.5px; color: var(--ads-ink-3); }
.ads-mm-btn:hover { border-color: #f5c99b; }
.ads-mm-btn.on {
  border-color: var(--ads-primary, #fa8c16);
  background: #fff7ee;
}
.ads-mm-btn.on b { color: var(--ads-primary, #fa8c16); }

/* ---- 每条素材 chips ---- */
.ads-mchips { display: flex; flex-wrap: wrap; gap: 6px; }
.ads-mchip {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  max-width: 100%;
  padding: 6px 11px;
  border: 1px solid #e8ebf1;
  border-radius: 999px;
  background: #fff;
  font: inherit;
  font-size: 12.5px;
  color: var(--ads-ink-2);
  cursor: pointer;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  transition: border-color .15s, background .15s, color .15s;
}
.ads-mchip:hover { border-color: #f5c99b; color: var(--ads-ink); }
.ads-mchip.on {
  border-color: var(--ads-primary, #fa8c16);
  background: #fff7ee;
  color: var(--ads-primary, #fa8c16);
  font-weight: 600;
}
.ads-mchip i.ok {
  font-style: normal;
  font-size: 10px;
  font-weight: 800;
  color: #fff;
  background: var(--ads-ok, #17b26a);
  border-radius: 50%;
  width: 14px;
  height: 14px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  line-height: 1;
}

/* ---- 标题里的条数小标 ---- */
.ads-title-n {
  display: inline-block;
  margin-left: 6px;
  padding: 1px 7px;
  border-radius: 999px;
  background: #fff1e0;
  color: #b35c00;
  font-size: 11.5px;
  font-style: normal;
  font-weight: 700;
  vertical-align: 2px;
}

/* ---- 窄屏收口 ---- */
@media (max-width: 760px) {
  .ads-slim { margin-left: -14px; margin-right: -14px; padding-left: 14px; padding-right: 14px; }
  .ads-crow { flex-wrap: wrap; row-gap: 5px; }
  .ads-crow-name { flex: 1 1 60%; }
  .ads-crow-sum { min-width: 0; }
  .ads-mm { grid-template-columns: 1fr; }
  .ads-bundle-p em { font-size: 14px; }
}

/* 深色模式 */
@media (prefers-color-scheme: dark) {
  .ads-bundle { background: #1e232d; border-color: #2f3742; }
  .ads-bundle-mid b { color: #f0d9b5; }
  .ads-cart, .ads-crows { background: #1b2028; border-color: #2c333d; }
  .ads-crow { background: #222933; border-color: #2f3742; }
  .ads-crow-btn { background: #222933; border-color: #39414d; color: #cbd5e1; }
  .ads-slim { background: rgba(40, 32, 22, .95); border-top-color: #4a3a22; color: #f0d9b5; }
  .ads-slim b { color: #ffc078; }
  .ads-slim.poor { background: rgba(60, 26, 26, .95); border-top-color: #5c2b2b; color: #fca5a5; }
  .ads-mm-btn { background: #1e232d; border-color: #2f3742; }
  .ads-mm-btn b { color: #e2e8f0; }
  .ads-mm-btn.on { background: rgba(250, 140, 22, .14); border-color: var(--ads-primary, #fa8c16); }
  .ads-mchip { background: #1e232d; border-color: #2f3742; color: #cbd5e1; }
  .ads-mchip.on { background: rgba(250, 140, 22, .14); }
  .ads-title-n { background: rgba(250, 140, 22, .18); color: #ffc078; }
}

/* ============================================================================
   v3.3.0 投放端（pc / mb / both）
   ========================================================================== */
.ads-pick-wrap {
  display: flex;
  flex-direction: column;
  border-radius: 12px;
  transition: background .15s;
}
.ads-sidepick {
  display: flex;
  gap: 0;
  margin: -2px 10px 10px;
  border-radius: 9px;
  overflow: hidden;
  border: 1px solid #eae2d6;
  background: #fbf7f0;
}
.ads-spick {
  flex: 1 1 0;
  min-width: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 1px;
  padding: 6px 4px;
  border: 0;
  border-right: 1px solid #eee4d6;
  background: transparent;
  font: inherit;
  cursor: pointer;
  transition: background .15s, color .15s;
}
.ads-spick:last-child { border-right: 0; }
.ads-spick b {
  font-size: 12.5px;
  font-weight: 700;
  color: var(--ads-ink-2);
  line-height: 1.2;
}
.ads-spick span {
  font-size: 11px;
  color: var(--ads-ink-3);
  font-variant-numeric: tabular-nums;
}
.ads-spick:hover { background: #fff4e5; }
.ads-spick.on { background: var(--ads-primary, #fa8c16); color: #fff !important; }
.ads-spick.on b,
.ads-spick.on span { color: #fff; }

/* 逐条配置里的端标 */
.ads-crow-side {
  display: inline-block;
  margin-left: 6px;
  padding: 0 5px;
  border-radius: 4px;
  background: #f3f0ea;
  color: var(--ads-ink-3);
  font-size: 10.5px;
  font-style: normal;
  font-weight: 600;
  line-height: 16px;
  vertical-align: 1px;
  white-space: nowrap;
}

@media (max-width: 760px) {
  .ads-sidepick { margin-left: 8px; margin-right: 8px; }
  .ads-spick b { font-size: 12px; }
  .ads-spick span { font-size: 10.5px; }
}

@media (prefers-color-scheme: dark) {
  .ads-sidepick { background: #1e232d; border-color: #2f3742; }
  .ads-spick { border-right-color: #2f3742; }
  .ads-spick b { color: #cbd5e1; }
  .ads-crow-side { background: #2c333d; color: #94a3b8; }
}

/* ============================================================================
   v3.2.0 批量投放（多选位子 / 套餐预填 / 素材口径 / 逐条核对）
   —— 只在下单弹窗里出现，全部挂在 .ads-page 下，不污染站点其他区域。
   ========================================================================== */

/* ---- 选中角标：比 on::after 更强，且带一点弹入 ---- */
.ads-pick-tick {
  position: absolute;
  top: 8px;
  right: 9px;
  width: 18px;
  height: 18px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: var(--ads-primary, #fa8c16);
  color: #fff;
  font-size: 11px;
  font-style: normal;
  font-weight: 800;
  line-height: 1;
  box-shadow: 0 2px 6px rgba(250, 140, 22, .35);
  animation: adsTickIn .18s ease-out;
}
@keyframes adsTickIn {
  from { transform: scale(.4); opacity: 0; }
  to { transform: scale(1); opacity: 1; }
}
/* 有了真角标，就别再画那个伪元素 ✓ */
.ads-picker-lg .ads-pick.on::after { content: none; }
.ads-pick.on .ads-pick-days { color: var(--ads-primary, #fa8c16); font-weight: 700; }

/* ---- 套餐 ---- */
.ads-bundles { display: grid; gap: 8px; }
.ads-bundle {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  padding: 10px 12px;
  border: 1px solid #eae2d6;
  border-radius: 11px;
  background: linear-gradient(180deg, #fffdfa, #fff9f1);
  cursor: pointer;
  text-align: left;
  font: inherit;
  color: inherit;
  transition: border-color .15s, box-shadow .15s, transform .1s;
}
.ads-bundle:hover:not(:disabled) {
  border-color: var(--ads-primary, #fa8c16);
  box-shadow: 0 3px 10px rgba(250, 140, 22, .12);
}
.ads-bundle:active:not(:disabled) { transform: translateY(1px); }
.ads-bundle.off,
.ads-bundle:disabled {
  opacity: .55;
  cursor: not-allowed;
  background: #fafafa;
  border-color: #ececec;
}
.ads-bundle-ico {
  flex: 0 0 auto;
  font-size: 19px;
  line-height: 1;
}
.ads-bundle-mid {
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.ads-bundle-mid b { font-size: 13.5px; font-weight: 700; color: #4a3200; }
.ads-bundle-mid span {
  font-size: 11.5px;
  color: var(--ads-ink-3);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.ads-bundle-p {
  flex: 0 0 auto;
  text-align: right;
  display: flex;
  flex-direction: column;
  gap: 1px;
}
.ads-bundle-p em {
  font-style: normal;
  font-size: 15px;
  font-weight: 800;
  color: #e08700;
  font-variant-numeric: tabular-nums;
}
.ads-bundle-p i {
  font-style: normal;
  font-size: 11px;
  color: var(--ads-ink-3);
}

/* ---- 已选 · 逐条配置 ---- */
.ads-cart,
.ads-crows {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 8px;
  border-radius: 11px;
  background: #fbfaf7;
  border: 1px solid #efe9df;
}
.ads-crow {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 8px;
  border-radius: 9px;
  background: #fff;
  border: 1px solid #f0ece4;
  font-size: 12.5px;
  min-width: 0;
}
.ads-crow-ico { flex: 0 0 auto; font-size: 15px; line-height: 1; }
.ads-crow-name {
  flex: 1 1 auto;
  min-width: 0;
  font-weight: 600;
  color: var(--ads-ink);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.ads-crow-days {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  gap: 5px;
  color: var(--ads-ink-2);
  font-variant-numeric: tabular-nums;
}
.ads-crow-days b { color: var(--ads-ink); font-weight: 800; }
.ads-crow-btn {
  flex: 0 0 auto;
  width: 22px;
  height: 22px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1px solid #e6e0d6;
  border-radius: 6px;
  background: #fff;
  color: var(--ads-ink-2);
  font-size: 13px;
  line-height: 1;
  cursor: pointer;
  padding: 0;
  transition: border-color .15s, color .15s, background .15s;
}
.ads-crow-btn:hover:not(:disabled) {
  border-color: var(--ads-primary, #fa8c16);
  color: var(--ads-primary, #fa8c16);
}
.ads-crow-btn:disabled { opacity: .35; cursor: not-allowed; }
.ads-crow-del { color: #c9ced8; border-color: #eef0f4; }
.ads-crow-del:hover { border-color: #f3c9c9; color: var(--ads-bad, #e04a4a); background: #fff6f6; }
.ads-crow-keep { flex: 0 0 auto; width: 22px; }
.ads-crow-sum {
  flex: 0 0 auto;
  min-width: 62px;
  text-align: right;
  font-weight: 700;
  color: #e08700;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

/* ---- 常驻汇总条 ---- */
.ads-slim {
  position: sticky;
  bottom: -1px;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  flex-wrap: wrap;
  margin: 12px -20px -6px;
  padding: 10px 20px;
  background: linear-gradient(180deg, rgba(255, 250, 242, .92), #fff7ee);
  border-top: 1px solid #ffe6c7;
  backdrop-filter: blur(6px);
  font-size: 12.5px;
  color: #7a4b00;
}
.ads-slim > span { font-variant-numeric: tabular-nums; }
.ads-slim b { font-weight: 800; color: #b35c00; }
.ads-slim > i {
  font-style: normal;
  font-size: 11.5px;
  color: var(--ads-ink-3);
}
.ads-slim.poor {
  background: linear-gradient(180deg, rgba(255, 244, 244, .94), #fef4f4);
  border-top-color: #f7d4d4;
  color: var(--ads-bad, #e04a4a);
}
.ads-slim.poor b { color: var(--ads-bad, #e04a4a); }
.ads-slim.poor > i { color: var(--ads-bad, #e04a4a); font-weight: 600; }

/* ---- 素材口径 ---- */
.ads-mm {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
}
.ads-mm-btn {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 2px;
  padding: 9px 11px;
  border: 1px solid #e8ebf1;
  border-radius: 10px;
  background: #fff;
  cursor: pointer;
  font: inherit;
  text-align: left;
  transition: border-color .15s, background .15s;
}
.ads-mm-btn b { font-size: 13px; font-weight: 700; color: var(--ads-ink); }
.ads-mm-btn span { font-size: 11.5px; color: var(--ads-ink-3); }
.ads-mm-btn:hover { border-color: #f5c99b; }
.ads-mm-btn.on {
  border-color: var(--ads-primary, #fa8c16);
  background: #fff7ee;
}
.ads-mm-btn.on b { color: var(--ads-primary, #fa8c16); }

/* ---- 每条素材 chips ---- */
.ads-mchips { display: flex; flex-wrap: wrap; gap: 6px; }
.ads-mchip {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  max-width: 100%;
  padding: 6px 11px;
  border: 1px solid #e8ebf1;
  border-radius: 999px;
  background: #fff;
  font: inherit;
  font-size: 12.5px;
  color: var(--ads-ink-2);
  cursor: pointer;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  transition: border-color .15s, background .15s, color .15s;
}
.ads-mchip:hover { border-color: #f5c99b; color: var(--ads-ink); }
.ads-mchip.on {
  border-color: var(--ads-primary, #fa8c16);
  background: #fff7ee;
  color: var(--ads-primary, #fa8c16);
  font-weight: 600;
}
.ads-mchip i.ok {
  font-style: normal;
  font-size: 10px;
  font-weight: 800;
  color: #fff;
  background: var(--ads-ok, #17b26a);
  border-radius: 50%;
  width: 14px;
  height: 14px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  line-height: 1;
}

/* ---- 标题里的条数小标 ---- */
.ads-title-n {
  display: inline-block;
  margin-left: 6px;
  padding: 1px 7px;
  border-radius: 999px;
  background: #fff1e0;
  color: #b35c00;
  font-size: 11.5px;
  font-style: normal;
  font-weight: 700;
  vertical-align: 2px;
}

/* ---- 窄屏收口 ---- */
@media (max-width: 760px) {
  .ads-slim { margin-left: -14px; margin-right: -14px; padding-left: 14px; padding-right: 14px; }
  .ads-crow { flex-wrap: wrap; row-gap: 5px; }
  .ads-crow-name { flex: 1 1 60%; }
  .ads-crow-sum { min-width: 0; }
  .ads-mm { grid-template-columns: 1fr; }
  .ads-bundle-p em { font-size: 14px; }
}

/* 深色模式 */
@media (prefers-color-scheme: dark) {
  .ads-bundle { background: #1e232d; border-color: #2f3742; }
  .ads-bundle-mid b { color: #f0d9b5; }
  .ads-cart, .ads-crows { background: #1b2028; border-color: #2c333d; }
  .ads-crow { background: #222933; border-color: #2f3742; }
  .ads-crow-btn { background: #222933; border-color: #39414d; color: #cbd5e1; }
  .ads-slim { background: rgba(40, 32, 22, .95); border-top-color: #4a3a22; color: #f0d9b5; }
  .ads-slim b { color: #ffc078; }
  .ads-slim.poor { background: rgba(60, 26, 26, .95); border-top-color: #5c2b2b; color: #fca5a5; }
  .ads-mm-btn { background: #1e232d; border-color: #2f3742; }
  .ads-mm-btn b { color: #e2e8f0; }
  .ads-mm-btn.on { background: rgba(250, 140, 22, .14); border-color: var(--ads-primary, #fa8c16); }
  .ads-mchip { background: #1e232d; border-color: #2f3742; color: #cbd5e1; }
  .ads-mchip.on { background: rgba(250, 140, 22, .14); }
  .ads-title-n { background: rgba(250, 140, 22, .18); color: #ffc078; }
}

/* ============================================================================
   v3.3.0 投放端（pc / mb / both）
   ========================================================================== */
.ads-pick-wrap {
  display: flex;
  flex-direction: column;
  border-radius: 12px;
  transition: background .15s;
}
.ads-sidepick {
  display: flex;
  gap: 0;
  margin: -2px 10px 10px;
  border-radius: 9px;
  overflow: hidden;
  border: 1px solid #eae2d6;
  background: #fbf7f0;
}
.ads-spick {
  flex: 1 1 0;
  min-width: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 1px;
  padding: 6px 4px;
  border: 0;
  border-right: 1px solid #eee4d6;
  background: transparent;
  font: inherit;
  cursor: pointer;
  transition: background .15s, color .15s;
}
.ads-spick:last-child { border-right: 0; }
.ads-spick b {
  font-size: 12.5px;
  font-weight: 700;
  color: var(--ads-ink-2);
  line-height: 1.2;
}
.ads-spick span {
  font-size: 11px;
  color: var(--ads-ink-3);
  font-variant-numeric: tabular-nums;
}
.ads-spick:hover { background: #fff4e5; }
.ads-spick.on { background: var(--ads-primary, #fa8c16); color: #fff !important; }
.ads-spick.on b,
.ads-spick.on span { color: #fff; }

/* 逐条配置里的端标 */
.ads-crow-side {
  display: inline-block;
  margin-left: 6px;
  padding: 0 5px;
  border-radius: 4px;
  background: #f3f0ea;
  color: var(--ads-ink-3);
  font-size: 10.5px;
  font-style: normal;
  font-weight: 600;
  line-height: 16px;
  vertical-align: 1px;
  white-space: nowrap;
}

@media (max-width: 760px) {
  .ads-sidepick { margin-left: 8px; margin-right: 8px; }
  .ads-spick b { font-size: 12px; }
  .ads-spick span { font-size: 10.5px; }
}

@media (prefers-color-scheme: dark) {
  .ads-sidepick { background: #1e232d; border-color: #2f3742; }
  .ads-spick { border-right-color: #2f3742; }
  .ads-spick b { color: #cbd5e1; }
  .ads-crow-side { background: #2c333d; color: #94a3b8; }
}

/* ============================================================================
   v3.3.0 我的投放 · 审核时效与信任分
   ========================================================================== */
.ads-mineinfo {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 18px;
  margin-bottom: 12px;
  padding: 10px 14px;
  border-radius: 11px;
  background: #fbfcfe;
  border: 1px solid #eef1f6;
}
.ads-mineinfo > span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12.5px;
  color: var(--ads-ink-2);
}
.ads-mineinfo i { font-size: 15px; color: var(--ads-primary, #fa8c16); line-height: 1; }

.ads-trust {
  margin-bottom: 12px;
  padding: 11px 14px;
  border-radius: 11px;
  background: linear-gradient(180deg, #fffdf8, #fff7ee);
  border: 1px solid #ffe6c7;
}
.ads-trust.ok { background: #f4fcf8; border-color: #cdeeda; }
.ads-trust-top {
  display: flex;
  align-items: baseline;
  gap: 10px;
  flex-wrap: wrap;
  margin-bottom: 7px;
}
.ads-trust-top b { font-size: 13px; color: #7a4b00; }
.ads-trust.ok .ads-trust-top b { color: #0f7a44; }
.ads-trust-top span { font-size: 11.5px; color: var(--ads-ink-3); }
.ads-trust-bar {
  height: 8px;
  border-radius: 999px;
  background: #f3e7d3;
  overflow: hidden;
}
.ads-trust-bar > i {
  display: block;
  height: 100%;
  border-radius: 999px;
  background: linear-gradient(90deg, #ffc069, var(--ads-primary, #fa8c16));
  transition: width .4s ease;
}

@media (prefers-color-scheme: dark) {
  .ads-mineinfo { background: #1b2028; border-color: #2c333d; }
  .ads-mineinfo > span { color: #cbd5e1; }
  .ads-trust { background: rgba(60, 44, 22, .5); border-color: #4a3a22; }
  .ads-trust.ok { background: rgba(16, 60, 40, .4); border-color: #245a3c; }
  .ads-trust-top b { color: #ffc078; }
  .ads-trust.ok .ads-trust-top b { color: #6ee7a0; }
  .ads-trust-bar { background: #3a3123; }
}

/* ---------------- v3.3.4 回收站空态（带操作入口） ----------------
   以前空态只有一行灰字，用户点进「回收站」看不到任何按钮，不知道能做什么。
   现在给标题 + 说明 + 两个直达按钮；手机上按钮竖排、占满宽度，好点。 */
.ads-empty-act { padding: 40px 22px; }
.ads-empty-t { display: block; font-size: 15px; color: var(--ads-ink-1); margin-top: 6px; font-weight: 600; }
.ads-empty-d {
  margin: 8px auto 0; max-width: 420px; font-size: 13px; line-height: 1.7;
  color: var(--ads-ink-3);
}
.ads-empty-btns {
  display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; margin-top: 18px;
}
.ads-empty-btns .ads-btn { min-width: 132px; }

@media (max-width: 760px) {
  .ads-empty-act { padding: 32px 16px; }
  .ads-empty-btns { flex-direction: column; gap: 8px; }
  .ads-empty-btns .ads-btn { width: 100%; min-width: 0; }
}

@media (prefers-color-scheme: dark) {
  .ads-empty-t { color: var(--ads-ink-1); }
}

/* ---------------- v3.3.4 可信进度说明 ----------------
   信任分容易被误解成「投一单 +1」。把口径（要审核通过才计数、驳回清零）
   直接写在进度条下面，配一行累计统计。 */
.ads-trust-note {
  margin-top: 8px; font-size: 12px; line-height: 1.65; color: var(--ads-ink-3);
}
.ads-trust-note b { color: var(--ads-ink-2); font-weight: 600; }
.ads-trust-stat {
  margin-top: 4px; font-size: 12px; color: var(--ads-ink-3);
}
.ads-trust-stat b { color: var(--ads-ink-1); }

@media (max-width: 760px) {
  .ads-trust-note, .ads-trust-stat { font-size: 11.5px; }
}

/* ---------------- v3.3.4 批量余量提示 ----------------
   选位子时实时显示「还能再选 N 个」，配一排小圆点做可视化进度；
   满了变琥珀色并直说要先取消再换。以前只有撞上限才弹一句 toast。 */
.ads-quota {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  margin: 10px 0 2px; padding: 9px 12px;
  border: 1px solid var(--ads-line); border-radius: 10px;
  background: var(--ads-card); font-size: 12.5px; color: var(--ads-ink-2);
}
.ads-quota > i { color: var(--ads-ink-3); font-size: 15px; }
.ads-quota b { color: var(--ads-ink-1); }
.ads-quota-dots { display: flex; gap: 4px; margin-left: auto; }
.ads-quota-dots i {
  width: 7px; height: 7px; border-radius: 50%;
  background: var(--ads-line); transition: background .18s;
}
.ads-quota-dots i.on { background: var(--ads-ink-1); }
.ads-quota.full {
  border-color: #f0c893; background: #fff8ec; color: #92610f;
}
.ads-quota.full b { color: #92610f; }
.ads-quota.full .ads-quota-dots i.on { background: #d98b1f; }

@media (max-width: 760px) {
  .ads-quota { font-size: 12px; gap: 8px; padding: 8px 10px; }
  .ads-quota-dots { margin-left: 0; }
}

/* =====================================================================
   v3.4.0 六项体验改造
   ---------------------------------------------------------------------
   ① 下单页实时效果预览  ② 图片规格与尺寸校验  ③ 再来一单
   ④ 预算→曝光预估      ⑤ 首次进入引导条      ⑥ 手机端压缩与上传进度
   ===================================================================== */

/* --- ⑤ 首次引导条 --- */
.ads-onboard { margin: 12px 0; }
.ads-onboard-in {
  position: relative;
  border: 1px solid var(--ads-line);
  border-radius: 14px;
  background: linear-gradient(180deg, #fffaf2 0%, var(--ads-card) 60%);
  padding: 16px 18px;
}
.ads-onboard-t { display: block; font-size: 14px; color: var(--ads-ink); margin-bottom: 12px; }
.ads-onboard-steps { display: flex; gap: 10px; flex-wrap: wrap; }
.ads-onboard-steps > span {
  flex: 1 1 0; min-width: 170px;
  display: flex; flex-wrap: wrap; align-items: center; gap: 6px;
  font-size: 13px; color: var(--ads-ink);
}
.ads-onboard-steps i {
  display: inline-flex; align-items: center; justify-content: center;
  width: 20px; height: 20px; border-radius: 50%;
  background: var(--ads-primary); color: #fff;
  font-size: 11.5px; font-style: normal; font-weight: 600; flex: none;
}
.ads-onboard-steps em {
  display: block; width: 100%; padding-left: 26px;
  font-size: 12px; color: var(--ads-ink-3); font-style: normal; line-height: 1.6;
}
.ads-onboard-act { display: flex; align-items: center; gap: 12px; margin-top: 14px; }
.ads-onboard-x {
  border: 0; background: none; color: var(--ads-ink-3);
  font-size: 12.5px; cursor: pointer; padding: 4px 2px;
}
.ads-onboard-x:hover { color: var(--ads-ink-2); }
@media (max-width: 760px) {
  .ads-onboard-steps { flex-direction: column; gap: 12px; }
  .ads-onboard-act { flex-direction: column; align-items: stretch; gap: 8px; }
  .ads-onboard-act .ads-btn { width: 100%; }
  .ads-onboard-x { align-self: center; }
}

/* --- ② 位子素材规格提示 --- */
.ads-spec {
  display: flex; align-items: flex-start; gap: 7px;
  margin: 8px 0 0; padding: 8px 11px;
  border: 1px dashed var(--ads-line); border-radius: 9px;
  background: var(--ads-soft);
  font-size: 12.5px; line-height: 1.65; color: var(--ads-ink-2);
}
.ads-spec i { color: var(--ads-ink-3); margin-top: 1px; }
.ads-spec b { color: var(--ads-ink); }

/* 尺寸检查结果 */
.ads-imgcheck {
  display: flex; align-items: flex-start; gap: 8px;
  margin: 8px 0 0; padding: 9px 12px;
  border-radius: 9px; font-size: 12.5px; line-height: 1.7;
}
.ads-imgcheck.ok { background: #f0fbf6; border: 1px solid #c8ecdc; color: #17694a; }
.ads-imgcheck.ok i { color: var(--ads-ok); }
.ads-imgcheck.warn { background: #fff8ec; border: 1px solid #f5dfb8; color: #8a5b0c; }
.ads-imgcheck.warn i { color: var(--ads-warn); }
.ads-imgcheck i { margin-top: 2px; flex: none; font-size: 15px; }
.ads-imgcheck b { color: inherit; }

/* --- ⑥ 上传进度条 --- */
.ads-upbar {
  position: relative; height: 4px; margin-top: 7px;
  border-radius: 999px; background: var(--ads-line); overflow: hidden;
}
.ads-upbar i {
  display: block; height: 100%; width: 0;
  background: var(--ads-primary); border-radius: 999px;
  transition: width .18s ease;
}

/* --- ① 实时效果预览 --- */
.ads-live {
  margin: 16px 0 4px; padding: 14px;
  border: 1px solid var(--ads-line); border-radius: 14px;
  background: var(--ads-soft);
}
.ads-live-top { display: flex; align-items: baseline; gap: 8px; margin-bottom: 11px; }
.ads-live-top b { font-size: 13px; color: var(--ads-ink); }
.ads-live-top em { font-size: 12px; color: var(--ads-ink-3); font-style: normal; }
.ads-live-stage { display: flex; flex-direction: column; align-items: center; gap: 8px; }
.ads-live-ph { color: var(--ads-ink-3); font-style: normal; }
.ads-live-noimg {
  display: flex; align-items: center; justify-content: center;
  width: 100%; height: 100%; font-size: 22px; opacity: .5;
}
.ads-live-ad {
  position: absolute; right: 7px; top: 7px;
  padding: 1px 5px; border-radius: 4px;
  background: rgba(0,0,0,.36); color: #fff;
  font-size: 10px; line-height: 1.5;
}
.ads-live-cta { color: var(--ads-blue); font-size: 12px; }

/* 浮层卡片外观：左图右字 */
.ads-live-float {
  position: relative;
  display: flex; gap: 10px; width: 100%; max-width: 340px;
  padding: 10px; border-radius: 12px;
  background: #fff; box-shadow: 0 6px 20px rgba(31,36,48,.12);
}
.ads-live-x {
  position: absolute; right: 6px; top: 4px;
  font-size: 11px; color: #c2c8d2; line-height: 1;
}
.ads-live-thumb {
  flex: none; width: 84px; height: 63px; border-radius: 8px;
  overflow: hidden; background: var(--ads-soft);
}
.ads-live-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ads-live-body { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.ads-live-body b {
  font-size: 13px; color: var(--ads-ink); line-height: 1.4;
  overflow: hidden; text-overflow: ellipsis; display: -webkit-box;
  -webkit-line-clamp: 2; -webkit-box-orient: vertical;
}
.ads-live-body > span {
  font-size: 11.5px; color: var(--ads-ink-3); line-height: 1.5;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}

/* 信息流条外观：扁平横条 */
.ads-live-feed {
  position: relative;
  display: flex; align-items: center; gap: 10px; width: 100%;
  padding: 9px 10px; border-radius: 10px;
  background: #fff; box-shadow: 0 3px 12px rgba(31,36,48,.09);
}
.ads-live-feed-img {
  flex: none; width: 96px; height: 32px; border-radius: 6px;
  overflow: hidden; background: var(--ads-soft);
}
.ads-live-feed-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ads-live-feed-body { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.ads-live-feed-body b { font-size: 12.5px; color: var(--ads-ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ads-live-feed-body span { font-size: 11px; color: var(--ads-ink-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* 弹窗 / 内联：上图下文 */
.ads-live-pop, .ads-live-inline {
  position: relative; width: 100%; max-width: 340px;
  border-radius: 12px; overflow: hidden;
  background: #fff; box-shadow: 0 6px 20px rgba(31,36,48,.12);
}
.ads-live-pop-img, .ads-live-inline-img {
  width: 100%; aspect-ratio: 16 / 9; background: var(--ads-soft);
}
.ads-live-inline-img { aspect-ratio: 3 / 1; }
.ads-live-pop-img img, .ads-live-inline-img img {
  width: 100%; height: 100%; object-fit: cover; display: block;
}
.ads-live-pop-body, .ads-live-inline-body {
  display: flex; flex-direction: column; gap: 3px; padding: 10px 12px 11px;
}
.ads-live-pop-body b, .ads-live-inline-body b {
  font-size: 13px; color: var(--ads-ink); line-height: 1.4;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.ads-live-pop-body span, .ads-live-inline-body span {
  font-size: 11.5px; color: var(--ads-ink-3); line-height: 1.5;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.ads-live-ctx { font-size: 11.5px; color: var(--ads-ink-3); text-align: center; line-height: 1.6; }
.ads-live-note { margin-top: 10px; font-size: 12px; text-align: center; color: var(--ads-ink-3); }
.ads-live-note.ok { color: var(--ads-ok); }
.ads-live-note.warn { color: var(--ads-warn); }
.ads-live-note b { color: inherit; }

/* --- ④ 预算→曝光预估 --- */
.ads-est {
  display: flex; align-items: flex-start; gap: 7px;
  margin-top: 9px; padding: 9px 12px;
  border-radius: 9px; background: #f4f7ff;
  font-size: 12.5px; line-height: 1.7; color: #2f3f66;
}
.ads-est i { color: var(--ads-blue); margin-top: 2px; flex: none; }
.ads-est b { color: #1d2c4f; }
.ads-est-sub { background: #f7f5ff; color: #443a6b; }
.ads-est-sub i { color: #6b4ec4; }
.ads-est-note {
  margin-top: 6px; font-size: 11.5px; color: var(--ads-ink-3); line-height: 1.6;
}

/* 手机端：预览卡放宽，避免一屏塞不下 */
@media (max-width: 760px) {
  .ads-live { padding: 12px; }
  .ads-live-float, .ads-live-pop, .ads-live-inline { max-width: 100%; }
  .ads-live-thumb { width: 74px; height: 56px; }
  .ads-onboard-in { padding: 14px; }
}

/* --- v3.4.1 后台审核：筛选 chips / 批量操作条 / 勾选项 --- */
.ads-rv-chips { display: flex; gap: 7px; flex-wrap: wrap; margin: 0 2px 10px; }
.ads-rv-chip {
  border: 1px solid var(--ads-line); background: var(--ads-card);
  border-radius: 999px; padding: 4px 12px;
  font-size: 12px; color: var(--ads-ink-2); cursor: pointer;
}
.ads-rv-chip.on { border-color: var(--ads-primary); color: var(--ads-primary); font-weight: 600; background: #fff7ef; }
.ads-rv-bar {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  margin: 0 2px 12px; padding: 9px 12px;
  border: 1px solid var(--ads-line); border-radius: 10px; background: var(--ads-soft);
}
.ads-rv-bar .ads-btn[disabled] { opacity: .45; cursor: not-allowed; }
.ads-rv-item {
  display: flex; align-items: flex-start; gap: 8px;
  padding: 10px; border: 1px solid var(--ads-line); border-radius: 12px;
  background: var(--ads-card); margin-bottom: 10px;
}
.ads-rv-item:has(input:checked) { border-color: var(--ads-primary); background: #fffaf2; }
.ads-rv-sel { flex: none; padding-top: 4px; }
.ads-rv-sel input { width: 16px; height: 16px; accent-color: var(--ads-primary); }
.ads-rv-item .ads-order { flex: 1 1 auto; min-width: 0; border: 0; padding: 0; margin: 0; box-shadow: none; }

/* ============================================================================
   v3.5.0 驳回原因预设弹窗
   站长不必手打，点一下常见原因即可；可多选 + 补一句备注，
   下面实时预览「用户会看到什么」，避免写完不知道发出去长什么样。
   ============================================================================ */
.ads-rj-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  margin: 4px 0 14px;
}
.ads-rj-chip {
  display: flex;
  flex-direction: column;
  gap: 2px;
  text-align: left;
  padding: 9px 11px;
  border: 1px solid var(--ads-line);
  border-radius: 10px;
  background: #fff;
  cursor: pointer;
  transition: border-color .15s, background .15s, box-shadow .15s;
}
.ads-rj-chip b { font-size: 13px; font-weight: 600; color: #1d2129; }
.ads-rj-chip i {
  font-style: normal;
  font-size: 11.5px;
  line-height: 1.35;
  color: #86909c;
}
.ads-rj-chip:hover { border-color: var(--ads-primary); background: #fffaf2; }
.ads-rj-chip.on {
  border-color: var(--ads-primary);
  background: #fff4e2;
  box-shadow: inset 0 0 0 1px var(--ads-primary);
}
.ads-rj-chip.on b { color: var(--ads-primary); }

.ads-rj-note { display: block; margin: 0 0 12px; }
.ads-rj-note span {
  display: block;
  font-size: 12px;
  color: #5b6473;
  margin-bottom: 6px;
}
.ads-rj-note textarea {
  width: 100%;
  box-sizing: border-box;
  padding: 9px 11px;
  border: 1px solid var(--ads-line);
  border-radius: 10px;
  font-size: 13px;
  line-height: 1.55;
  font-family: inherit;
  color: #1d2129;
  background: #fff;
  resize: vertical;
  min-height: 68px;
}
.ads-rj-note textarea:focus {
  outline: none;
  border-color: var(--ads-primary);
  box-shadow: 0 0 0 3px rgba(255, 176, 32, .16);
}

.ads-rj-preview {
  margin: 0 0 14px;
  padding: 10px 12px;
  border-radius: 10px;
  background: #f7f8fa;
  border: 1px dashed #d9dee6;
}
.ads-rj-preview > span {
  display: block;
  font-size: 11.5px;
  color: #86909c;
  margin-bottom: 4px;
}
.ads-rj-preview p {
  margin: 0;
  font-size: 12.5px;
  line-height: 1.6;
  color: #1d2129;
  word-break: break-word;
}

@media (max-width: 640px) {
  .ads-rj-grid { grid-template-columns: 1fr; }
  .ads-rj-chip { padding: 10px 12px; }
}

/* ==========================================================================
   v3.6.0 快捷下单
   --------------------------------------------------------------------------
   ① 首屏快捷条（广告中心内）
   ② 快捷下单弹窗（一个弹窗填完，含文字单/图文单两套预览）
   ③ 全站悬浮按钮（挂在每一页右下角，点开就是同一个弹窗）
   ========================================================================== */

/* 位子管理里的「快捷下单」小节标题 */
.ads-divider-qk {
  display: flex;
  align-items: center;
  gap: 6px;
  margin: 16px 0 8px;
  padding-top: 14px;
  border-top: 1px dashed var(--ads-line);
  font-size: 12px;
  font-weight: 600;
  color: var(--ads-ink-2);
  letter-spacing: .3px;
}
.ads-divider-qk i { color: var(--ads-primary); font-size: 14px; }

/* ---------- ① 首屏快捷条 ---------- */
.ads-quick {
  display: flex;
  align-items: center;
  gap: 14px;
  flex-wrap: wrap;
  margin: 14px 0 16px;
  padding: 14px 16px;
  border-radius: 14px;
  background: linear-gradient(135deg, #fff7ea 0%, #fff 62%);
  border: 1px solid #ffe2bd;
}
.ads-quick-main { display: flex; flex-direction: column; gap: 2px; min-width: 150px; }
.ads-quick-main b { font-size: 15px; color: var(--ads-ink); letter-spacing: .2px; }
.ads-quick-main span { font-size: 12px; color: var(--ads-ink-3); }
.ads-quick-chips { display: flex; gap: 8px; flex-wrap: wrap; flex: 1; }
.ads-quick-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 7px 11px;
  border-radius: 10px;
  border: 1px solid var(--ads-line);
  background: #fff;
  font-size: 12.5px;
  color: var(--ads-ink);
  cursor: pointer;
  transition: border-color .15s, box-shadow .15s, transform .15s;
}
.ads-quick-chip i { font-style: normal; font-size: 14px; }
.ads-quick-chip em {
  font-style: normal;
  font-size: 11.5px;
  color: var(--ads-primary);
  font-weight: 600;
}
.ads-quick-chip:hover {
  border-color: var(--ads-primary);
  box-shadow: 0 2px 10px rgba(250, 140, 22, .16);
  transform: translateY(-1px);
}
.ads-quick-more { font-size: 12px; color: var(--ads-ink-3); align-self: center; }
.ads-quick-go { flex: none; }

/* ---------- ② 快捷下单弹窗 ---------- */
.ads-qk-sub {
  margin: -4px 0 10px;
  font-size: 12.5px;
  line-height: 1.6;
  color: var(--ads-ink-3);
}
.ads-qk-more {
  border: 0;
  background: none;
  padding: 0;
  font-size: 12.5px;
  color: var(--ads-primary);
  text-decoration: underline;
  cursor: pointer;
}
.ads-qk-body { padding-bottom: 4px; }

/* 位子横滑卡 */
.ads-qk-slots {
  display: flex;
  gap: 8px;
  overflow-x: auto;
  padding: 2px 2px 6px;
  scrollbar-width: thin;
}
.ads-qk-slot {
  flex: none;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 2px;
  min-width: 112px;
  padding: 9px 11px;
  border-radius: 11px;
  border: 1px solid var(--ads-line);
  background: #fff;
  cursor: pointer;
  text-align: left;
  transition: border-color .15s, background .15s, box-shadow .15s;
}
.ads-qk-slot .ads-qk-ico { font-size: 15px; }
.ads-qk-slot b { font-size: 12.5px; font-weight: 600; color: var(--ads-ink); }
.ads-qk-slot .ads-qk-p { font-size: 11.5px; color: var(--ads-ink-3); }
.ads-qk-slot.on {
  border-color: var(--ads-primary);
  background: #fff6e8;
  box-shadow: inset 0 0 0 1px var(--ads-primary);
}
.ads-qk-slot.on b { color: var(--ads-primary); }

/* 文字 / 图文 二选一 */
.ads-qk-types { display: grid; grid-template-columns: 1fr 1fr; gap: 9px; }
.ads-qk-type {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 10px 12px;
  border-radius: 11px;
  border: 1px solid var(--ads-line);
  background: #fff;
  cursor: pointer;
  text-align: left;
  transition: border-color .15s, background .15s;
}
.ads-qk-type i { font-size: 16px; color: var(--ads-ink-3); }
.ads-qk-type b { font-size: 13px; font-weight: 600; color: var(--ads-ink); }
.ads-qk-type span { font-size: 11.5px; color: var(--ads-ink-3); }
.ads-qk-type.on { border-color: var(--ads-primary); background: #fffaf2; }
.ads-qk-type.on i { color: var(--ads-primary); }
.ads-qk-type.on b { color: var(--ads-primary); }

/* 上传缩略图 */
.ads-qk-up { display: flex; gap: 10px; align-items: flex-start; }
.ads-qk-thumb {
  flex: none;
  width: 96px;
  height: 72px;
  border-radius: 10px;
  border: 1px dashed #d4d9e2;
  background: var(--ads-soft);
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}
.ads-qk-thumb img { width: 100%; height: 100%; object-fit: cover; }
.ads-qk-thumb span { font-size: 11.5px; color: var(--ads-ink-3); }
.ads-qk-upside { flex: 1; min-width: 0; }

/* 天数 */
.ads-qk-days { display: flex; gap: 7px; align-items: center; flex-wrap: wrap; }
.ads-qk-dchip {
  padding: 6px 12px;
  border-radius: 999px;
  border: 1px solid var(--ads-line);
  background: #fff;
  font-size: 12.5px;
  color: var(--ads-ink-2);
  cursor: pointer;
  transition: border-color .15s, background .15s, color .15s;
}
.ads-qk-dchip.on {
  border-color: var(--ads-primary);
  background: var(--ads-primary);
  color: #fff;
  font-weight: 600;
}
.ads-qk-dstep { display: inline-flex; align-items: center; gap: 4px; margin-left: 4px; }

/* 实时预览 */
.ads-qk-live {
  margin-top: 6px;
  padding: 12px;
  border-radius: 12px;
  background: var(--ads-soft);
  border: 1px solid var(--ads-line);
}
.ads-qk-stage { margin-top: 9px; }
.ads-pv-card {
  display: flex;
  gap: 11px;
  padding: 10px;
  border-radius: 12px;
  background: #fff;
  box-shadow: 0 2px 10px rgba(31, 36, 48, .07);
  max-width: 380px;
}
.ads-pv-img {
  flex: none;
  width: 92px;
  height: 70px;
  border-radius: 8px;
  background: #eef1f6;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  font-size: 11px;
  color: var(--ads-ink-3);
  text-align: center;
  padding: 4px;
}
.ads-pv-img img { width: 100%; height: 100%; object-fit: cover; }
.ads-pv-mark {
  flex: none;
  width: 44px;
  height: 44px;
  border-radius: 9px;
  background: #fff4e2;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 20px;
}
.ads-pv-cbody { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.ads-pv-cbody b {
  font-size: 13.5px;
  color: var(--ads-ink);
  line-height: 1.35;
  word-break: break-word;
}
.ads-pv-cbody span {
  font-size: 12px;
  color: var(--ads-ink-2);
  line-height: 1.4;
  word-break: break-word;
}
.ads-pv-cbody em {
  font-style: normal;
  font-size: 11.5px;
  color: var(--ads-primary);
}
.ads-pv-line {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 9px 11px;
  border-radius: 10px;
  background: #fff;
  box-shadow: 0 2px 8px rgba(31, 36, 48, .06);
  max-width: 460px;
}
.ads-pv-line i { font-style: normal; font-size: 15px; flex: none; }
.ads-pv-line b {
  font-size: 13px;
  color: var(--ads-ink);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 46%;
}
.ads-pv-line span {
  flex: 1;
  min-width: 0;
  font-size: 12px;
  color: var(--ads-ink-2);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.ads-pv-line em { font-style: normal; font-size: 11.5px; color: var(--ads-primary); flex: none; }

/* 底部合计与提交 */
.ads-qk-act { flex-wrap: wrap; }
.ads-qk-sum {
  margin-right: auto;
  font-size: 12.5px;
  color: var(--ads-ink-3);
  display: flex;
  align-items: baseline;
  gap: 6px;
}
.ads-qk-sum b {
  font-size: 19px;
  color: var(--ads-bad);
  font-weight: 700;
}

/* ---------- ③ 全站悬浮按钮 ---------- */
.ads-fab {
  position: fixed;
  right: 18px;
  bottom: 84px;
  z-index: 990;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 9px 14px 9px 11px;
  border-radius: 999px;
  border: 0;
  background: linear-gradient(135deg, #ff9a2e, #f2721f);
  color: #fff;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  box-shadow: 0 6px 20px rgba(242, 114, 31, .34);
  transition: transform .18s, box-shadow .18s, opacity .18s;
}
.ads-fab i { font-style: normal; font-size: 15px; }
.ads-fab:hover { transform: translateY(-2px); box-shadow: 0 9px 26px rgba(242, 114, 31, .42); }
.ads-fab.ads-fab-min {
  width: 44px;
  height: 44px;
  padding: 0;
  justify-content: center;
  border-radius: 50%;
}
.ads-fab.ads-fab-min span { display: none; }
.ads-fab-close {
  position: absolute;
  top: -6px;
  right: -6px;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  border: 1px solid var(--ads-line);
  background: #fff;
  color: var(--ads-ink-3);
  font-size: 12px;
  line-height: 1;
  cursor: pointer;
  display: none;
  align-items: center;
  justify-content: center;
}
.ads-fab:hover .ads-fab-close { display: flex; }

/* 悬浮按钮点开的独立弹层（不在 /ads 页，没有 AdsApp 的遮罩可用） */
.ads-fab-mask {
  position: fixed;
  inset: 0;
  z-index: 1200;
  background: rgba(20, 24, 32, .46);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
  animation: adsFabIn .16s ease-out;
}
@keyframes adsFabIn { from { opacity: 0; } to { opacity: 1; } }
.ads-fab-sheet {
  width: 100%;
  max-width: 560px;
  max-height: calc(100vh - 32px);
  overflow-y: auto;
  background: #fff;
  border-radius: 16px;
  padding: 0;
  position: relative;
  box-shadow: 0 18px 60px rgba(15, 20, 30, .28);
}
.ads-fab-sheet .ads-modal-head { padding: 16px 18px 8px; }
.ads-fab-sheet .ads-qk-sub { padding: 0 18px; }
.ads-fab-sheet .ads-qk-body { padding: 0 18px; }
.ads-fab-sheet .ads-qk-act {
  position: sticky;
  bottom: 0;
  background: #fff;
  padding: 12px 18px 16px;
  border-top: 1px solid var(--ads-line);
  border-radius: 0 0 16px 16px;
}
.ads-fab-login { padding: 26px 20px; text-align: center; }
.ads-fab-login b { display: block; font-size: 15px; margin-bottom: 6px; }
.ads-fab-login span { display: block; font-size: 12.5px; color: var(--ads-ink-3); margin-bottom: 16px; }

@media (max-width: 640px) {
  .ads-quick { padding: 12px; gap: 10px; }
  .ads-quick-main { min-width: 0; flex: 1 1 100%; }
  .ads-quick-chips { flex: 1 1 100%; }
  .ads-quick-go { flex: 1 1 100%; justify-content: center; }
  .ads-quick-chip { flex: 1 1 calc(50% - 8px); justify-content: center; }

  .ads-qk-types { grid-template-columns: 1fr 1fr; gap: 7px; }
  .ads-qk-type { padding: 9px 10px; }
  .ads-qk-type span { display: none; }
  .ads-qk-slot { min-width: 98px; }
  .ads-qk-act { flex-direction: column-reverse; align-items: stretch; gap: 8px; }
  .ads-qk-act .ads-qk-sum { justify-content: center; margin: 0; }
  .ads-qk-act .ads-btn { width: 100%; justify-content: center; }

  .ads-fab { right: 12px; bottom: 74px; }
  .ads-fab-sheet {
    max-width: none;
    max-height: calc(100vh - 24px);
    border-radius: 16px;
  }
}

/* ---------------------------------------------------------------- v3.6.2
   FAB 与 site_banner 右下浮层会叠在同一角：浮层把 FAB 盖住就点不到了。
   只要 FAB 在（module.css 由 bootFab 挂载，见到这份 CSS 就说明 FAB 在），
   浮层整体上移让出按钮的位置。 */
body:has(.ads-fab) .lsads-card.lsads-right_bottom { bottom: 142px !important; }
@media (max-width:640px) {
  body:has(.ads-fab) .lsads-card.lsads-right_bottom { bottom: 134px !important; }
}

/* ############################################################################
   ############  v4.2.0 视觉美化层 —— 与「拾光里」主题统一  ####################
   挂在最末尾，同特异性下后者胜；所有主色都带 #fa8c16 兜底，
   就算宿主变量缺失也不会再出现「白底白字隐形按钮」。
   ############################################################################ */

/* ---------- ① 按钮：主按钮 = 暖橙渐变 + 投影 + 悬停轻浮 ----------
   之前 .ads-btn 依赖 var(--ads-primary)，而变量挂在 .ads-page 上，
   弹窗在它外面 → 透明底白字，「下一步 / 确认」整排隐形。双保险： */
.ads-btn,
.ads-modal .ads-btn,
.ads-qk-act .ads-btn {
  background-color: var(--ads-primary, #fa8c16);
  background-image: linear-gradient(135deg, #ffb254 0%, #fa8c16 58%, #f27f0e 100%);
  color: #fff;
  border: 0;
  border-radius: 11px;
  font-weight: 700;
  letter-spacing: .3px;
  box-shadow: 0 2px 8px rgba(250, 140, 22, .28), inset 0 1px 0 rgba(255, 255, 255, .22);
  transition: transform .15s ease, box-shadow .15s ease, filter .15s ease;
}
.ads-btn:hover {
  transform: translateY(-1px);
  box-shadow: 0 5px 16px rgba(250, 140, 22, .38), inset 0 1px 0 rgba(255, 255, 255, .22);
  filter: saturate(1.06);
}
.ads-btn:active { transform: translateY(0) scale(.985); box-shadow: 0 1px 4px rgba(250,140,22,.3); }
.ads-btn:disabled { opacity: .5; transform: none; box-shadow: none; cursor: not-allowed; }

/* 幽灵/次级按钮：描边清晰、悬停变暖 */
.ads-btn-ghost {
  background: #fff !important;
  background-image: none !important;
  color: var(--ads-ink, #1f2430) !important;
  border: 1px solid var(--ads-line, #e8ebf1) !important;
  box-shadow: var(--ads-shadow-sm, 0 1px 3px rgba(25,34,55,.06)) !important;
}
.ads-btn-ghost:hover {
  border-color: var(--ads-primary, #fa8c16) !important;
  color: var(--ads-primary, #fa8c16) !important;
  background: var(--ads-primary-soft, #fff3e6) !important;
  box-shadow: 0 3px 10px rgba(250,140,22,.12) !important;
}

/* 小按钮的呼吸感 */
.ads-btn-sm { padding: 7px 14px; border-radius: 9px; font-size: 13px; }

/* 键盘可达性 */
.ads-btn:focus-visible, .ads-tab:focus-visible, .ads-pick:focus-visible,
.ads-spick:focus-visible, .ads-bundle:focus-visible {
  outline: 2px solid var(--ads-primary, #fa8c16);
  outline-offset: 2px;
}

/* ---------- ② 英雄区：奶油→暖橙的对角渐变 + 装饰光斑 ---------- */
.ads-hero {
  position: relative;
  overflow: hidden;
  padding: 22px 24px;
  border: 0;
  border-radius: 18px;
  background:
    radial-gradient(420px 200px at 88% -30%, rgba(250, 140, 22, .16), transparent 62%),
    radial-gradient(320px 180px at -8% 120%, rgba(255, 178, 84, .14), transparent 60%),
    linear-gradient(118deg, #fff8ef 0%, #fffdf9 46%, #fff3e2 100%);
  box-shadow: var(--ads-shadow, 0 4px 16px rgba(25,34,55,.07));
}
.ads-hero::after {
  content: '📣';
  position: absolute;
  right: 150px;
  bottom: -14px;
  font-size: 84px;
  opacity: .1;
  transform: rotate(-8deg);
  pointer-events: none;
}
.ads-hero-title {
  font-size: 22px;
  font-weight: 900;
  letter-spacing: .5px;
  background: linear-gradient(100deg, #d96f00, #fa8c16 60%, #ffb254);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}
.ads-hero-sub { font-size: 13.5px; color: var(--ads-ink-2, #5b6473); }

/* 余额卡：玻璃拟态 + 暖色描边 */
.ads-hero-side {
  position: relative;
  z-index: 1;
  padding: 10px 18px;
  border: 1px solid #ffe0ba;
  border-radius: 14px;
  background: rgba(255, 255, 255, .82);
  backdrop-filter: blur(6px);
  box-shadow: 0 4px 14px rgba(224, 135, 0, .1);
}
.ads-bal { font-size: 22px; background: none; -webkit-text-fill-color: currentColor; color: #e0760a; }

/* ---------- ③ KPI 卡：白卡 + 悬停上浮 + 数字渐变 ---------- */
.ads-kpi {
  border: 1px solid var(--ads-line, #e8ebf1);
  border-radius: 14px;
  background: #fff;
  box-shadow: var(--ads-shadow-sm, 0 1px 3px rgba(25,34,55,.06));
  transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}
.ads-kpi:hover {
  transform: translateY(-2px);
  border-color: #ffd9ad;
  box-shadow: 0 8px 20px rgba(250, 140, 22, .12);
}
.ads-kpi-v {
  font-size: 20px;
  font-weight: 900;
  background: linear-gradient(120deg, #1f2430, #4a5468);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}
.ads-kpi:first-child .ads-kpi-v {
  background: linear-gradient(120deg, #e0760a, #fa8c16);
  -webkit-background-clip: text;
  background-clip: text;
}

/* ---------- ④ 引导横幅（去任务中心攒金币）---------- */
.ads-growth {
  border: 1px solid #ffe3b3;
  border-radius: 16px;
  background: linear-gradient(115deg, #fffaf0 0%, #fff4e0 100%);
  box-shadow: var(--ads-shadow-sm, 0 1px 3px rgba(25,34,55,.06));
  transition: transform .18s ease, box-shadow .18s ease;
}
.ads-growth:hover { transform: translateY(-1px); box-shadow: 0 6px 18px rgba(224,135,0,.12); }
.ads-growth .ri-seedling-line { color: #3fbf8a; font-size: 20px; }
.ads-growth-arrow { color: #d9972c; }

/* ---------- ⑤ 快捷投放条：暖色渐变 + CTA 呼吸光 ---------- */
.ads-quick {
  border: 1px solid #ffe0ba;
  border-radius: 18px;
  background:
    radial-gradient(300px 120px at 96% 0%, rgba(250,140,22,.1), transparent 65%),
    linear-gradient(120deg, #fff7ea 0%, #fffdfa 70%);
  box-shadow: var(--ads-shadow, 0 4px 16px rgba(25,34,55,.07));
}
.ads-quick-main b {
  font-size: 15.5px;
  background: linear-gradient(100deg, #d96f00, #fa8c16);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}
.ads-quick-go {
  padding: 10px 22px;
  border-radius: 12px;
  animation: adsGlow 2.6s ease-in-out infinite;
}
@keyframes adsGlow {
  0%, 100% { box-shadow: 0 2px 8px rgba(250,140,22,.28), inset 0 1px 0 rgba(255,255,255,.22); }
  50%      { box-shadow: 0 4px 18px rgba(250,140,22,.44), inset 0 1px 0 rgba(255,255,255,.22); }
}
.ads-quick-chip {
  border-radius: 10px;
  border: 1px solid var(--ads-line, #e8ebf1);
  transition: border-color .15s ease, box-shadow .15s ease, transform .15s ease;
}
.ads-quick-chip:hover {
  border-color: #ffcf96;
  box-shadow: 0 3px 10px rgba(250,140,22,.14);
  transform: translateY(-1px);
}

/* ---------- ⑥ 标签页：分段控件的层次 ---------- */
.ads-tabs {
  position: sticky;
  top: 58px;
  z-index: 40;
  padding: 5px;
  border-radius: 14px;
  background: rgba(245, 247, 251, .92);
  backdrop-filter: blur(8px);
  box-shadow: inset 0 0 0 1px var(--ads-line, #e8ebf1), 0 2px 8px rgba(25,34,55,.04);
}
.ads-tab {
  border-radius: 10px;
  font-weight: 600;
  transition: color .15s ease, background .15s ease, box-shadow .15s ease;
}
.ads-tab:hover:not(.on) { background: rgba(250, 140, 22, .08); color: var(--ads-primary, #fa8c16); }
.ads-tab.on {
  background: #fff;
  color: var(--ads-primary, #fa8c16);
  box-shadow: 0 2px 8px rgba(20, 30, 60, .1), 0 0 0 1px rgba(250, 140, 22, .18);
}
.ads-tab-dot {
  background: var(--ads-primary, #fa8c16);
  color: #fff;
  border-radius: 999px;
  padding: 0 6px;
  font-style: normal;
}

/* ---------- ⑦ 内容卡片：统一圆角投影 + 悬停反馈 ---------- */
.ads-slot,
.ads-order,
.ads-map-item,
.ads-card {
  border-radius: var(--ads-radius, 14px) !important;
  border: 1px solid var(--ads-line, #e8ebf1);
  background: #fff;
  box-shadow: var(--ads-shadow-sm, 0 1px 3px rgba(25,34,55,.06));
  transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}
.ads-slot:hover,
.ads-order:hover,
.ads-map-item:hover {
  transform: translateY(-2px);
  border-color: #ffd9ad;
  box-shadow: 0 8px 22px rgba(250, 140, 22, .1);
}

/* 位子类型徽标更柔和 */
.ads-slot-tag, .ads-badge {
  border-radius: 999px;
  font-weight: 700;
}

/* ---------- ⑧ 下单弹窗：层次与仪式感 ---------- */
.ads-mask {
  background: rgba(24, 30, 44, .46) !important;
  backdrop-filter: blur(4px);
  animation: adsFade .18s ease;
}
@keyframes adsFade { from { opacity: 0; } to { opacity: 1; } }

.ads-modal {
  border-radius: 20px !important;
  padding: 20px 20px 16px !important;
  box-shadow: var(--ads-shadow-lg, 0 12px 40px rgba(25,34,55,.14)) !important;
  animation: adsPop .22s cubic-bezier(.2, .9, .3, 1.2);
}
@keyframes adsPop {
  from { opacity: 0; transform: translateY(14px) scale(.97); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}
.ads-modal-title { font-size: 17px !important; font-weight: 900 !important; letter-spacing: .3px; }
.ads-modal-sub { color: var(--ads-ink-3, #8c94a3) !important; }

/* 弹窗内的操作条：吸底 + 细分割线，按钮永远可见 */
.ads-modal-act {
  position: sticky;
  bottom: -16px;
  margin: 14px -20px -16px;
  padding: 12px 20px calc(14px + env(safe-area-inset-bottom, 0px));
  background: #fff;
  border-top: 1px solid var(--ads-line, #e8ebf1);
  border-radius: 0 0 20px 20px;
}

/* 步骤指示器：大圆点 + 渐变连接线 */
.ads-stp > i {
  width: 24px;
  height: 24px;
  font-size: 12px;
  box-shadow: 0 0 0 3px transparent;
  transition: all .2s ease;
}
.ads-stp.on > i {
  background: var(--ads-primary, #fa8c16);
  box-shadow: 0 0 0 4px rgba(250, 140, 22, .16);
}
.ads-stp.on { color: var(--ads-primary, #fa8c16); font-weight: 800; }
.ads-stp.done > i { background: var(--ads-ok, #17a673); }
.ads-stp.done { color: var(--ads-ok, #17a673); }
.ads-stp-line {
  flex: 1 1 auto !important;
  height: 2px;
  border-radius: 2px;
  background: linear-gradient(90deg, var(--ads-line, #e8ebf1), var(--ads-line, #e8ebf1));
  position: relative;
  overflow: hidden;
}
.ads-stp.done + .ads-stp-line,
.ads-stp-line.done { background: linear-gradient(90deg, var(--ads-ok, #17a673), #7fdfb6); }

/* ---------- ⑨ 选择卡（位子 / 端 / 套餐）---------- */
.ads-pick {
  border-radius: 12px;
  transition: border-color .15s ease, background .15s ease, box-shadow .15s ease;
}
.ads-pick:hover { border-color: #ffcf96; box-shadow: 0 3px 12px rgba(250,140,22,.1); }
.ads-pick.on {
  border-color: var(--ads-primary, #fa8c16) !important;
  background: var(--ads-primary-soft, #fff3e6) !important;
  box-shadow: 0 0 0 1px var(--ads-primary, #fa8c16) inset, 0 3px 12px rgba(250,140,22,.12);
}
.ads-spick { transition: background .15s ease; }
.ads-spick.on {
  background: var(--ads-primary, #fa8c16) !important;
  background-image: linear-gradient(135deg, #ffb254, #fa8c16) !important;
}
.ads-spick.on b, .ads-spick.on span { color: #fff !important; text-shadow: 0 1px 2px rgba(150,70,0,.2); }

.ads-bundle {
  border: 1px solid var(--ads-line, #e8ebf1);
  border-radius: 14px;
  background: #fff;
  transition: border-color .15s ease, background .15s ease, box-shadow .15s ease;
}
.ads-bundle:hover { border-color: #ffcf96; box-shadow: 0 4px 14px rgba(250,140,22,.1); }
.ads-bundle.on {
  border-color: var(--ads-primary, #fa8c16);
  background: linear-gradient(115deg, #fff6ea, #fffdfa);
  box-shadow: 0 0 0 1px var(--ads-primary, #fa8c16) inset, 0 4px 16px rgba(250,140,22,.12);
}

/* ---------- ⑩ 表单：聚焦即有暖色光环 ---------- */
.ads-page input[type="text"],
.ads-page input[type="number"],
.ads-page input[type="url"],
.ads-page textarea,
.ads-modal input,
.ads-modal textarea,
.ads-qk-sheet input,
.ads-qk-sheet textarea {
  border: 1.5px solid var(--ads-line, #e8ebf1);
  border-radius: 10px;
  transition: border-color .15s ease, box-shadow .15s ease;
}
.ads-page input:focus, .ads-page textarea:focus,
.ads-modal input:focus, .ads-modal textarea:focus,
.ads-qk-sheet input:focus, .ads-qk-sheet textarea:focus {
  outline: none;
  border-color: var(--ads-primary, #fa8c16);
  box-shadow: 0 0 0 3.5px rgba(250, 140, 22, .14);
}

/* ---------- ⑪ Toast：深色玻璃 + 上滑入 ---------- */
.ads-toast {
  border-radius: 999px;
  background: rgba(28, 33, 46, .92) !important;
  backdrop-filter: blur(8px);
  box-shadow: 0 8px 28px rgba(15, 20, 35, .3);
  animation: adsToastIn .25s cubic-bezier(.2, .9, .3, 1.15);
  font-weight: 600;
}
@keyframes adsToastIn {
  from { opacity: 0; transform: translate(-50%, 10px); }
  to   { opacity: 1; transform: translate(-50%, 0); }
}

/* ---------- ⑫ 弹窗 / 标签栏滚动条 ---------- */
.ads-modal::-webkit-scrollbar { width: 8px; }
.ads-modal::-webkit-scrollbar-thumb { background: #e3e7ef; border-radius: 8px; }
.ads-modal::-webkit-scrollbar-thumb:hover { background: #d3d9e5; }
.ads-modal::-webkit-scrollbar-track { background: transparent; }
.ads-tabs::-webkit-scrollbar { display: none; }
.ads-tabs { scrollbar-width: none; }

/* ---------- ⑬ 位子地图：色块更立体 ---------- */
.ads-map-cell, .ads-map-block {
  border-radius: 10px;
  transition: transform .15s ease, box-shadow .15s ease, filter .15s ease;
}
.ads-map-cell:hover, .ads-map-block:hover {
  transform: scale(1.04);
  box-shadow: 0 6px 16px rgba(250, 140, 22, .25);
  filter: saturate(1.1);
  z-index: 2;
}

/* ---------- ⑭ 空状态更友好 ---------- */
.ads-empty { color: var(--ads-ink-3, #8c94a3); }
.ads-empty .ads-btn { margin-top: 10px; }

/* ---------- ⑮ 动效关怀 ---------- */
@media (prefers-reduced-motion: reduce) {
  .ads-btn, .ads-kpi, .ads-slot, .ads-order, .ads-map-item,
  .ads-modal, .ads-mask, .ads-toast, .ads-quick-go { animation: none !important; transition: none !important; }
}

/* ---------- ⑯ 移动端微调 ---------- */
@media (max-width: 640px) {
  .ads-hero { padding: 18px 16px; border-radius: 16px; }
  .ads-hero-title { font-size: 19px; }
  .ads-hero-side { align-self: flex-start; }
  .ads-hero::after { right: -18px; font-size: 72px; }
  .ads-tabs { top: 52px; }
  .ads-modal { border-radius: 20px 20px 0 0 !important; }
  .ads-modal-act { border-radius: 0; }
  .ads-kpi-v { font-size: 17px; }
}

/* ---------- ⑰ 透明账本条（v4.4.0）---------- */
/* 与租期进度条同形不同色：租期=主题橙，账本=墨蓝，一眼分清「时间」和「钱」 */
.ads-ledger { margin-top: 8px; }
.ads-ledger-bar i {
  background: linear-gradient(90deg, #4f7df0, #2f5fe0) !important;
}
.ads-ledger .ads-term-foot { color: var(--ads-ink-2, #5b6473); font-size: 12px; }
.ads-ledger .ads-term-foot b { color: #2f5fe0; }

/* ---------- ⑱ 位子热力徽标（v4.5.0）---------- */
.ads-heat-hot  { background: #fdeaea !important; color: #d64545 !important; }
.ads-heat-warm { background: #fff3e6 !important; color: #e08700 !important; }
.ads-heat-cold { background: #eef4ee !important; color: #17a673 !important; }
