/* ===== web/src/css/10-base.css ===== */
:root {
  /* ── Motion tokens (transitions.dev shared scale) ──────────────
     语义化动效尺度：时长 / 缓动 / 位移 / 缩放 / 模糊。
     用法见注释，改动效只改这里。 */
  /* Durations */
  --duration-stagger: 40ms; /* per-item stagger offset */
  --duration-micro: 80ms; /* tooltip/path delay, shake segment, large stagger */
  --duration-quick: 150ms; /* modal/dropdown close, text swap, tooltip appear */
  --duration-fast: 250ms; /* icon swap, dropdown/modal open, tabs sliding, page slide */
  --duration-medium: 350ms; /* panel close, toast close */
  --duration-slow: 400ms; /* panel open, skeleton content reveal, input clear */
  --duration-very-slow: 500ms; /* emphasis moments, badge appear, text reveal, success check */
  /* Easings */
  --ease-smooth-out: cubic-bezier(
    0.22,
    1,
    0.36,
    1
  ); /* modal/dropdown/panel open + close, page slide, resize, position change */
  --ease-in-out: ease-in-out; /* icon swap, text swap, text reveal, skeleton reveal */
  --ease-out: ease-out; /* tooltip open / close */
  --ease-linear: linear; /* shimmer, skeleton pulse, spinner */
  --ease-bounce: cubic-bezier(0.34, 1.36, 0.64, 1); /* badge pop open */
  --ease-bounce-strong: cubic-bezier(
    0.34,
    3.85,
    0.64,
    1
  ); /* bouncy hover-out (avatar return) */
  /* Distances */
  --distance-micro: 4px; /* text swap */
  --distance-small: 6px; /* error shake (small segment) */
  --distance-base: 8px; /* badge diagonal reveal, page slide, error shake (large segment) */
  --distance-medium: 12px; /* text reveal */
  --distance-large: 30px; /* check badge appear */
  /* Scales */
  --scale-large: 0.96; /* modal open / close */
  --scale-medium: 0.97; /* dropdown open */
  --scale-small: 0.98; /* tooltip open */
  --scale-tiny: 0.99; /* dropdown close */
  /* Blur */
  --blur-small: 2px; /* panel reveal, icon swap, text swap, skeleton reveal, number pop-in */
  --blur-medium: 3px; /* page slide, text reveal */
  --blur-large: 8px; /* success check open */

  /* ── Chart tokens ──────────────────────────────────────────────
     分类色：固定顺序取用，不按序号循环、不按排名重涂。
     已通过 dataviz validator（light，--pairs all）五项全 PASS。 */
  --chart-1: #27427c; /* 分类槽位 1 */
  --chart-2: #5b836d; /* 分类槽位 2 */
  --chart-3: #a4742c; /* 分类槽位 3 */
  --chart-4: #284480; /* 分类槽位 4 */
  /* 顺序色：单一色相由浅到深，用于有先后的阶段 */
  --chart-seq-1: #5a6887;
  --chart-seq-2: #536999;
  --chart-seq-3: #304c87;
  --chart-seq-4: #27427c;
  /* 状态色：保留位，不得挪用为“第 N 个序列” */
  --chart-good: #5b836d;
  --chart-warning: #a4742c;
  --chart-critical: #b94245;
  --chart-neutral: #27427c;
  --chart-inactive: #a7a39b; /* 取消 / 无数据 */

  --ink: #24221f;
  --muted: #8c887e;
  --line: #efede9;
  --soft: #f9f8f5;
  --blue: #2e4c8d;
  --blue2: #4865a3;
  --purple: #355292;
  --pink: #4e69a4;
  --green: #76a88d;
  --orange: #b68237;
  --red: #ba4043;
  --shadow: 0 12px 34px rgba(74, 71, 65, 0.09);
}
* {
  box-sizing: border-box;
}
html,
body {
  margin: 0;
  min-height: 100%;
  font-family:
    -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC",
    "Microsoft YaHei", sans-serif;
  color: var(--ink);
  background: #f8f7f4;
}
button,
input,
select {
  font: inherit;
}
button {
  cursor: pointer;
}
.muted {
  color: var(--muted);
}
.shell {
  display: grid;
  grid-template-columns: 218px 1fr;
  min-height: 100vh;
}
.side {
  position: sticky;
  top: 0;
  height: 100vh;
  padding: 22px 14px;
  background: #21201d;
  color: #e6e4df;
  display: flex;
  flex-direction: column;
  z-index: 5;
}
.brand {
  display: flex;
  align-items: center;
  gap: 11px;
  padding: 0 8px 24px;
  font-weight: 800;
  color: #ffffff;
}
.brandmark {
  display: grid;
  place-items: center;
  width: 36px;
  height: 36px;
  border-radius: 12px;
  background: linear-gradient(135deg, var(--blue), var(--pink));
  box-shadow: 0 8px 18px #536ef555;
}
.brand small {
  display: block;
  color: #938f86;
  font-size: 10px;
  letter-spacing: 1px;
  margin-top: 3px;
}
.nav {
  display: grid;
  gap: 5px;
}
.nav button {
  position: relative;
  border: 0;
  background: transparent;
  color: #aba8a1;
  padding: 11px 12px;
  border-radius: 11px;
  text-align: left;
  display: flex;
  gap: 11px;
  align-items: center;
}
.nav button:hover,
.nav button.active {
  background: linear-gradient(90deg, #526bf52a, #9b74ee15);
  color: #ffffff;
}
.nav button.active:before {
  content: "";
  position: absolute;
  left: -14px;
  width: 3px;
  height: 22px;
  border-radius: 3px;
  background: #4361a2;
}
.ico {
  width: 18px;
  text-align: center;
}
.nav-spacer {
  height: 14px;
}
.nav-label {
  font-size: 11px;
  color: #777369;
  padding: 8px 12px;
}
.side-foot {
  margin-top: auto;
  padding: 14px 11px;
  background: #ffffff0d;
  border: 1px solid #ffffff0d;
  border-radius: 13px;
  font-size: 12px;
  line-height: 1.7;
  color: #bcb9b3;
}
.dot {
  display: inline-block;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: #88bfa1;
  margin-right: 6px;
}
.main {
  min-width: 0;
}
.top {
  height: 68px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 26px;
  background: #ffffff;
  border-bottom: 1px solid var(--line);
  position: sticky;
  top: 0;
  z-index: 4;
}
.crumb strong {
  font-size: 18px;
}
.crumb span {
  font-size: 12px;
  color: var(--muted);
  margin-left: 10px;
}
.top-actions {
  display: flex;
  align-items: center;
  gap: 10px;
}
.ghost,
.primary,
.tiny {
  border: 1px solid var(--line);
  border-radius: 10px;
  background: #ffffff;
  padding: 9px 13px;
  color: var(--ink);
}
.primary {
  border: 0;
  color: #ffffff;
  background: linear-gradient(135deg, var(--blue), var(--purple));
  box-shadow: 0 7px 18px #516cf43b;
}
.tiny {
  padding: 6px 9px;
  font-size: 12px;
}
.avatar {
  width: 35px;
  height: 35px;
  border-radius: 12px;
  background: linear-gradient(135deg, #edebe6, #f1efea);
  display: grid;
  place-items: center;
  font-weight: 800;
  color: #26417a;
}
.content {
  padding: 20px 24px 32px;
  max-width: 1680px;
  margin: auto;
}
.section-title {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  margin-bottom: 15px;
}
.section-title h1 {
  font-size: 23px;
  margin: 0 0 3px;
}
.section-title p {
  margin: 0;
  font-size: 13px;
  color: var(--muted);
}
.notice {
  display: flex;
  align-items: center;
  gap: 11px;
  background: linear-gradient(90deg, #f5f3ef, #faf9f6);
  border: 1px solid #eceae6;
  border-radius: 13px;
  padding: 11px 14px;
  margin-bottom: 14px;
  font-size: 13px;
}
.notice b {
  color: #27417a;
}
.notice .badge {
  margin-left: auto;
}
.filterbar {
  background: #ffffff;
  border: 1px solid var(--line);
  border-radius: 15px;
  padding: 12px;
  display: flex;
  align-items: center;
  gap: 9px;
  margin-bottom: 14px;
  box-shadow: 0 3px 14px rgba(57, 55, 50, 0.03);
}
.filterbar label {
  font-size: 12px;
  color: var(--muted);
}
.filterbar select,
.filterbar input {
  height: 36px;
  border: 1px solid var(--line);
  border-radius: 9px;
  padding: 0 10px;
  color: var(--ink);
  background: #f9fbff;
}
.filterbar .grow {
  flex: 1;
}
.divider {
  width: 1px;
  height: 27px;
  background: var(--line);
  margin: 0 4px;
}
.kpis {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 12px;
  margin-bottom: 12px;
}
.kpi {
  background: #ffffff;
  border: 1px solid var(--line);
  border-radius: 15px;
  padding: 15px;
  min-height: 116px;
  position: relative;
  overflow: hidden;
  box-shadow: 0 5px 18px rgba(61, 59, 54, 0.04);
}
/* 原来是右下角一团装饰色块，压在数字后面且不带信息。
   换成左侧状态色条：能一眼扫出哪张卡需要处理。 */
.kpi:after {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 3px;
  background: var(--accent, transparent);
}
.kpi .label {
  font-size: 12px;
  color: var(--muted);
}
.kpi .num {
  font-size: 29px;
  font-weight: 800;
  letter-spacing: -1px;
  margin-top: 11px;
}
.kpi .foot {
  font-size: 11px;
  color: var(--muted);
  margin-top: 7px;
}
.up {
  color: var(--green);
  font-weight: 700;
}
.danger {
  color: var(--red) !important;
}
.orange {
  color: var(--orange);
}
.grid2 {
  display: grid;
  grid-template-columns: 1.25fr 0.75fr;
  gap: 12px;
  margin-bottom: 12px;
}
.grid3 {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
  margin-bottom: 12px;
}
.card {
  background: #ffffff;
  border: 1px solid var(--line);
  border-radius: 15px;
  padding: 16px;
  box-shadow: 0 5px 18px rgba(61, 59, 54, 0.04);
  min-width: 0;
}
.card-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 14px;
}
.card-head h3 {
  font-size: 15px;
  margin: 0;
}
.legend {
  display: flex;
  gap: 13px;
  color: var(--muted);
  font-size: 11px;
}
.legend i {
  display: inline-block;
  width: 7px;
  height: 7px;
  border-radius: 2px;
  margin-right: 5px;
}
.bars {
  height: 196px;
  display: flex;
  align-items: flex-end;
  gap: 18px;
  padding: 16px 8px 28px;
  border-bottom: 1px solid var(--line);
  background: repeating-linear-gradient(
    to top,
    transparent,
    transparent 47px,
    #f6f4f0 48px
  );
}
.barcol {
  height: 100%;
  flex: 1;
  display: flex;
  align-items: flex-end;
  position: relative;
}
.bar {
  width: 72%;
  margin: auto;
  border-radius: 7px 7px 2px 2px;
  background: var(--chart-1);
  position: relative;
  min-height: 8px;
}
.bar em {
  position: absolute;
  top: -20px;
  width: 100%;
  text-align: center;
  font-style: normal;
  font-size: 10px;
  color: #294175;
}
.barcol span {
  position: absolute;
  bottom: -23px;
  font-size: 10px;
  color: var(--muted);
  width: 100%;
  text-align: center;
  white-space: nowrap;
}

.donutwrap {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 24px;
  min-height: 196px;
}
.donut {
  width: 142px;
  height: 142px;
  border-radius: 50%;
  background: conic-gradient(
    var(--blue) 0 55%,
    var(--purple) 55% 76%,
    var(--pink) 76% 90%,
    #af8648 90%
  );
  position: relative;
}
.donut:after {
  content: "";
  position: absolute;
  inset: 34px;
  border-radius: 50%;
  background: #ffffff;
}
.donutlabel {
  position: absolute;
  inset: 0;
  z-index: 1;
  display: grid;
  place-items: center;
  text-align: center;
  font-size: 20px;
  font-weight: 800;
}
.donutlabel small {
  display: block;
  font-size: 10px;
  color: var(--muted);
  font-weight: 500;
}
.listleg {
  display: grid;
  gap: 9px;
  font-size: 11px;
}
.listleg div {
  display: flex;
  justify-content: space-between;
  gap: 20px;
}
.listleg b {
  font-weight: 700;
}
.sq {
  width: 8px;
  height: 8px;
  border-radius: 2px;
  display: inline-block;
  margin-right: 6px;
}
.workflow {
  display: grid;
  grid-template-columns: repeat(8, 1fr);
  gap: 7px;
}
.step {
  padding: 12px 8px;
  border-radius: 11px;
  background: #faf9f6;
  text-align: center;
  font-size: 11px;
  position: relative;
}
.step:not(:last-child):after {
  content: "›";
  position: absolute;
  right: -7px;
  color: #b7b4ad;
  font-size: 17px;
  z-index: 1;
}
.step strong {
  display: grid;
  place-items: center;
  margin: auto auto 8px;
  width: 28px;
  height: 28px;
  border-radius: 9px;
  background: #f1efeb;
  color: var(--blue);
}
.step.done {
  background: #f8f6f3;
  color: #547965;
}
.step.done strong {
  background: #dff1e5;
  color: #547965;
}
.table-card {
  padding: 0;
  overflow: hidden;
}
.table-tools {
  padding: 14px 16px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  border-bottom: 1px solid var(--line);
}
.table-tools h3 {
  margin: 0;
  font-size: 15px;
}
.search {
  border: 1px solid var(--line);
  border-radius: 9px;
  height: 34px;
  padding: 0 11px;
  width: 220px;
}
.table-wrap {
  overflow: auto;
}
table {
  width: 100%;
  border-collapse: collapse;
  white-space: nowrap;
}
th {
  font-size: 11px;
  color: var(--muted);
  background: #f9fbff;
  text-align: left;
  padding: 11px 13px;
  font-weight: 600;
}
td {
  font-size: 12px;
  padding: 12px 13px;
  border-top: 1px solid #f6f4f0;
}
.badge {
  display: inline-flex;
  align-items: center;
  border: 1px solid transparent;
  padding: 3px 8px;
  border-radius: 999px;
  font-size: 10px;
  font-weight: 700;
  background: #f5f3ef;
  color: #2a447d;
}
.badge.green {
  background: #eaf5ed;
  color: #537964;
}
.badge.red {
  background: #f5f4f0;
  color: #ba4043;
}
.badge.orange {
  background: #f9f1e4;
  color: #b58239;
}
.badge.gray {
  background: #f3f1ed;
  color: #6b675f;
  border-color: #e7e5e1;
}
.progress {
  height: 6px;
  width: 90px;
  background: #f4f2ee;
  border-radius: 5px;
  overflow: hidden;
  display: inline-block;
  margin-right: 7px;
}
.progress i {
  display: block;
  height: 100%;
  background: linear-gradient(90deg, var(--blue), var(--pink));
  border-radius: 5px;
}
.money {
  font-weight: 750;
}
.money.neg {
  color: var(--red);
}
.view {
  display: none;
}
.view.active {
  display: block;
}
.empty {
  padding: 45px;
  text-align: center;
  color: var(--muted);
}
.modal {
  position: fixed;
  inset: 0;
  background: #171b35a8;
  display: none;
  align-items: center;
  justify-content: center;
  z-index: 20;
  padding: 18px;
}
.modal.open {
  display: flex;
}
/* 模态开关：遮罩淡入淡出，面板带预缩放。
   display:none ↔ flex 本身不触发过渡，需要 allow-discrete + @starting-style
   才能让首帧真正从 0 开始；不支持的浏览器直接硬切，不会坏。 */
.modal {
  opacity: 0;
  transition:
    opacity var(--duration-quick) var(--ease-smooth-out),
    display var(--duration-quick) allow-discrete;
}
.modal.open {
  opacity: 1;
  transition:
    opacity var(--duration-fast) var(--ease-smooth-out),
    display var(--duration-fast) allow-discrete;
}
@starting-style {
  .modal.open {
    opacity: 0;
  }
}
.modal .dialog {
  transform: scale(var(--scale-large));
  transition: transform var(--duration-quick) var(--ease-smooth-out);
}
.modal.open .dialog {
  transform: scale(1);
  transition: transform var(--duration-fast) var(--ease-smooth-out);
}
@starting-style {
  .modal.open .dialog {
    transform: scale(var(--scale-large));
  }
}
.dialog {
  width: min(720px, 100%);
  max-height: 92vh;
  overflow: auto;
  background: #ffffff;
  border-radius: 20px;
  box-shadow: 0 28px 70px #161a3c44;
}
.order-dialog {
  width: min(1180px, 100%);
  background: #fafaf8;
}
.dialog-head,
.dialog-foot {
  padding: 15px 20px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  border-bottom: 1px solid var(--line);
  background: #ffffff;
}
.dialog-foot {
  border-top: 1px solid var(--line);
  border-bottom: 0;
  justify-content: flex-end;
  gap: 8px;
}
.dialog-head.sticky {
  position: sticky;
  top: 0;
  z-index: 8;
}
.sticky-foot {
  position: sticky;
  bottom: 0;
  z-index: 8;
}
.dialog-head-actions {
  display: flex;
  align-items: center;
  gap: 12px;
}
.dialog-head h2 {
  margin: 0;
  font-size: 18px;
}
.dialog-body {
  padding: 15px;
}
.formgrid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}
.formgrid.four {
  grid-template-columns: repeat(4, 1fr);
  gap: 11px;
}
.field {
  display: grid;
  gap: 6px;
  position: relative;
}
.field.full {
  grid-column: 1/-1;
}
.field label {
  font-size: 11px;
  color: var(--muted);
}
.field input,
.field select {
  width: 100%;
  height: 38px;
  border: 1px solid var(--line);
  border-radius: 9px;
  padding: 0 10px;
  background: #ffffff;
  color: var(--ink);
}
.close {
  border: 0;
  background: transparent;
  font-size: 22px;
  color: var(--muted);
}
.role-switch {
  height: 37px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: #fbfbf9;
  padding: 0 28px 0 10px;
  color: #625e56;
}
.order-section {
  background: #ffffff;
  border: 1px solid var(--line);
  border-radius: 14px;
  padding: 14px;
  margin-bottom: 11px;
}
.order-section-title {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 12px;
  padding-left: 9px;
  border-left: 3px solid var(--blue);
}
.order-section-title b {
  font-size: 13px;
}
.order-section-title span {
  font-size: 10px;
  color: var(--muted);
}
.talent-title {
  justify-content: space-between;
}
.talent-title > div {
  display: flex;
  align-items: center;
  gap: 10px;
}
.input-action {
  display: flex;
}
.input-action input,
.input-action select {
  border-radius: 9px 0 0 9px;
  min-width: 0;
  flex: 1 1 auto;
}
.input-action button {
  border: 0;
  background: #f5f3ef;
  color: #29437c;
  padding: 0 11px;
  border-radius: 0 9px 9px 0;
  font-size: 11px;
  white-space: nowrap;
}
.product-field {
  grid-column: span 2;
}
/* 产品类目跟在产品名下面，用标签显示，不再单独占一个输入框：
   它是选完产品自动带出来的，手录一遍只会和产品库对不上 */
#productHint {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}
#productHint .badge {
  flex: 0 0 auto;
}
.library-pop {
  display: none;
  position: absolute;
  top: 66px;
  left: 0;
  right: 0;
  background: #ffffff;
  border: 1px solid var(--line);
  border-radius: 11px;
  box-shadow: var(--shadow);
  padding: 9px;
  z-index: 10;
}
.library-pop.open {
  display: grid;
}
.library-pop b {
  font-size: 11px;
  padding: 5px 7px;
}
.library-pop button {
  text-align: left;
  border: 0;
  border-top: 1px solid #f6f4f0;
  background: #ffffff;
  padding: 9px 7px;
  color: var(--ink);
}
.library-pop button:hover {
  background: #faf9f6;
}
/* 产品按品类分段：一个品牌的产品可能横跨彩妆和护肤，
   不分段的话是一长串平的按钮，选错品类的概率比选错品牌还高 */
.library-pop .lib-cat {
  font-size: 11px;
  color: var(--muted);
  padding: 7px 7px 3px;
  border-top: 1px solid #f6f4f0;
}
.library-pop .lib-cat:first-of-type {
  border-top: 0;
}
.library-pop button small {
  display: block;
  font-size: 11px;
  color: var(--muted);
  margin-top: 2px;
}
.library-pop .lib-empty {
  font-size: 12px;
  color: var(--muted);
  padding: 4px 7px 7px;
  line-height: 1.6;
}
/* 库里没有就当场建：商务进不了基础设置，这一小块是他唯一的入口 */
.library-pop .lib-new {
  display: grid;
  grid-template-columns: 1fr 1fr auto auto;
  gap: 6px;
  align-items: center;
  margin-top: 4px;
  padding: 9px 7px 7px;
  border-top: 1px dashed var(--line);
}
.library-pop .lib-new b {
  grid-column: 1 / -1;
  padding: 0 0 2px;
  font-size: 11px;
  color: var(--muted);
}
.library-pop .lib-new input,
.library-pop .lib-new select {
  min-width: 0;
  padding: 6px 9px;
  border: 1px solid var(--line);
  border-radius: 8px;
  font-size: 12px;
  background: #ffffff;
}
.library-pop .lib-new button {
  border: 1px solid var(--blue);
  border-radius: 8px;
  background: #faf9f6;
  color: var(--blue);
  padding: 6px 12px;
  font-size: 12px;
  white-space: nowrap;
  text-align: center;
}
.library-pop .lib-new small {
  grid-column: 1 / -1;
  font-size: 11px;
  color: var(--muted);
}
@media (max-width: 760px) {
  .library-pop .lib-new {
    grid-template-columns: 1fr 1fr;
  }
}
/* 客户那个弹窗只有一个输入框 + 一个按钮，不用产品那套四列 */
#customerNew .lib-new {
  grid-template-columns: 1fr auto;
}
.talent-grid {
  display: grid;
  grid-template-columns: 1.35fr 0.8fr 0.8fr 0.9fr 32px;
  gap: 8px;
  align-items: center;
}
.talent-grid-head {
  font-size: 10px;
  color: var(--muted);
  padding: 0 7px 6px;
}
.talent-line {
  padding: 8px 7px;
  border-top: 1px solid #f6f4f0;
}
.talent-line select,
.talent-line input {
  width: 100%;
  height: 36px;
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 0 8px;
  background: #ffffff;
}
.remove-row {
  border: 0;
  background: #fcf2f1;
  color: var(--red);
  border-radius: 8px;
  width: 30px;
  height: 30px;
  font-size: 17px;
}
.amount-check {
  display: grid;
  grid-template-columns: repeat(3, 1fr) 1.2fr;
  gap: 12px;
  align-items: center;
  margin-top: 11px;
  padding: 12px 14px;
  border-radius: 11px;
  background: #f9f8f5;
  border: 1px solid var(--line);
  font-size: 10px;
  color: var(--muted);
}
.amount-check b {
  display: block;
  font-size: 16px;
  color: var(--ink);
  margin-top: 3px;
}
.amount-check strong {
  text-align: right;
}
.amount-check.ok {
  background: #f8f6f3;
  border-color: #deeee3;
}
.amount-check.ok strong {
  color: #537863;
}
.amount-check.bad {
  background: #faf9f6;
  border-color: #f9dfdc;
}
.amount-check.bad strong,
.amount-check.bad #sumRemain {
  color: var(--red);
}
.primary:disabled {
  opacity: 0.45;
  cursor: not-allowed;
  box-shadow: none;
}
.execution-table td {
  vertical-align: middle;
}
.execution-table td:nth-child(4) {
  min-width: 330px;
}
.execution-table td:nth-child(6) {
  min-width: 260px;
}
.execution-table small {
  display: block;
  color: var(--muted);
  margin-top: 4px;
}
.stagebar {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 4px;
  position: relative;
  padding-bottom: 22px;
  min-width: 300px;
}
.stage-seg {
  height: 8px;
  background: #f0eeea;
  position: relative;
  border-radius: 4px;
}
.stage-seg i {
  position: absolute;
  left: 0;
  top: -3px;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: #e7e5e1;
  border: 3px solid #ffffff;
  box-shadow: 0 0 0 1px #e7e5e1;
}
.stage-seg span {
  position: absolute;
  top: 15px;
  left: 0;
  font-size: 9px;
  color: #9b988f;
  white-space: nowrap;
}
.stage-seg.s1.filled,
.stage-seg.s1.filled i {
  background: #3b599a;
}
.stage-seg.s2.filled,
.stage-seg.s2.filled i {
  background: #375493;
}
.stage-seg.s3.filled,
.stage-seg.s3.filled i {
  background: #4e68a2;
}
.stage-seg.s4.filled,
.stage-seg.s4.filled i {
  background: #76a88d;
}
.stage-seg.filled span {
  color: #58554e;
  font-weight: 700;
}
.stagebar em {
  position: absolute;
  right: 0;
  bottom: -1px;
  font-size: 9px;
  font-style: normal;
  color: #757167;
}
.stagebar.is-cancelled .stage-seg,
.stagebar.is-cancelled .stage-seg i {
  background: #d0ceca;
}
.stagebar.is-cancelled .stage-seg span,
.stagebar.is-cancelled em {
  color: #9c9990;
}
.cancelled {
  background: #f9f8f5;
  color: #a4a098;
}
.cancelled .badge {
  filter: grayscale(1);
}
/* 保留原生 select（键盘与移动端选择器都不丢），只替换外观 */
.stage-edit {
  height: 32px;
  -webkit-appearance: none;
  appearance: none;
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 0 26px 0 10px;
  font-size: 12px;
  color: var(--ink);
  cursor: pointer;
  background-color: #ffffff;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%237a849f' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 9px center;
  transition:
    border-color var(--duration-quick) var(--ease-smooth-out),
    box-shadow var(--duration-quick) var(--ease-smooth-out);
}
.stage-edit:hover:not(:disabled) {
  border-color: var(--blue);
}
.stage-edit:focus-visible {
  border-color: var(--blue);
  box-shadow: 0 0 0 3px rgba(46, 76, 141, 0.18);
  outline: none;
}
/* 已发布：达成态，收敛为静态文本，不再像可改的控件 */
.stage-edit[data-stage="4"] {
  color: var(--chart-good);
  font-weight: 600;
}
/* 已撤单：失效态 */
.stage-edit[data-stage="5"] {
  color: var(--muted);
  background-color: var(--soft);
}
.stage-edit:disabled {
  background-color: var(--soft);
  color: var(--muted);
  cursor: not-allowed;
  background-image: none;
  padding-right: 10px;
}
.exec-note {
  width: 100%;
  min-height: 54px;
  resize: vertical;
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 8px;
  font-size: 11px;
  line-height: 1.45;
  color: var(--ink);
}
.h5-stage {
  margin-top: 16px;
}
.h5-stage .stagebar {
  min-width: 0;
}
.h5-note {
  margin-top: 9px;
  padding: 9px;
  border-radius: 9px;
  background: #f8f6f1;
  color: #74716c;
  font-size: 10px;
  line-height: 1.5;
}
.h5-note b {
  display: block;
  color: #454340;
  margin-bottom: 2px;
}
.h5-cancelled {
  filter: grayscale(0.9);
  opacity: 0.72;
}
th {
  position: relative;
  padding-right: 28px;
}
.th-filter {
  position: absolute;
  right: 7px;
  top: 50%;
  transform: translateY(-50%);
  width: 19px;
  height: 19px;
  border: 0;
  border-radius: 5px;
  background: #f5f3ef;
  color: #8e8a80;
  font-size: 10px;
  padding: 0;
}
.th-filter:hover {
  background: #edebe7;
  color: var(--blue);
}
.column-filter {
  display: none;
  position: fixed;
  width: 300px;
  background: #ffffff;
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 12px;
  box-shadow: 0 16px 40px #29305228;
  z-index: 50;
}
.column-filter.open {
  display: grid;
  gap: 10px;
}
.cf-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.cf-head b {
  font-size: 13px;
  font-weight: 600;
}
.cf-x {
  border: 0;
  background: none;
  font-size: 18px;
  line-height: 1;
  color: var(--muted);
  cursor: pointer;
}
.cf-range,
.cf-search {
  display: flex;
  align-items: center;
  gap: 6px;
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 0 8px;
  height: 36px;
}
.cf-range:focus-within,
.cf-search:focus-within {
  border-color: var(--blue);
}
.cf-op {
  color: var(--muted);
  padding-right: 6px;
  border-right: 1px solid var(--line);
}
.cf-range input,
.cf-search input {
  border: 0;
  outline: 0;
  min-width: 0;
  flex: 1;
  font: inherit;
  font-size: 13px;
  background: transparent;
}
.cf-range em {
  font-style: normal;
}
.cf-list {
  display: grid;
  max-height: 220px;
  overflow: auto;
}
.cf-opt {
  border: 0;
  background: none;
  text-align: left;
  padding: 7px 10px;
  border-radius: 6px;
  font-size: 13px;
  color: var(--ink, #2c2a26);
  cursor: pointer;
}
.cf-opt:hover {
  background: #f7f6f3;
}
.cf-opt.on {
  background: #f6f5f2;
  color: var(--blue);
  font-weight: 600;
}
.cf-none {
  text-align: center;
  color: var(--muted);
  font-size: 12px;
  padding: 8px;
}
.cf-foot {
  display: flex;
  justify-content: flex-end;
  gap: 6px;
}
.cf-foot button {
  border: 1px solid var(--line);
  border-radius: 7px;
  padding: 5px 12px;
  background: #ffffff;
  cursor: pointer;
}
.cf-foot .cf-ok {
  background: var(--blue);
  border-color: var(--blue);
  color: #ffffff;
}
.date-rule {
  display: block;
  color: #8b877d;
  font-weight: 400;
  font-size: 9px;
  margin-top: 3px;
}
.detail-mask {
  position: fixed;
  inset: 0;
  background: #171b355c;
  z-index: 25;
  display: none;
  justify-content: flex-end;
}
.detail-mask.open {
  display: flex;
}
.detail-drawer {
  width: min(980px, 92vw);
  height: 100%;
  background: #fafaf8;
  box-shadow: -24px 0 60px #1b214333;
  overflow: auto;
}
.detail-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 20px 24px 10px;
  background: #ffffff;
}
.detail-top h2 {
  margin: 0;
  font-size: 22px;
}
.detail-top p {
  margin: 5px 0 0;
  color: var(--muted);
  font-size: 11px;
}
.detail-actions {
  display: flex;
  gap: 8px;
  align-items: center;
  padding: 10px 24px 15px;
  background: #ffffff;
}
.role-chip {
  margin-left: auto;
  background: #f5f3ef;
  color: #29437c;
  padding: 6px 10px;
  border-radius: 999px;
  font-size: 10px;
}
.detail-tabs {
  position: sticky;
  top: 0;
  z-index: 4;
  display: flex;
  background: #ffffff;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  padding: 0 22px;
  overflow: auto;
}
.detail-tabs button {
  border: 0;
  background: transparent;
  padding: 14px 15px;
  color: #807c72;
  white-space: nowrap;
  border-bottom: 2px solid transparent;
}
.detail-tabs button.active {
  color: var(--blue);
  border-color: var(--blue);
  font-weight: 700;
}
.detail-tabs i {
  font-style: normal;
  background: #f6f4f0;
  color: var(--red);
  padding: 1px 5px;
  border-radius: 8px;
  font-size: 9px;
}
.detail-body {
  padding: 18px;
}
.detail-page {
  display: none;
}
.detail-page.active {
  display: block;
}
.detail-section {
  background: #ffffff;
  border: 1px solid var(--line);
  border-radius: 14px;
  padding: 17px;
  margin-bottom: 12px;
}
.detail-section h3 {
  margin: 0 0 16px;
  padding-left: 10px;
  border-left: 3px solid var(--blue);
  font-size: 15px;
}
.detail-section h3 small {
  color: var(--red);
  font-weight: 500;
  margin-left: 8px;
}
.detail-section.secure {
  border-color: #e6e4df;
  background: #fbfdff;
}
.detail-fields {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 18px 40px;
}
.detail-fields div {
  display: grid;
  grid-template-columns: 120px 1fr;
  align-items: center;
}
.detail-fields span {
  font-size: 11px;
  color: var(--muted);
}
.detail-fields b {
  font-size: 13px;
}
.field-locked {
  padding: 22px;
  background: #f4f2ee;
  border-radius: 12px;
  text-align: center;
  color: #99958b;
  font-size: 12px;
}
.field-locked.big {
  margin: 50px auto;
  max-width: 600px;
  padding: 50px;
}
.drawer-exec {
  display: grid;
  grid-template-columns: 150px 1fr;
  gap: 14px;
  align-items: center;
  padding: 13px 0;
  border-top: 1px solid var(--line);
}
.drawer-exec:first-of-type {
  border-top: 0;
}
.drawer-exec small {
  display: block;
  color: var(--muted);
  font-size: 9px;
  margin-top: 4px;
}
.drawer-exec p {
  grid-column: 2;
  margin: -8px 0 0;
  background: #f9f8f5;
  padding: 8px;
  border-radius: 8px;
  color: #7a766c;
  font-size: 10px;
}
.log-head {
  display: flex;
  justify-content: space-between;
}
.log-head span {
  color: var(--muted);
  font-size: 10px;
}
.log-list {
  display: grid;
}
.log-item {
  display: grid;
  grid-template-columns: 100px 38px 1fr auto;
  gap: 12px;
  align-items: center;
  padding: 15px 0;
  border-top: 1px solid var(--line);
}
.log-item time {
  font-size: 12px;
  font-weight: 700;
}
.log-item time small {
  display: block;
  font-size: 9px;
  color: var(--muted);
  font-weight: 400;
}
.log-item > i {
  display: grid;
  place-items: center;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  background: linear-gradient(135deg, #efede9, #f1efea);
  color: #2c4375;
  font-style: normal;
  font-weight: 800;
}
.log-item p {
  margin: 4px 0 0;
  color: var(--muted);
  font-size: 11px;
}
.log-item button {
  border: 0;
  background: transparent;
  color: var(--blue);
  font-size: 10px;
}
.phone-stage {
  min-height: calc(100vh - 68px);
  display: grid;
  place-items: center;
  background:
    radial-gradient(circle at 20% 10%, #f5e3d9, transparent 34%),
    radial-gradient(circle at 80% 90%, #f9e5da, transparent 32%), #f7f5f0;
  padding: 22px;
}
.phone {
  width: 390px;
  max-width: 100%;
  height: min(805px, calc(100vh - 105px));
  min-height: 620px;
  background: #f4f7fc;
  border: 7px solid #232628;
  border-radius: 36px;
  overflow: hidden;
  box-shadow: 0 25px 70px #31375a30;
  position: relative;
}
.phone-screen {
  height: 100%;
  overflow: auto;
  padding-bottom: 74px;
}
.h5head {
  padding: 24px 18px 19px;
  color: #ffffff;
  background: linear-gradient(135deg, #be5d39, #c46443 62%, #d37f62);
  position: relative;
  overflow: hidden;
}
.h5head:after {
  content: "";
  position: absolute;
  width: 170px;
  height: 170px;
  border-radius: 50%;
  background: #ffffff12;
  right: -55px;
  top: -80px;
}
.h5top {
  display: flex;
  justify-content: space-between;
  font-size: 12px;
  opacity: 0.9;
}
.h5hello {
  margin-top: 25px;
}
.h5hello h2 {
  margin: 0;
  font-size: 22px;
}
.h5hello p {
  font-size: 12px;
  opacity: 0.8;
  margin: 5px 0 0;
}
.revenue {
  margin: -2px 13px 12px;
  background: #ffffff;
  border-radius: 17px;
  padding: 16px;
  position: relative;
  box-shadow: var(--shadow);
}
.revenue .total {
  font-size: 30px;
  font-weight: 850;
  margin: 8px 0 14px;
}
.revenue-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 7px;
}
.revenue-grid div {
  background: #faf9f6;
  padding: 9px;
  border-radius: 10px;
  font-size: 10px;
  color: var(--muted);
}
.revenue-grid b {
  display: block;
  color: var(--ink);
  font-size: 14px;
  margin-top: 4px;
}
.h5section {
  margin: 12px 13px;
}
.h5section-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 9px;
}
.h5section-head h3 {
  font-size: 15px;
  margin: 0;
}
.order-card {
  background: #ffffff;
  border-radius: 15px;
  padding: 14px;
  margin-bottom: 10px;
  border: 1px solid #f3f1ed;
}
.order-top {
  display: flex;
  justify-content: space-between;
  gap: 10px;
}
.order-top h4 {
  margin: 0;
  font-size: 14px;
}
.order-meta {
  font-size: 10px;
  color: var(--muted);
  margin-top: 5px;
}
.timeline {
  display: flex;
  margin-top: 15px;
}
.tnode {
  flex: 1;
  text-align: center;
  font-size: 9px;
  color: #a9a69e;
  position: relative;
}
.tnode:before {
  content: "";
  display: block;
  width: 8px;
  height: 8px;
  background: #e4e2de;
  border-radius: 50%;
  margin: auto auto 6px;
  position: relative;
  z-index: 1;
}
.tnode:after {
  content: "";
  position: absolute;
  height: 2px;
  background: #e4e2de;
  top: 3px;
  left: -50%;
  width: 100%;
}
.tnode:first-child:after {
  display: none;
}
.tnode.on {
  color: #2e4c8d;
}
.tnode.on:before,
.tnode.on:after {
  background: #395797;
}
.billrow {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 13px 0;
  border-bottom: 1px solid #f4f2ee;
}
.billrow:last-child {
  border-bottom: 0;
}
.billrow b {
  font-size: 14px;
}
.billrow small {
  display: block;
  color: var(--muted);
  margin-top: 3px;
}
.bottomnav {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 66px;
  background: #ffffff;
  border-top: 1px solid var(--line);
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  z-index: 2;
}
.bottomnav button {
  border: 0;
  background: transparent;
  color: #aeaba3;
  font-size: 10px;
}
.bottomnav button b {
  display: block;
  font-size: 18px;
  margin-bottom: 3px;
}
.bottomnav button.active {
  color: var(--blue);
}
.h5page {
  display: none;
}
.h5page.active {
  display: block;
}
.profile {
  margin: 13px;
  background: #ffffff;
  border-radius: 17px;
  padding: 18px;
}
.profile-head {
  display: flex;
  align-items: center;
  gap: 13px;
  margin-bottom: 18px;
}
.profile-avatar {
  width: 52px;
  height: 52px;
  border-radius: 17px;
  background: linear-gradient(135deg, #edebe6, #f1efea);
  display: grid;
  place-items: center;
  font-size: 22px;
}
.menurow {
  padding: 14px 0;
  border-top: 1px solid var(--line);
  display: flex;
  justify-content: space-between;
  font-size: 13px;
}
.toast {
  position: fixed;
  left: 50%;
  bottom: 28px;
  transform: translate(-50%, var(--distance-large));
  background: #2c2b27;
  color: #ffffff;
  padding: 10px 16px;
  border-radius: 10px;
  font-size: 12px;
  opacity: 0;
  pointer-events: none;
  /* 关闭：更快更安静 */
  transition:
    opacity var(--duration-medium) var(--ease-smooth-out),
    transform var(--duration-medium) var(--ease-smooth-out);
  z-index: 40;
}
.toast.show {
  opacity: 1;
  transform: translate(-50%, 0);
  /* 打开：稍慢，是一次邀请 */
  transition:
    opacity var(--duration-fast) var(--ease-smooth-out),
    transform var(--duration-fast) var(--ease-smooth-out);
}
@media (max-width: 1100px) {
  .kpis {
    grid-template-columns: repeat(2, 1fr);
  }
  .grid3 {
    grid-template-columns: 1fr;
  }
  .workflow {
    grid-template-columns: repeat(4, 1fr);
  }
  .grid2 {
    grid-template-columns: 1fr;
  }
}
@media (max-width: 900px) {
  .formgrid.four {
    grid-template-columns: 1fr 1fr;
  }
  .product-field {
    grid-column: span 2;
  }
  .talent-grid {
    grid-template-columns: 1fr 1fr;
  }
  .talent-grid-head {
    display: none;
  }
  .talent-line {
    padding: 12px 0;
  }
  .talent-line .remove-row {
    grid-column: 2;
  }
  .amount-check {
    grid-template-columns: 1fr 1fr;
  }
  .amount-check strong {
    text-align: left;
  }
}
@media (max-width: 760px) {
  .shell {
    display: block;
  }
  .side {
    display: none;
  }
  .top {
    padding: 0 14px;
  }
  .content {
    padding: 14px;
  }
  .kpis {
    grid-template-columns: 1fr 1fr;
  }
  .kpi {
    min-height: 105px;
    padding: 13px;
  }
  .kpi .num {
    font-size: 24px;
  }
  .filterbar {
    overflow: auto;
  }
  .top-actions .ghost,
  .role-switch {
    display: none;
  }
  .workflow {
    grid-template-columns: repeat(2, 1fr);
  }
  .formgrid,
  .formgrid.four {
    grid-template-columns: 1fr;
  }
  .field.full,
  .product-field {
    grid-column: auto;
  }
  .phone-stage {
    padding: 0;
  }
  .phone {
    width: 100%;
    height: calc(100vh - 68px);
    border: 0;
    border-radius: 0;
    min-height: 0;
  }
  .modal {
    padding: 0;
  }
  .order-dialog {
    height: 100vh;
    max-height: none;
    border-radius: 0;
  }
  .amount-check {
    grid-template-columns: 1fr 1fr;
  }
  .sticky-foot .muted {
    display: none;
  }
}

/* Final prototype refinements */
.button-group {
  display: flex;
  gap: 8px;
}
.order-stats {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 9px;
  margin-bottom: 13px;
}
.order-stat {
  border: 1px solid var(--line);
  background: #ffffff;
  border-radius: 13px;
  padding: 12px;
  text-align: left;
  color: var(--muted);
}
.order-stat b {
  display: block;
  color: var(--ink);
  font-size: 22px;
  margin-top: 5px;
}
.order-stat:hover {
  border-color: #5a6785;
  box-shadow: var(--shadow);
}
.unified-scroll {
  max-height: 520px;
  overflow: auto;
}
.unified-table {
  /* 原为 min-width:1710px（14 列时代）。主表已精简至 9 列，改由 app.css 的固定列宽控制。 */
}
.unified-table thead {
  position: sticky;
  top: 0;
  z-index: 2;
}
.id-link {
  border: 0;
  background: transparent;
  color: #27427c;
  font-weight: 800;
  padding: 0;
}
.id-link:hover {
  text-decoration: underline;
}
/* 距截止日的紧急度。>7 天只是陈述事实（弱），进入 7 天才升为提示色，
   超期用保留的 critical。圆点是第二编码，不靠颜色单独承载信息。 */
.due {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  white-space: nowrap;
  font-weight: 600;
}
.due:not(.calm)::before {
  content: "";
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: currentColor;
  flex: none;
}
.due.calm {
  color: #a7a39b;
  font-weight: 400;
}
.due.soon {
  color: var(--chart-warning);
}
.due.warn {
  color: var(--chart-warning);
  font-weight: 700;
}
.due.crit {
  color: var(--chart-critical);
  font-weight: 700;
}
.mini-table {
  border: 1px solid var(--line);
  border-radius: 10px;
  overflow: hidden;
}
.mini-table tfoot td {
  background: #fafaf8;
}
.receipt-clock {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 10px;
}
.receipt-clock > div {
  background: #fafaf8;
  padding: 13px;
  border-radius: 11px;
}
.receipt-clock span {
  display: block;
  color: var(--muted);
  font-size: 10px;
  margin-bottom: 6px;
}
.receipt-flow {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
}
.receipt-flow > div {
  background: #f9f8f5;
  border-radius: 12px;
  padding: 14px;
  text-align: center;
  position: relative;
}
.receipt-flow i {
  display: grid;
  place-items: center;
  width: 28px;
  height: 28px;
  margin: auto auto 7px;
  border-radius: 50%;
  background: #edebe7;
  color: #8f8b81;
  font-style: normal;
}
.receipt-flow b,
.receipt-flow small {
  display: block;
}
.receipt-flow small {
  font-size: 9px;
  color: var(--muted);
  margin-top: 4px;
}
.receipt-flow .done {
  background: #f8f6f3;
  color: #537964;
}
.receipt-flow .done i {
  background: #dff0e4;
  color: #537964;
}
.receipt-flow .active {
  background: #f6f4f0;
  color: #274179;
}
.receipt-flow .active i {
  background: #edebe7;
  color: #274179;
}
.receipt-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  margin-top: 13px;
}
.metric-kpis .metric-card {
  width: 100%;
  text-align: left;
  color: var(--ink);
  cursor: pointer;
}
.metric-card span,
.metric-card small,
.metric-card em {
  display: block;
}
.metric-card span {
  font-size: 12px;
  color: var(--muted);
}
.metric-card b {
  font-size: 29px;
  margin: 10px 0 5px;
}
.metric-card small {
  color: var(--muted);
}
.metric-card em {
  position: absolute;
  right: 13px;
  top: 14px;
  font-size: 9px;
  font-style: normal;
  color: #354c7f;
}
.metric-mask {
  position: fixed;
  inset: 0;
  background: #171b355c;
  z-index: 35;
  display: none;
  justify-content: flex-end;
}
.metric-mask.open {
  display: flex;
}
.metric-drawer {
  width: min(520px, 92vw);
  height: 100%;
  background: #fafaf8;
  box-shadow: -24px 0 60px #1b214333;
  overflow: auto;
}
.metric-body {
  padding: 16px;
}
.drawer-summary {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 14px;
  background: #f6f4f0;
  border-radius: 12px;
  margin-bottom: 10px;
}
.drawer-summary span {
  font-size: 10px;
  color: var(--muted);
}
.metric-row {
  width: 100%;
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 7px;
  text-align: left;
  border: 1px solid var(--line);
  background: #ffffff;
  border-radius: 12px;
  padding: 14px;
  margin-bottom: 8px;
  color: var(--ink);
}
.metric-row span b,
.metric-row span small {
  display: block;
}
.metric-row span small {
  color: var(--muted);
  margin-top: 4px;
}
.metric-row strong {
  align-self: center;
}
.metric-row i {
  grid-column: 1/-1;
  font-style: normal;
  color: #7d796f;
  font-size: 10px;
}
.payment-detail {
  background: #ffffff;
  border-radius: 14px;
  padding: 18px;
}
.payment-detail h3 {
  margin-top: 0;
}
.payment-detail h4 {
  margin: 22px 0 8px;
}
.payment-detail p {
  background: #faf9f6;
  padding: 10px;
  border-radius: 8px;
  font-size: 11px;
}
.wide {
  width: 100%;
  margin-top: 10px;
}
.column-filter select {
  height: 36px;
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 0 9px;
  background: #ffffff;
  color: var(--ink);
  width: 100%;
}
.table-wrap {
  max-height: 560px;
  overflow: auto;
}
.table-wrap thead {
  position: sticky;
  top: 0;
  z-index: 2;
}
.table-pager {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 18px;
  border-top: 1px solid var(--line);
  padding: 11px 15px;
  background: #ffffff;
  color: var(--muted);
  font-size: 11px;
}
.pager-pages {
  display: flex;
  gap: 4px;
}
.pager-pages button {
  border: 1px solid var(--line);
  background: #ffffff;
  border-radius: 7px;
  width: 29px;
  height: 29px;
}
.pager-pages button.active {
  border-color: var(--blue);
  color: var(--blue);
}
.table-pager select {
  height: 30px;
  border: 1px solid var(--line);
  border-radius: 7px;
  background: #ffffff;
}
.cooperation-only {
  margin-top: 13px;
}
.h5-period {
  position: relative;
  z-index: 2;
  border: 1px solid #ffffff55;
  background: #ffffff20;
  color: #ffffff;
  border-radius: 8px;
  padding: 5px 7px;
}
.h5-period option {
  color: var(--ink);
}
.income-summary {
  margin-bottom: 12px;
}
.statement-card {
  width: 100%;
  display: grid;
  grid-template-columns: 1fr auto;
  text-align: left;
  border: 1px solid var(--line);
  background: #ffffff;
  border-radius: 15px;
  padding: 15px;
  color: var(--ink);
}
.statement-card span b,
.statement-card span small {
  display: block;
}
.statement-card span small {
  color: var(--muted);
  font-size: 10px;
  margin-top: 5px;
}
.statement-card strong {
  font-size: 18px;
  align-self: center;
}
.statement-card i {
  grid-column: 1/-1;
  text-align: right;
  color: var(--blue);
  font-size: 9px;
  font-style: normal;
  margin-top: 7px;
}
.statement-detail {
  display: none;
  background: #ffffff;
  border: 1px solid var(--line);
  border-top: 0;
  border-radius: 0 0 15px 15px;
  padding: 0 15px 12px;
  margin-top: -9px;
}
.statement-detail.open {
  display: block;
}
.statement-card.open {
  border-radius: 15px 15px 0 0;
}
.receipt-link {
  width: 100%;
  border: 1px dashed #586889;
  background: #f7f6f3;
  color: #27427c;
  border-radius: 9px;
  padding: 9px;
  margin-top: 8px;
}
.cloud-note {
  background: #f7f6f3;
  color: #7b776d;
  padding: 11px;
  border-radius: 10px;
  font-size: 10px;
  line-height: 1.65;
  margin: 13px 0;
}
.profile .menurow span:last-child {
  font-size: 11px;
  color: #706d64;
}
.profile .menurow b {
  font-size: 12px;
}
@media (max-width: 1200px) {
  .order-stats {
    grid-template-columns: repeat(3, 1fr);
  }
  .receipt-clock {
    grid-template-columns: repeat(2, 1fr);
  }
}
.order-stats button {
  border: 1px solid var(--line);
  background: #ffffff;
  border-radius: 13px;
  padding: 12px;
  text-align: left;
  color: var(--muted);
}
.order-stats button i {
  display: inline-block;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  margin-right: 6px;
}
.order-stats button b {
  display: block;
  color: var(--ink);
  font-size: 22px;
  margin-top: 5px;
}
.order-stats button:hover {
  border-color: #5a6785;
  box-shadow: var(--shadow);
}

/* ── 减弱动效偏好：系统开启后只保留必要的状态切换 ────────────── */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

/* 侧栏两级菜单（2026-09-22 夜）。
   一级是可点开收起的分类，二级才是页面。说明见 app.js 的 NAV_TREE。 */
.nav-grp {
  display: grid;
  gap: 4px;
}
.nav button.nav-group {
  color: #928e84;
  font-size: 12px;
  letter-spacing: 0.02em;
  padding: 9px 12px;
}
.nav button.nav-group:hover {
  background: #ffffff0a;
  color: #d1d0cc;
}
.nav button.nav-group.here {
  color: #d1d0cc;
}
.nav-group-name {
  flex: 1;
}
.nav-count {
  font-size: 10px;

  color: #6f6c63;
  background: #ffffff0f;
  border-radius: 20px;
  padding: 1px 7px;
}
.nav-caret {
  font-size: 9px;
  color: #6f6c63;
  width: 10px;
  text-align: center;
}
.nav-sub {
  display: grid;
  gap: 4px;
  margin-left: 9px;
  padding-left: 9px;
  border-left: 1px solid #ffffff14;
}
.nav-sub.closed {
  display: none;
}
.nav-sub button {
  padding: 9px 11px;
  font-size: 13px;
}

/* ---- 行内二级菜单（结算表「运营操作」）· 2026-09-22 夜 ---- */
.cell-actions {
  display: flex;
  gap: 6px;
  align-items: center;
  flex-wrap: nowrap;
}
.cell-actions .tiny.warn {
  border-color: var(--orange);
  color: #9d702e;
  background: #fafaf8;
  font-weight: 600;
}
.cell-actions .menu-dot {
  padding: 0 8px;
  min-width: 26px;
  letter-spacing: 1px;
  line-height: 1;
}
.row-menu {
  position: fixed;
  z-index: 9000;
  min-width: 262px;
  max-width: 340px;
  background: #ffffff;
  border: 1px solid var(--line);
  border-radius: 12px;
  box-shadow: 0 18px 44px rgba(56, 54, 49, 0.18);
  padding: 6px;
  animation: rowMenuIn var(--duration-fast, 180ms) ease;
}
@keyframes rowMenuIn {
  from {
    opacity: 0;
    transform: translateY(-4px) scale(0.98);
  }
  to {
    opacity: 1;
    transform: none;
  }
}
.row-menu-sep {
  padding: 7px 10px 6px;
  font-size: 12px;
  color: var(--muted);
  line-height: 1.5;
}
.row-menu-hr {
  height: 1px;
  background: var(--line);
  margin: 5px 4px;
}
.row-menu button {
  display: block;
  width: 100%;
  text-align: left;
  border: 0;
  background: transparent;
  border-radius: 8px;
  padding: 8px 10px;
  cursor: pointer;
  color: var(--ink);
  font: inherit;
}
.row-menu button b {
  display: block;
  font-size: 13px;
  font-weight: 600;
}
.row-menu button small {
  display: block;
  margin-top: 2px;
  font-size: 11.5px;
  color: var(--muted);
  line-height: 1.5;
}
.row-menu button:hover:not(:disabled) {
  background: var(--soft);
}
.row-menu button.danger b {
  color: var(--red);
}
.row-menu button:disabled {
  cursor: not-allowed;
  opacity: 0.45;
}

/* ---- 结算流程条 ---- */
.flow-strip {
  background: #ffffff;
  border: 1px solid var(--line);
  border-radius: 14px;
  padding: 14px 16px 12px;
  margin-bottom: 14px;
}
.flow-strip-head {
  display: flex;
  align-items: baseline;
  gap: 10px;
  flex-wrap: wrap;
  margin-bottom: 10px;
}
.flow-strip-head b {
  font-size: 14px;
}
.flow-strip-head .muted {
  font-size: 12px;
}
.flow-steps {
  display: flex;
  align-items: stretch;
  gap: 4px;
  overflow-x: auto;
  padding-bottom: 2px;
}
.flow-step {
  display: flex;
  align-items: center;
  gap: 8px;
  flex: 1 1 0;
  min-width: 132px;
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 8px 10px;
  background: var(--soft);
}
.flow-step i {
  font-style: normal;
  width: 20px;
  height: 20px;
  flex: none;
  border-radius: 50%;
  background: #ffffff;
  border: 1px solid var(--line);
  color: var(--muted);
  font-size: 11px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.flow-txt {
  min-width: 0;
}
.flow-txt b {
  display: block;
  font-size: 13px;
  white-space: nowrap;
}
.flow-txt small {
  display: block;
  font-size: 11px;
  color: var(--muted);
  line-height: 1.4;
}
.flow-step.hot {
  background: #fafaf8;
  border-color: #edd6b8;
}
.flow-step.hot i {
  background: var(--orange);
  border-color: var(--orange);
  color: #ffffff;
}
.flow-step.skipped {
  opacity: 0.55;
}
.flow-step.skipped .flow-txt b {
  text-decoration: line-through;
}
.flow-n {
  margin-left: auto;
  background: var(--orange);
  color: #ffffff;
  border-radius: 10px;
  padding: 1px 8px;
  font-size: 12px;
  font-weight: 700;
}
.flow-arrow {
  align-self: center;
  color: var(--muted);
  font-style: normal;
  font-size: 12px;
  flex: none;
}
@media (max-width: 900px) {
  .flow-arrow {
    display: none;
  }
  .flow-steps {
    flex-wrap: wrap;
  }
}

/* ---- 站内确认弹窗（替代浏览器原生 confirm / prompt）· 2026-09-22 夜五 ---- */
.ask-modal {
  z-index: 9500;
}
.ask-modal .ask-dialog {
  width: min(460px, 100%);
  border-radius: 18px;
  overflow: hidden;
  box-shadow: 0 30px 80px #10143266;
  --tone: var(--blue);
  --tone-soft: #f5f3ef;
}
.ask-modal.tone-green .ask-dialog {
  --tone: var(--green);
  --tone-soft: #edf6ef;
}
.ask-modal.tone-orange .ask-dialog {
  --tone: #b7802a;
  --tone-soft: #f8f7f5;
}
.ask-modal.tone-red .ask-dialog {
  --tone: var(--red);
  --tone-soft: #faeeed;
}
.ask-head {
  display: flex;
  gap: 12px;
  align-items: flex-start;
  padding: 18px 20px 14px;
  border-top: 3px solid var(--tone);
}
.ask-ico {
  flex: none;
  width: 32px;
  height: 32px;
  border-radius: 10px;
  background: var(--tone-soft);
  color: var(--tone);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 16px;
  font-weight: 700;
}
.ask-ttl {
  min-width: 0;
  padding-top: 1px;
}
.ask-ttl h2 {
  margin: 0;
  font-size: 16.5px;
  line-height: 1.35;
  letter-spacing: -0.01em;
}
.ask-ttl p {
  margin: 4px 0 0;
  font-size: 12px;
  color: var(--muted);
  line-height: 1.45;
}
.ask-body {
  padding: 0 20px 4px;
}
.ask-hero {
  background: var(--tone-soft);
  border-radius: 12px;
  padding: 12px 14px;
  margin-bottom: 12px;
}
.ask-hero small {
  display: block;
  font-size: 11.5px;
  color: var(--muted);
  margin-bottom: 2px;
}
.ask-hero b {
  display: block;
  font-size: 26px;
  line-height: 1.15;
  letter-spacing: -0.02em;
  color: var(--tone);
  font-variant-numeric: tabular-nums;
}
.ask-hero span {
  display: block;
  margin-top: 3px;
  font-size: 11.5px;
  color: var(--muted);
}
.ask-rows {
  margin: 0;
  border-top: 1px solid var(--line);
}
.ask-rows > div {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 14px;
  padding: 7px 0;
  border-bottom: 1px solid var(--line);
}
.ask-rows dt {
  font-size: 12.5px;
  color: var(--muted);
  flex: none;
}
.ask-rows dd {
  margin: 0;
  font-size: 13px;
  font-weight: 600;
  text-align: right;
  font-variant-numeric: tabular-nums;
  word-break: break-all;
}
.ask-rows > div.good dd {
  color: var(--green);
}
.ask-rows > div.warn dd {
  color: #a97a36;
}
.ask-rows > div.bad dt,
.ask-rows > div.bad dd {
  color: var(--red);
}
.ask-rows > div.bad dd {
  font-weight: 600;
  text-align: right;
  line-height: 1.5;
}
/* 分隔行：dd 为空的那一条当小标题用 */
.ask-rows > div:has(dd:empty) {
  border-bottom: 0;
  padding: 12px 0 2px;
}
.ask-rows > div:has(dd:empty) dt {
  font-size: 11px;
  letter-spacing: 0.04em;
}
.ask-tail {
  margin: 12px 0 0;
  font-size: 12px;
  line-height: 1.6;
  color: #6c6860;
  background: var(--soft);
  border-radius: 10px;
  padding: 9px 11px;
}
.ask-field {
  display: block;
  margin-top: 13px;
}
.ask-field > span {
  display: block;
  font-size: 11.5px;
  color: var(--muted);
  margin-bottom: 5px;
}
.ask-field textarea {
  width: 100%;
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 9px 11px;
  font: inherit;
  font-size: 13px;
  line-height: 1.6;
  resize: vertical;
  color: var(--ink);
  background: #ffffff;
}
.ask-field textarea:focus {
  outline: 0;
  border-color: var(--tone);
  box-shadow: 0 0 0 3px var(--tone-soft);
}
.ask-field > small {
  display: block;
  margin-top: 5px;
  font-size: 11px;
  color: var(--muted);
  line-height: 1.5;
}
.ask-field.bad textarea {
  border-color: var(--red);
  box-shadow: 0 0 0 3px #faeeed;
  animation: askShake 220ms ease;
}
@keyframes askShake {
  25% {
    transform: translateX(-4px);
  }
  75% {
    transform: translateX(4px);
  }
}
.ask-foot {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 16px 20px 18px;
}
.ask-foot-hint {
  flex: 1;
  font-size: 11px;
  color: var(--muted);
}
.ask-foot button {
  border-radius: 10px;
  padding: 9px 16px;
  font-size: 13.5px;
  font-weight: 600;
  cursor: pointer;
  border: 1px solid var(--line);
  background: #ffffff;
  color: var(--ink);
}
.ask-foot button.ghost:hover {
  background: var(--soft);
}
.ask-foot button.primary {
  background: var(--tone);
  border-color: var(--tone);
  color: #ffffff;
}
.ask-foot button.primary:hover {
  filter: brightness(1.06);
}
.ask-foot button.primary:focus-visible {
  outline: 2px solid var(--tone);
  outline-offset: 2px;
}
@media (max-width: 560px) {
  .ask-modal .ask-dialog {
    width: 100%;
  }
  .ask-hero b {
    font-size: 23px;
  }
  .ask-foot-hint {
    display: none;
  }
  .ask-foot button {
    flex: 1;
  }
}


/* ===== web/src/css/20-components.css ===== */
:root {
  --ink: #1d1c1a;
  --muted: #817d73;
  --line: #eceae6;
  --soft: #f8f7f4;
  --blue: #27427c;
  --blue2: #4864a2;
  --purple: #2a4683;
  --pink: #4c68a6;
  --green: #69997f;
  --orange: #b68131;
  --red: #bb3e42;
  --shadow: 0 10px 30px rgba(47, 45, 40, 0.08);
}
body {
  background: linear-gradient(135deg, #f7f6f3 0%, #fafaf8 55%, #f6f4f0 100%);
  font-size: 14px;
}
.shell {
  grid-template-columns: 224px minmax(0, 1fr);
}
.side {
  background: linear-gradient(180deg, #1c1b19 0%, #24221f 58%, #1b1a17 100%);
  padding: 20px 14px;
}
.brand {
  font-size: 15px;
}
.top {
  height: 64px;
  padding: 0 22px;
  background: rgba(255, 255, 255, 0.92);
  backdrop-filter: blur(16px);
}
.crumb strong {
  font-size: 17px;
}
.crumb span {
  font-size: 13px;
}
.content {
  padding: 16px 20px 24px;
  max-width: none;
}
.section-title {
  margin-bottom: 12px;
}
.section-title h1 {
  font-size: 24px;
  letter-spacing: -0.5px;
}
/* 标题旁边的 ⓘ：角色说明默认收起，点开才占一行 */
/* 交付看板格子里的加减按钮：平时很淡，悬停整行时才明显，不抢数字的位置 */
.ad-cell {
  position: relative;
}
.ad-bump {
  position: absolute;
  top: 2px;
  right: 2px;
  border: 0;
  background: transparent;
  color: var(--muted);
  font-size: 11px;
  line-height: 1;
  padding: 2px 4px;
  border-radius: 5px;
  opacity: 0.35;
}
tr:hover .ad-bump {
  opacity: 1;
}
.ad-bump:hover {
  background: #ffffff;
  color: #29437c;
  box-shadow: 0 1px 4px rgba(74, 71, 65, 0.18);
}
/* 两种看法的切换（按收款月 / 按内容发布月） */
.seg {
  display: inline-flex;
  background: var(--soft);
  border-radius: 9px;
  padding: 3px;
  gap: 2px;
}
.seg button {
  border: 0;
  background: transparent;
  padding: 5px 12px;
  border-radius: 7px;
  font-size: 12px;
  color: var(--muted);
}
.seg button.active {
  background: #ffffff;
  color: var(--ink);
  font-weight: 600;
  box-shadow: 0 1px 4px rgba(74, 71, 65, 0.12);
}
.info-dot {
  border: 0;
  background: transparent;
  color: var(--muted);
  font-size: 15px;
  line-height: 1;
  padding: 2px 4px;
  margin-left: 6px;
  vertical-align: 2px;
  border-radius: 6px;
}
.info-dot:hover {
  color: var(--ink);
  background: var(--soft);
}
.info-dot.on {
  color: #29437c;
  background: #f5f3ef;
}
.role-info {
  display: none;
  gap: 10px;
  align-items: baseline;
  flex-wrap: wrap;
  margin: -4px 0 14px;
  padding: 10px 14px;
  border-radius: 11px;
  background: #f6f4f0;
  color: #625e56;
  font-size: 12px;
  line-height: 1.7;
}
.role-info.open {
  display: flex;
}
.role-info b {
  color: var(--ink);
}
.section-title p {
  font-size: 13px;
}
.compact-title {
  align-items: center;
}
.notice {
  padding: 10px 13px;
  margin-bottom: 11px;
}
.notice.slim {
  min-height: 44px;
}
.filterbar {
  padding: 9px 11px;
  margin-bottom: 11px;
  border-radius: 13px;
}
.filterbar label {
  font-size: 13px;
}
.filterbar select,
.filterbar input {
  height: 38px;
  font-size: 13px;
}
.order-stats {
  gap: 8px;
  margin-bottom: 10px;
}
.order-stats button {
  min-height: 80px;
  padding: 11px 12px;
  /* 松手：更软、带回弹，不硬停 */
  transition:
    transform var(--duration-fast) var(--ease-bounce-strong),
    box-shadow var(--duration-fast) var(--ease-smooth-out);
}
.order-stats button:hover {
  /* 抬起：干脆直接 */
  transition:
    transform var(--duration-quick) var(--ease-smooth-out),
    box-shadow var(--duration-quick) var(--ease-smooth-out);
}
.order-stats button:hover {
  transform: translateY(-2px);
}
.order-stats button span {
  font-size: 13px;
}
.order-stats button b {
  font-size: 21px;
}
.card {
  border-radius: 14px;
}
.table-card {
  box-shadow: 0 8px 26px rgba(51, 49, 44, 0.07);
}
.table-tools {
  min-height: 48px;
  padding: 12px 14px;
}
.table-tools h3 {
  font-size: 15px;
}
.table-tools .muted {
  font-size: 12px !important;
}
.table-wrap {
  max-height: calc(100vh - 385px);
  min-height: 300px;
}
.unified-scroll {
  max-height: calc(100vh - 385px);
}
th {
  font-size: 12px;
  padding: 12px 13px;
  background: #fbfbf9;
  color: #7a766c;
}
td {
  font-size: 13px;
  padding: 13px;
}
.stage-edit {
  font-size: 12px;
}
.table-pager {
  position: sticky;
  bottom: 0;
  padding: 9px 14px;
}
.kpis {
  gap: 9px;
  margin-bottom: 10px;
}
.kpi {
  min-height: 104px;
  padding: 13px;
}
.kpi .num,
.metric-card b {
  font-size: 26px;
}
.grid2,
.grid3 {
  gap: 10px;
  margin-bottom: 10px;
}
.bars {
  height: 176px;
}
.detail-drawer {
  width: min(1040px, 94vw);
}
.detail-body {
  padding: 14px;
}
.detail-section {
  padding: 15px;
  margin-bottom: 10px;
}
.detail-fields span {
  font-size: 12px;
}
.detail-fields b {
  font-size: 14px;
}
.mini-table td,
.mini-table th {
  font-size: 13px;
}
.live-exec {
  grid-template-columns: 160px 1fr;
}
.live-exec label {
  grid-column: 1/-1;
  color: var(--muted);
  font-size: 12px;
}
.live-exec textarea {
  display: block;
  margin-top: 7px;
  min-height: 76px;
}
.receipt-clock > div {
  padding: 12px;
}
.receipt-clock span {
  font-size: 12px;
}
.log-item p {
  font-size: 12px;
}
.phone-stage {
  padding: 16px;
}
.phone {
  height: min(820px, calc(100vh - 88px));
  box-shadow: 0 28px 80px rgba(39, 42, 44, 0.25);
}
.h5section-head .muted {
  font-size: 11px !important;
}
.h5-empty {
  padding: 40px 10px;
  text-align: center;
  color: var(--muted);
  background: #ffffff;
  border-radius: 15px;
}
.primary,
.ghost,
.tiny {
  transition:
    transform var(--duration-fast) var(--ease-bounce-strong),
    box-shadow var(--duration-fast) var(--ease-smooth-out);
}
.primary:hover,
.ghost:hover,
.tiny:hover {
  transition:
    transform var(--duration-quick) var(--ease-smooth-out),
    box-shadow var(--duration-quick) var(--ease-smooth-out);
}
.primary:hover,
.ghost:hover,
.tiny:hover {
  transform: translateY(-1px);
}
.primary:active,
.ghost:active,
.tiny:active {
  transform: translateY(0);
}
@media (max-width: 1100px) {
  .table-wrap,
  .unified-scroll {
    max-height: 520px;
  }
  .content {
    padding: 14px;
  }
  .order-stats {
    grid-template-columns: repeat(3, 1fr);
  }
}
@media (max-width: 760px) {
  body {
    font-size: 14px;
  }
  .content {
    padding: 12px;
  }
  .kpis {
    grid-template-columns: 1fr 1fr;
  }
  .order-stats {
    grid-template-columns: 1fr 1fr;
  }
  .section-title h1 {
    font-size: 21px;
  }
  .table-wrap {
    max-height: 520px;
  }
  .detail-fields {
    grid-template-columns: 1fr;
  }
  .receipt-clock {
    grid-template-columns: 1fr 1fr;
  }
}

/* ===== v6 新增：补齐重构后引用到的样式 ===== */

/* 侧栏「恢复初始演示数据」 */
.reset-demo {
  display: block;
  margin-top: 10px;
  padding: 5px 9px;
  font-size: 10px;
  color: rgba(255, 255, 255, 0.7);
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 255, 255, 0.16);
  border-radius: 6px;
  cursor: pointer;
  transition:
    color 0.15s var(--ease-smooth-out),
    background 0.15s var(--ease-smooth-out),
    border-color 0.15s var(--ease-smooth-out);
}
.reset-demo:hover {
  color: #ffffff;
  background: rgba(255, 255, 255, 0.16);
}

/* 超期高亮 */
td.overdue {
  color: #bb3e42;
  font-weight: 600;
}
b.overdue {
  color: #bb3e42;
}
.cell-sub.warn {
  color: #a8611b;
}
b.danger {
  color: #bb3e42;
}

/* 订单详情：当前这一行 */
.mini-table tr.current-row {
  background: #f8f7f4;
}
.mini-table tr.current-row em {
  font-style: normal;
  font-size: 10px;
  color: #2e4c8d;
  margin-left: 4px;
}
.detail-fields .wide {
  grid-column: 1 / -1;
}
.detail-section h3 small {
  font-weight: 400;
  font-size: 11px;
  color: #a7a39b;
  margin-left: 8px;
}

/* 结算单关联订单 */
.pay-line {
  display: flex;
  align-items: baseline;
  gap: 10px;
  padding: 9px 0;
  border-bottom: 1px dashed #eeece8;
  font-size: 12px;
}
.pay-line b {
  color: #36342f;
}
.pay-line span {
  color: #9a978e;
  flex: 1;
}
.pay-line strong {
  color: #2e4c8d;
  white-space: nowrap;
}

/* H5 达人切换 */
.h5-switch {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  color: #75736d;
}
.h5-switch select {
  padding: 5px 8px;
  font-size: 12px;
  border: 1px solid #e5e3de;
  border-radius: 7px;
  background: #ffffff;
}
.h5-hint {
  padding: 10px 14px;
  font-size: 11px;
  color: #95938d;
  text-align: center;
}

/* 零散文案 */
.step-hint {
  margin-top: 8px;
  font-size: 11px;
}
.dialog-sub,
.foot-hint {
  font-size: 11px;
}
.dialog-sub {
  margin-top: 4px;
}
.foot-hint {
  margin-right: auto;
}
.profile-sub {
  font-size: 11px;
  margin-top: 4px;
}
.table-tools .muted {
  font-size: 11px;
}

/* 表尾条数统计（已去掉假分页） */
.table-pager .row-count {
  font-size: 11px;
  color: #9a978e;
}

/* 空状态 */
td.empty,
.metric-body .empty,
.log-list .empty {
  padding: 26px 12px;
  text-align: center;
  color: #a7a39b;
  font-size: 12px;
}

/* ===== v7 新增：行内操作、角色提示、达人确认 ===== */

/* 表格行内操作按钮 */
.row-actions {
  white-space: nowrap;
}
.row-actions .tiny + .tiny {
  margin-left: 6px;
}
.row-actions .tiny[disabled] {
  opacity: 0.45;
  cursor: not-allowed;
}

/* 单元格内的次要信息（把原本独立成列的内容收进主列） */
.cell-sub {
  display: block;
  margin-top: 3px;
  font-size: 10px;
  color: #a7a39b;
  font-weight: 400;
}

/* 当前角色做不了某个动作时的提示条 */
.role-need {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: 10px;
  padding: 9px 12px;
  font-size: 11px;
  color: #826d4a;
  background: #fbfbf9;
  border: 1px solid #efe0c9;
  border-radius: 8px;
}
.role-need .tiny {
  margin-left: auto;
  white-space: nowrap;
}

/* 页头提示文案（替代原来点了没反应的按钮） */
.head-hint {
  font-size: 11px;
  color: #a7a39b;
}

/* 达人端：确认对账单 */
.h5-confirm {
  padding: 12px 14px 14px;
  border-top: 1px solid #f2f0eb;
}
.h5-confirm p {
  margin: 0 0 10px;
  font-size: 11px;
  color: #95938d;
  line-height: 1.6;
}
.h5-confirm-btns {
  display: flex;
  gap: 8px;
}
.h5-confirm-btns button {
  flex: 1;
  padding: 9px 0;
  font-size: 12px;
  border-radius: 8px;
  cursor: pointer;
}
.h5-confirm-btns .ghost {
  color: #75736d;
  background: #f8f6f1;
  border: 1px solid #e9e7e2;
}
.h5-confirm-btns .primary {
  color: #ffffff;
  background: linear-gradient(135deg, #cb6946, #bd5c38);
  border: none;
}

/* 表格宽度交给内容决定（table-layout:auto）。
   这里原来有一套按 9 列写死的百分比列宽，但页面上的表是 4/6/7/8/12 列，
   套上去列宽和内容对不上，再加上 td 的 overflow:hidden，文字会被悄悄裁掉。 */
.unified-table {
  table-layout: auto;
  width: 100%;
}
.unified-table > tbody > tr > td {
  /* 横向滚动时订单 ID 列钉住，否则滚到右边就不知道在看哪一行。
   订单中心 / 回款管理 / 结算 / 付款几张表都吃这条，mini-table 除外。 */
  .table-wrap table:not(.mini-table) th:nth-child(1),
  .table-wrap table:not(.mini-table) td:nth-child(1),
  .unified-scroll table:not(.mini-table) th:nth-child(1),
  .unified-scroll table:not(.mini-table) td:nth-child(1) {
    position: sticky;
    left: 0;
    z-index: 1;
    background: #ffffff;
    box-shadow: 1px 0 0 var(--line);
  }
  .table-wrap table:not(.mini-table) thead th:nth-child(1),
  .unified-scroll table:not(.mini-table) thead th:nth-child(1) {
    z-index: 3;
    background: #fbfbf9;
  }
  /* 钉住的列不参与行背景继承，悬停与撤单态要单独补上，否则第一列会脱色 */
  .table-wrap tbody tr:hover td:nth-child(1),
  .unified-scroll tbody tr:hover td:nth-child(1) {
    background: #f6f4f0;
  }
  .table-wrap tr.cancelled td:nth-child(1),
  .unified-scroll tr.cancelled td:nth-child(1) {
    background: #f9f8f5;
  }
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 260px;
}
.unified-table .id-link {
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.unified-table .stage-edit {
  width: 100%;
  min-width: 0;
}
.unified-table .row-actions .tiny {
  padding: 4px 7px;
  font-size: 10px;
}
.unified-table .row-actions .tiny + .tiny {
  margin-left: 4px;
}

/* 主表允许单元格内换行（原 table 全局 white-space:nowrap 会撑破固定列宽） */
.unified-table td,
.unified-table th {
  white-space: normal;
}
.unified-table .money,
.unified-table .row-actions {
  white-space: nowrap;
}

/* ===== 登录页与角色端（2026-09-20 新增） ===== */
.login-wrap {
  min-height: 100vh;
  display: grid;
  place-items: center;
  padding: 32px 16px;
  background:
    radial-gradient(
      1200px 600px at 50% -10%,
      rgba(28, 62, 159, 0.13),
      transparent 60%
    ),
    #f2f5fa;
}
.login-card {
  width: min(520px, 100%);
  background: #ffffff;
  border: 1px solid var(--line);
  border-radius: 18px;
  box-shadow: var(--shadow);
  padding: 28px 26px 22px;
}
.login-brand {
  display: flex;
  align-items: center;
  gap: 12px;
}
.login-brand b {
  display: block;
  font-size: 18px;
}
.login-brand small {
  color: var(--muted);
  font-size: 12px;
}
.login-list {
  display: grid;
  gap: 8px;
}
.login-item {
  display: flex;
  align-items: center;
  gap: 12px;
  width: 100%;
  text-align: left;
  padding: 11px 13px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: #ffffff;
  transition: 0.16s;
}
.login-item:hover {
  border-color: var(--blue);
  background: #f6f9fe;
  transform: translateY(-1px);
}
.login-avatar {
  width: 34px;
  height: 34px;
  flex: none;
  border-radius: 10px;
  display: grid;
  place-items: center;
  color: #ffffff;
  font-weight: 700;
  background: linear-gradient(135deg, var(--blue), var(--purple));
}
.login-main {
  flex: 1;
  min-width: 0;
}
.login-main b {
  display: block;
  font-size: 14px;
}
.login-main small {
  color: var(--muted);
  font-size: 12px;
}
.login-roles {
  display: flex;
  gap: 4px;
  flex: none;
}
.login-roles em {
  font-style: normal;
  font-size: 11px;
  padding: 3px 8px;
  border-radius: 999px;
  background: var(--soft);
  color: var(--blue);
}
.login-foot {
  margin: 18px 0 0;
  padding-top: 14px;
  border-top: 1px dashed var(--line);
  color: var(--muted);
  font-size: 12px;
  line-height: 1.6;
}
.who {
  display: flex;
  align-items: center;
  gap: 8px;
  padding-left: 10px;
  border-left: 1px solid var(--line);
}
.who b {
  font-size: 13px;
}
.role-chip.solo {
  background: var(--soft);
  color: var(--blue);
}

/* 建单弹窗：字段提示与审核项勾选 */
.field-hint {
  display: block;
  margin-top: 4px;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.5;
}
.ck-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 14px;
  padding: 7px 0 2px;
}
.ck {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
  cursor: pointer;
}
.ck input {
  width: 15px;
  height: 15px;
  accent-color: var(--blue);
  cursor: pointer;
}
.ck-row .field-hint {
  margin: 0;
  flex-basis: 100%;
}

/* 详情抽屉里的行内数字输入 */
.inline-num {
  width: 110px;
  padding: 5px 8px;
  border: 1px solid var(--line);
  border-radius: 8px;
  font-weight: 600;
  color: var(--ink);
}
.inline-num:focus {
  outline: none;
  border-color: var(--blue);
}
.inline-num:disabled {
  background: var(--soft);
  color: var(--muted);
}

/* ===== 寄样与快递单号 ===== */
.mono {
  font-family: "SF Mono", Menlo, Consolas, monospace;
  font-size: 12px;
  letter-spacing: -0.2px;
}
code.mono {
  background: var(--soft);
  padding: 2px 7px;
  border-radius: 6px;
  color: var(--blue);
}
.ship-info b {
  display: block;
  font-size: 13px;
}
.ship-info small {
  display: block;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.5;
  max-width: 230px;
}
.ship-cell {
  min-width: 190px;
}
.express-item {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 4px 8px;
  margin-bottom: 4px;
  background: #f6f5f2;
  border: 1px solid #d6e5db;
  border-radius: 8px;
}
.express-item b {
  flex: 1;
  color: var(--green);
}
.express-item small {
  color: var(--muted);
  font-size: 11px;
}
.express-item .x {
  border: 0;
  background: transparent;
  color: var(--muted);
  font-size: 15px;
  line-height: 1;
  padding: 0 2px;
}
.express-item .x:hover {
  color: var(--red);
}
.express-add {
  display: flex;
  gap: 5px;
}
.express-add input {
  flex: 1;
  min-width: 140px;
  padding: 5px 8px;
  border: 1px solid var(--line);
  border-radius: 8px;
  font-size: 12px;
}
.express-add input:focus {
  outline: none;
  border-color: var(--blue);
}

/* 达人端：样品物流 */
.h5-ship {
  margin: 10px 0 0;
  padding: 9px 11px;
  border-radius: 10px;
  background: #f6f3ee;
}
.h5-ship.pending {
  background: var(--soft);
}
.h5-ship > b {
  display: block;
  font-size: 12px;
  margin-bottom: 4px;
}
.h5-ship .muted {
  font-size: 12px;
}
.h5-ship-row {
  display: flex;
  flex-direction: column;
  padding: 3px 0;
}
.h5-ship-row span {
  color: var(--green);
  font-weight: 600;
}
.h5-ship-row small {
  color: var(--muted);
  font-size: 11px;
}

/* ===== 我的待办 ===== */
.table-tools h3 .count {
  display: inline-block;
  margin-left: 7px;
  padding: 1px 8px;
  border-radius: 999px;
  background: var(--blue);
  color: #ffffff;
  font-size: 12px;
}
.table-tools h3 .count.danger {
  background: var(--red);
}
.warn {
  color: var(--orange);
  font-weight: 600;
}
.ok {
  color: var(--green);
}
.mini-bar {
  display: inline-block;
  width: 62px;
  height: 5px;
  border-radius: 3px;
  background: var(--line);
  margin-right: 7px;
  vertical-align: middle;
  overflow: hidden;
}
.mini-bar i {
  display: block;
  height: 100%;
  background: var(--green);
}
.opinion-cell {
  max-width: 300px;
  font-size: 12px;
  line-height: 1.6;
}

/* ===== 项目聚合行 ===== */
.project-row {
  cursor: pointer;
}
.project-row:hover {
  background: #fbfbf9;
}
.project-row.open {
  background: #f8f7f4;
}
.project-detail > td {
  background: var(--soft);
  padding: 10px 14px !important;
}

/* ===== 品牌工作台：品牌切换器 =====
   只有超管看得到。和下面的页签长得不一样是故意的：
   这一排换的是"看哪个品牌"，页签换的是"看这个品牌的哪件事"，
   两排如果同一个样式，会被当成七个并列的页签。 */
.brand-switch {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin: 0 0 16px;
  padding: 10px 12px;
  border: 1px dashed var(--line);
  border-radius: 12px;
  background: var(--soft);
}
.brand-switch .bs-label {
  font-size: 12px;
  color: var(--muted);
  margin-right: 2px;
}
.brand-switch button {
  border: 1px solid transparent;
  background: #ffffff;
  border-radius: 999px;
  padding: 6px 14px;
  font-size: 13px;
  color: var(--muted);
  display: flex;
  align-items: center;
  gap: 6px;
}
.brand-switch button em {
  font-style: normal;
  font-size: 11px;
  min-width: 18px;
  text-align: center;
  padding: 1px 6px;
  border-radius: 999px;
  background: #ebe2d3;
  color: #8f662b;
}
.brand-switch button.active {
  border-color: var(--blue);
  background: #faf9f6;
  color: var(--ink);
  font-weight: 600;
}
.brand-switch button.active em {
  background: var(--blue);
  color: #ffffff;
}

/* ===== 品牌工作台页签 ===== */
.brand-tabs {
  display: flex;
  gap: 8px;
  margin: 0 0 14px;
}
.brand-tabs button {
  border: 1px solid var(--line);
  background: #ffffff;
  border-radius: 12px;
  padding: 9px 16px;
  font-size: 14px;
  color: var(--muted);
  display: flex;
  align-items: center;
  gap: 8px;
}
.brand-tabs button em {
  font-style: normal;
  font-size: 11px;
  padding: 2px 8px;
  border-radius: 999px;
  background: var(--soft);
}
.brand-tabs button.active {
  border-color: var(--blue);
  color: var(--ink);
  font-weight: 600;
  background: #faf9f6;
}
.brand-tabs button.active em {
  background: var(--blue);
  color: #ffffff;
}

/* ===== 审核 ===== */
.review-list {
  display: grid;
  gap: 10px;
  padding: 4px 0;
}
.review-row {
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 12px 14px;
}
.review-row.pending {
  border-color: #eacfaf;
  background: #f9fbff;
}
.review-meta {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  margin-bottom: 8px;
}
.review-meta small {
  color: var(--muted);
  font-size: 12px;
}
.review-kind {
  font-size: 11px;
  padding: 2px 8px;
  border-radius: 999px;
  background: var(--soft);
  color: var(--blue);
}
.review-content p {
  margin: 0 0 4px;
  font-size: 13px;
  line-height: 1.7;
  white-space: pre-wrap;
}
.review-opinion {
  margin-top: 8px;
  padding: 8px 11px;
  border-radius: 9px;
  background: #fcf3f2;
  border: 1px solid #f2d6d4;
  font-size: 12px;
  line-height: 1.6;
}
.review-opinion b {
  display: block;
  color: var(--red);
  margin-bottom: 2px;
}
.review-opinion small {
  display: block;
  color: var(--muted);
  margin-top: 3px;
}
.review-act {
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px dashed var(--line);
}
.review-act textarea {
  width: 100%;
  border: 1px solid var(--line);
  border-radius: 9px;
  padding: 8px 10px;
  font-size: 13px;
  resize: vertical;
}
.review-act textarea:focus {
  outline: none;
  border-color: var(--blue);
}
.review-btns {
  display: flex;
  gap: 8px;
  justify-content: flex-end;
  margin-top: 8px;
}
.rv-group {
  border: 1px solid var(--line);
  border-radius: 11px;
  padding: 10px 12px;
  margin-bottom: 9px;
}
.rv-head {
  display: flex;
  align-items: center;
  gap: 9px;
  margin-bottom: 7px;
}
.rv-item {
  display: flex;
  gap: 10px;
  align-items: flex-start;
  padding: 7px 0;
  border-top: 1px dashed var(--line);
}
.rv-ver {
  flex: none;
  font-size: 11px;
  color: var(--muted);
  padding-top: 2px;
}
.rv-body {
  flex: 1;
  min-width: 0;
}
.rv-body p {
  margin: 0;
  font-size: 13px;
  line-height: 1.6;
  white-space: pre-wrap;
}
.cell-select {
  padding: 5px 8px;
  border: 1px solid var(--line);
  border-radius: 8px;
  font-size: 12px;
  background: #ffffff;
}
.link-cell a {
  color: var(--blue);
  font-size: 12px;
  word-break: break-all;
}

/* ===== 达人端：审核与链接 ===== */
.h5-tag {
  margin: 8px 0 0;
  font-size: 11px;
  color: var(--muted);
  background: var(--soft);
  border-radius: 8px;
  padding: 5px 9px;
}
.h5-review {
  margin-top: 10px;
  display: grid;
  gap: 8px;
}
.h5-review-item {
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 9px 11px;
}
.h5-review-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 6px;
  font-size: 12px;
}
.h5-review-content {
  margin: 0;
  font-size: 12px;
  line-height: 1.6;
  color: var(--ink);
  white-space: pre-wrap;
}
.h5-opinion {
  padding: 8px 10px;
  border-radius: 9px;
  background: #fdf2f1;
  font-size: 12px;
  line-height: 1.6;
  margin-bottom: 8px;
}
.h5-opinion b {
  display: block;
  color: var(--red);
}
.h5-opinion small {
  display: block;
  color: var(--muted);
  margin-top: 3px;
}
.h5-submit {
  display: grid;
  gap: 6px;
}
.h5-submit textarea,
.h5-submit input,
.h5-submit select {
  width: 100%;
  border: 1px solid var(--line);
  border-radius: 9px;
  padding: 7px 9px;
  font-size: 12px;
  resize: vertical;
}
.h5-submit textarea:focus,
.h5-submit input:focus {
  outline: none;
  border-color: var(--blue);
}
.link-submit {
  grid-template-columns: 1fr auto;
  gap: 6px;
}
.link-submit input {
  grid-column: 1 / -1;
}
.h5-links {
  margin-top: 10px;
  padding: 10px 11px;
  border-radius: 10px;
  background: #f9f7f2;
}
.h5-links-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: 12px;
  margin-bottom: 7px;
}
.h5-link-item {
  display: flex;
  align-items: center;
  gap: 7px;
  padding: 6px 8px;
  margin-bottom: 5px;
  background: #ffffff;
  border-radius: 8px;
}
.h5-link-item a {
  flex: 1;
  min-width: 0;
  color: var(--blue);
  font-size: 11px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.h5-link-item small {
  flex: none;
  color: var(--muted);
  font-size: 10px;
}
.h5-link-item .x {
  border: 0;
  background: transparent;
  color: var(--muted);
  font-size: 14px;
  padding: 0 2px;
}
.h5-link-empty,
.h5-link-lock {
  font-size: 12px;
  color: var(--muted);
  padding: 5px 0 8px;
}
.h5-link-lock {
  color: var(--orange);
}

/* ===== 批量导入 ===== */
.import-dialog {
  width: min(860px, 94vw);
}
.import-hint {
  font-size: 12px;
  line-height: 1.7;
  color: var(--muted);
  background: var(--soft);
  padding: 10px 12px;
  border-radius: 10px;
  margin-bottom: 11px;
}
#importText {
  width: 100%;
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 10px 12px;
  font-family: "SF Mono", Menlo, monospace;
  font-size: 12px;
  line-height: 1.6;
  resize: vertical;
}
#importText:focus {
  outline: none;
  border-color: var(--blue);
}
.import-preview {
  margin-top: 12px;
  max-height: 320px;
  overflow: auto;
}
.import-sum {
  font-size: 13px;
  margin-bottom: 8px;
}
.import-bad {
  margin-top: 8px;
  font-size: 12px;
  color: var(--red);
}
.addr-cell {
  max-width: 220px;
  font-size: 11px;
  line-height: 1.5;
}

/* 链接列不要被挤成竖排 */
.link-cell {
  min-width: 190px;
  max-width: 260px;
}
.link-cell a {
  display: inline-block;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  vertical-align: bottom;
}

/* 订单设置与达人编辑 */
.wide-num {
  width: 145px;
}
.talent-dialog {
  width: min(760px, 94vw);
}
.owner-line {
  font-size: 12px;
  line-height: 1.6;
}
.detail-fields .ck-row {
  padding: 0;
}

/* 达人端：星图自收 */
.h5-xingtu {
  margin-top: 12px;
  padding: 11px 13px;
  border-radius: 12px;
  background: #fdf8f0;
  border: 1px solid #efe0c8;
}
.h5-xingtu-head b {
  font-size: 13px;
}
.h5-xingtu-head small {
  display: block;
  color: var(--muted);
  font-size: 11px;
  margin-top: 2px;
}
.h5-xingtu-row {
  display: flex;
  justify-content: space-between;
  padding: 6px 0 0;
  font-size: 13px;
}
.h5-xingtu-row.owe b {
  color: var(--orange);
}
.h5-xingtu-tip {
  margin: 6px 0 0;
  font-size: 11px;
  color: var(--muted);
  line-height: 1.5;
}

/* ===== 基础设置 ===== */
.settings-grid {
  display: grid;
  grid-template-columns: 1fr 1.2fr;
  gap: 16px;
  margin-bottom: 16px;
}
@media (max-width: 1100px) {
  .settings-grid {
    grid-template-columns: 1fr;
  }
}
/* ===== 基础设置：客户 / 品牌与产品 =====
   一棵树：品牌 → 品类 → 产品。排版目标是"一眼数清有几个品牌、每个品牌有什么"，
   所以品牌用卡片平铺成两列（竖着排五个以上就只能靠滚），
   每张卡左上角一个固定颜色的首字块用来定位，
   加产品的表单默认收起——五个品牌五行常驻输入框，比产品本身还占地方。 */
.brand-lib-card .table-tools {
  gap: 12px;
  flex-wrap: wrap;
}
.brand-lib-card .table-tools .search {
  flex: 1 1 200px;
  max-width: 280px;
  margin-left: auto;
}
.brand-lib-card .table-tools .muted {
  flex: 0 0 auto;
}
.brand-lib {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(330px, 1fr));
  gap: 12px;
  padding: 14px 16px;
  align-items: start;
}
.brand-lib-item {
  border: 1px solid var(--line);
  border-radius: 14px;
  background: #ffffff;
  overflow: hidden;
  transition: box-shadow var(--duration-fast, 250ms)
    var(--ease-smooth-out, ease);
}
.brand-lib-item:hover {
  box-shadow: 0 6px 20px rgba(74, 71, 65, 0.07);
}
/* ── 卡头：首字块 + 品牌名 + 一行小字 ── */
.brand-lib-item > header {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 14px;
  border-bottom: 1px solid var(--line);
}
.bl-mark {
  flex: 0 0 auto;
  width: 34px;
  height: 34px;
  border-radius: 10px;
  display: grid;
  place-items: center;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.02em;
  color: #ffffff;
  background: var(--mark, var(--blue));
}
.bl-name {
  flex: 1 1 auto;
  min-width: 0;
}
.bl-name b {
  display: block;
  font-size: 14px;
  line-height: 1.35;
  word-break: break-word;
}
.bl-name small {
  display: block;
  margin-top: 1px;
  font-size: 11px;
  color: var(--muted);
}
/* 删除按钮是个安静的 ×，只在能删的时候出现；
   不能删的行留一个等宽占位，免得产品名的右边界一行一个样 */
.bl-x {
  flex: 0 0 auto;
  width: 22px;
  height: 22px;
  border: 0;
  border-radius: 7px;
  background: transparent;
  color: var(--muted);
  font-size: 15px;
  line-height: 1;
  opacity: 0.45;
  transition: all var(--duration-quick, 150ms) var(--ease-out, ease);
}
.bl-x:hover {
  background: #faeeed;
  color: var(--red);
  opacity: 1;
}
.bl-x-ph {
  flex: 0 0 auto;
  width: 22px;
}
/* ── 卡身：按品类分段 ── */
.bl-body {
  padding: 4px 0;
}
.bl-cat + .bl-cat {
  border-top: 1px solid #f9f8f5;
}
.bl-cat {
  padding: 8px 14px 10px;
}
.bl-cat-name {
  display: block;
  margin-bottom: 4px;
  font-size: 10px;
  letter-spacing: 0.08em;
  color: var(--muted);
  text-transform: uppercase;
}
.bl-prod {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 5px 0;
}
.bl-prod-name {
  flex: 1 1 auto;
  min-width: 0;
}
.bl-prod-name b {
  font-size: 13px;
  font-weight: 600;
}
.bl-prod-name small {
  display: block;
  font-size: 11px;
  color: var(--muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.bl-use {
  flex: 0 0 auto;
  font-size: 11px;
  color: var(--muted);
  white-space: nowrap;
}
.bl-use.on {
  color: var(--ink);
  font-weight: 600;
}
.bl-assign {
  flex: 0 0 auto;
  padding: 4px 7px;
  border: 1px solid var(--line);
  border-radius: 7px;
  font-size: 11px;
  background: #ffffff;
}
.bl-empty {
  margin: 0;
  padding: 14px;
  font-size: 12px;
  color: var(--muted);
}
/* ── 卡脚：加产品按钮 + 品牌方账号 ── */
.bl-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 9px 14px;
  border-top: 1px solid var(--line);
  background: var(--soft);
}
.bl-add-toggle {
  border: 1px dashed #d3d2ce;
  border-radius: 8px;
  background: #ffffff;
  color: var(--blue);
  padding: 5px 11px;
  font-size: 12px;
}
.bl-add-toggle:hover {
  border-color: var(--blue);
  background: #faf9f6;
}
.bl-account {
  font-size: 11px;
  color: var(--muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
/* 加产品表单默认收起，点了才展开 */
.bl-add {
  display: none;
  grid-template-columns: 1fr 1fr;
  gap: 7px;
  padding: 11px 14px;
  border-top: 1px dashed var(--line);
  background: var(--soft);
}
.bl-add.open {
  display: grid;
}
.bl-add input,
.bl-add select {
  min-width: 0;
  padding: 7px 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  font-size: 12px;
  background: #ffffff;
}
.bl-add button {
  grid-column: 1 / -1;
}
/* 认不出属于谁的老产品单独一张卡，橙色，和正常品牌区分开 */
.brand-lib-item.orphan {
  border-color: #eacfaf;
  background: #fefdfb;
}
.brand-lib-item.orphan > header {
  border-bottom-color: #eacfaf;
}
.bl-none {
  display: none;
  margin: 0;
  padding: 0 16px 16px;
  font-size: 12px;
  color: var(--muted);
}
@media (max-width: 760px) {
  .brand-lib {
    grid-template-columns: 1fr;
  }
  .brand-lib-card .table-tools .search {
    max-width: none;
  }
}

/* ===== 登录账号：岗位开关 ===== */
.acc-roles {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
}
.role-toggle {
  border: 1px solid var(--line);
  border-radius: 999px;
  background: #ffffff;
  color: var(--muted);
  padding: 3px 11px;
  font-size: 12px;
  transition: all var(--duration-quick, 150ms) var(--ease-out, ease);
}
.role-toggle:hover {
  border-color: #d3d2ce;
  color: var(--ink);
}
.role-toggle.on {
  border-color: var(--blue);
  background: #f6f4f0;
  color: var(--blue);
  font-weight: 600;
}
/* 超管自己加账号的那块表单（2026-09-22）。跟在账号表下面，
   和「品牌库」底部的「＋ 新增客户」是同一套视觉，不另造一种。 */
.acc-new {
  border-top: 1px solid var(--line);
  background: var(--soft, #f9fbff);
  padding: 14px 16px;
}
.acc-new > b {
  display: block;
  font-size: 13px;
  margin-bottom: 10px;
}
.acc-new-row {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}
.acc-new-row input {
  flex: 1 1 180px;
  min-width: 0;
  padding: 7px 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  font-size: 13px;
  background: #ffffff;
}
/* 账号类型：内部 / 品牌方 / 达人（2026-09-23） */
.acc-new-kind {
  display: flex;
  gap: 6px;
  margin-bottom: 10px;
}
.acc-new-row select {
  flex: 1 1 240px;
  min-width: 0;
  padding: 7px 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  font-size: 13px;
  background: #ffffff;
}
.acc-new-all {
  margin: 0;
  font-size: 13px;
  color: var(--muted);
}
.acc-new-scope {
  margin-top: 10px;
  font-size: 12px;
  color: var(--ink);
}
.acc-new-scope > span {
  color: var(--muted);
  margin-right: 8px;
}
.acc-new-roles {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
  margin-top: 10px;
}
.acc-new-roles > span {
  font-size: 12px;
  color: var(--muted);
  margin-right: 2px;
}
.acc-new-hint {
  font-size: 12px;
  color: var(--warn, #b78028);
  font-style: normal;
}
.acc-new > small {
  display: block;
  margin-top: 10px;
  font-size: 12px;
  color: var(--muted);
  line-height: 1.7;
}
/* 停用的账号整行压暗，但仍然列出来——不然停用之后就找不到它了 */
tr.acc-off > td {
  opacity: 0.55;
}
tr.acc-off > td:first-child {
  opacity: 1;
}
tr.acc-off b {
  text-decoration: line-through;
  text-decoration-color: var(--muted);
}
.link-btn {
  border: 0;
  background: none;
  padding: 0;
  color: var(--blue);
  font-size: inherit;
  text-decoration: underline;
}

.settings-add {
  display: flex;
  gap: 8px;
  padding: 12px 16px;
  border-top: 1px solid var(--line);
  background: var(--soft, #f9fbff);
  flex-wrap: wrap;
}
.settings-add input,
.settings-add select {
  flex: 1 1 140px;
  min-width: 0;
  padding: 7px 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  font-size: 12px;
  background: #ffffff;
}
.settings-add button {
  flex: 0 0 auto;
}
.settings-foot {
  padding: 10px 16px 14px;
  font-size: 11px;
  line-height: 1.6;
}
.views-cell {
  font-size: 11px;
  color: var(--muted);
  line-height: 1.6;
  max-width: 320px;
  /* 表格默认 nowrap，超管能进十一个页面，一行排不下会盖住右边的「数据范围」 */
  white-space: normal;
  word-break: break-word;
}
button.tiny.danger {
  color: #b84446;
  border-color: rgba(184, 68, 70, 0.35);
}
button.tiny.danger:hover {
  background: rgba(184, 68, 70, 0.08);
}

/* ===== 达人端：自己改收样信息 ===== */
.menurow.addr-row {
  align-items: flex-start;
}
.menurow.addr-row button {
  margin-left: 10px;
  flex: 0 0 auto;
}
.addr-edit {
  padding: 12px 14px;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  background: #fbfbf9;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.addr-edit-head {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  font-size: 13px;
}
.addr-edit input,
.addr-edit textarea {
  width: 100%;
  box-sizing: border-box;
  padding: 8px 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  font-size: 13px;
  font-family: inherit;
  background: #ffffff;
}
.addr-edit-foot {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
}

/* ===== 消息中心 ===== */
.msg-list {
  display: flex;
  flex-direction: column;
}
/* 回款列里星图单的「返款」标签（2026-10-08） */
.cell-tag {
  margin-right: 4px;
  font-size: 11px;
  color: var(--muted);
}
/* 待办页消息默认只露最近 5 条（2026-10-08） */
.msg-card:not(.all) .msg-row.msg-more {
  display: none;
}
.msg-row {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  width: 100%;
  text-align: left;
  padding: 12px 16px;
  border: 0;
  border-bottom: 1px solid var(--line);
  background: transparent;
  cursor: pointer;
  font: inherit;
}
.msg-row:last-child {
  border-bottom: 0;
}
.msg-row:hover {
  background: #fafaf8;
}
.msg-dot {
  flex: 0 0 auto;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  margin-top: 6px;
  background: transparent;
}
.msg-row.unread .msg-dot {
  background: #b94244;
}
.msg-main {
  flex: 1;
  min-width: 0;
}
.msg-main b {
  display: block;
  font-size: 13px;
  font-weight: 600;
  color: var(--muted);
}
.msg-row.unread .msg-main b {
  color: var(--ink, #24221f);
}
/* 消息对应的事已经办完（2026-10-08）：算已读，标一下 */
.msg-done {
  margin-left: 6px;
  font-style: normal;
  font-size: 11px;
  font-weight: 500;
  color: var(--muted);
}
/* 待办里动不了手的事折成一行灰字（如「另有 N 笔回款等执行登记」） */
.todo-aside {
  padding: 10px 16px;
  font-size: 12px;
  color: var(--muted);
}
.msg-main small {
  display: block;
  margin-top: 3px;
  font-size: 12px;
  color: var(--muted);
  line-height: 1.55;
}
.msg-time {
  flex: 0 0 auto;
  font-size: 11px;
  color: var(--muted);
}
.nav-dot {
  margin-left: auto;
  min-width: 17px;
  height: 17px;
  padding: 0 5px;
  border-radius: 9px;
  background: #b94244;
  color: #ffffff;
  font-size: 10px;
  font-weight: 700;
  line-height: 17px;
  text-align: center;
}
.h5-dot {
  position: absolute;
  top: -3px;
  right: -9px;
  min-width: 15px;
  height: 15px;
  padding: 0 4px;
  border-radius: 8px;
  background: #c4373a;
  color: #ffffff;
  font-size: 9px;
  font-weight: 700;
  line-height: 15px;
}
.bottomnav button b {
  position: relative;
}
/* 加了"消息"之后是 4 个页签，原来写死 3 列会把"我的"挤出屏幕 */
.bottomnav {
  grid-template-columns: repeat(4, 1fr);
}

.login-group {
  margin: 14px 0 6px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.4px;
  color: var(--muted);
}
.login-group:first-child {
  margin-top: 0;
}

/* ===== 订单中心：范围切换 / 批量操作 ===== */
.title-actions {
  display: flex;
  align-items: center;
  gap: 10px;
}
.bulk-bar {
  display: none;
  align-items: center;
  gap: 10px;
  padding: 9px 16px;
  border-bottom: 1px solid var(--line);
  background: #f6f4f0;
  font-size: 12px;
}
.bulk-bar.on {
  display: flex;
}
.bulk-bar select {
  padding: 5px 8px;
  border: 1px solid var(--line);
  border-radius: 7px;
  font-size: 12px;
  background: #ffffff;
}
th.pick-col,
td.pick-col {
  width: 34px;
  text-align: center;
  padding-left: 10px;
  padding-right: 0;
}
.pick-col input {
  cursor: pointer;
}

/* ===== 全局搜索 ===== */
.gsearch {
  position: relative;
}
.gsearch input {
  width: 230px;
  padding: 7px 11px;
  border: 1px solid var(--line);
  border-radius: 9px;
  font-size: 12px;
  background: #fafaf8;
}
.gsearch input:focus {
  background: #ffffff;
  outline: 2px solid rgba(46, 76, 141, 0.25);
}
.gs-result {
  display: none;
  position: absolute;
  top: 36px;
  left: 0;
  width: 360px;
  max-height: 340px;
  overflow: auto;
  background: #ffffff;
  border: 1px solid var(--line);
  border-radius: 11px;
  box-shadow: 0 14px 34px rgba(36, 35, 32, 0.16);
  z-index: 60;
  padding: 6px;
}
.gs-result.on {
  display: block;
}
.gs-label {
  padding: 7px 9px 4px;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.4px;
  color: var(--muted);
}
.gs-result button {
  display: block;
  width: 100%;
  text-align: left;
  padding: 7px 9px;
  border: 0;
  border-radius: 8px;
  background: transparent;
  cursor: pointer;
  font: inherit;
}
.gs-result button:hover {
  background: #f8f7f4;
}
.gs-result button b {
  display: block;
  font-size: 12px;
}
.gs-result button small {
  display: block;
  margin-top: 2px;
  font-size: 11px;
  color: var(--muted);
}
.gs-empty {
  padding: 14px 10px;
  font-size: 12px;
  color: var(--muted);
  text-align: center;
}

/* ===== 手机适配 =====
   原先 760px 以下直接把侧栏整个隐藏了，等于手机上没有导航，进去就出不来。
   这里改成把侧栏压成顶部一条横向滚动的标签，页面照样切得动。
   表格不强行变形：业务表本来就宽，横向滑比压成两行好读。 */
@media (max-width: 760px) {
  .shell {
    display: block;
  }
  .side {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 6px;
    width: auto;
    height: auto;
    min-height: 0;
    padding: 8px 10px;
    overflow-x: auto;
    overflow-y: hidden;
    border-right: 0;
    border-bottom: 1px solid var(--line);
    position: sticky;
    top: 0;
    z-index: 30;
    background: #ffffff;
    -webkit-overflow-scrolling: touch;
  }
  .side .brand,
  .side .side-foot,
  .side .nav-label,
  .side .nav-spacer {
    /* ── 表格行悬停：对账要逐行看，需要明确的当前行 ────────────── */
    .table-wrap tbody tr,
    .unified-scroll tbody tr {
      transition: background var(--duration-quick) var(--ease-smooth-out);
    }
    .table-wrap tbody tr:hover,
    .unified-scroll tbody tr:hover {
      background: #f6f4f0;
    }

    /* ── 键盘焦点：原先完全没有可见焦点环 ──────────────────────── */
    :where(a, button, select, input, [tabindex]):focus-visible {
      outline: 2px solid var(--blue);
      outline-offset: 2px;
      border-radius: 6px;
    }

    display: none;
  }
  .side .nav {
    display: flex;
    flex-direction: row;
    gap: 6px;
    margin: 0;
    padding: 0;
  }
  .side .nav button {
    flex: 0 0 auto;
    white-space: nowrap;
    padding: 7px 12px;
    font-size: 12px;
    border-radius: 999px;
  }
  .side .nav button .ico {
    margin-right: 4px;
  }
  .nav-dot {
    margin-left: 5px;
  }
  .top {
    flex-wrap: wrap;
    gap: 8px;
    padding: 10px 12px;
    height: auto;
  }
  .top-actions {
    width: 100%;
    flex-wrap: wrap;
    gap: 8px;
  }
  /* 角色切换在手机上更要留着：一个人兼两个岗，切不了就用不了 */
  .top-actions .role-switch {
    display: inline-block;
  }
  .gsearch {
    order: 9;
    width: 100%;
  }
  .gsearch input {
    width: 100%;
    box-sizing: border-box;
  }
  .gs-result {
    width: 100%;
  }
  .section-title.compact-title {
    flex-direction: column;
    align-items: flex-start;
    gap: 10px;
  }
  .title-actions {
    width: 100%;
    flex-wrap: wrap;
  }
  .settings-grid {
    grid-template-columns: 1fr;
  }
  .bulk-bar {
    flex-wrap: wrap;
  }
  .table-tools {
    flex-wrap: wrap;
    gap: 8px;
  }
  .table-tools .search {
    width: 100%;
  }
  .filterbar {
    flex-wrap: wrap;
  }
  .filterbar .grow {
    width: 100%;
    flex: 1 0 100%;
  }
  .dialog {
    width: calc(100vw - 20px);
    max-height: calc(100vh - 60px);
  }
  .review-row {
    flex-direction: column;
  }
}
@media (max-width: 420px) {
  .kpis {
    grid-template-columns: 1fr;
  }
  .order-stats {
    grid-template-columns: 1fr 1fr;
  }
}

/* styles.css 里的 .danger 带 !important，会把角标上的白字也染成红色，
   红底红字等于看不见，这里按原意改回白字。 */
.table-tools h3 .count.danger {
  color: #ffffff !important;
}
/* 顶栏挤的时候名字会被折成竖排。顶栏本身在桌面端是固定高度，
   不能让它换行（会顶破布局），只在窄屏的 media query 里允许换行。 */
.who b {
  white-space: nowrap;
}
.crumb strong,
.crumb span {
  white-space: nowrap;
}
.top-actions {
  flex-wrap: nowrap;
}

/* 业务表列多，窗口一窄就把"快递单号"这种要输入的列压成几像素，填都填不进去。
   给表一个最小宽度，让它横向滚动，而不是把列压扁。 */
.table-card .unified-table,
.table-card table {
  min-width: 940px;
}
.table-card .mini-table {
  min-width: 0;
}
.settings-grid .table-card table {
  min-width: 520px;
}
.ship-cell {
  min-width: 230px;
}
.ship-info {
  min-width: 200px;
}

/* 顶栏按钮不换行：文字折成两行会把 64px 的顶栏撑变形 */
.top-actions button,
.top-actions .role-chip,
.top-actions .role-switch {
  white-space: nowrap;
  flex: 0 0 auto;
}

/* ===== 下一步等谁 ===== */
.next-cell {
  min-width: 130px;
  white-space: normal;
}
.next-cell b {
  display: block;
  font-size: 12px;
  color: var(--muted);
}
.next-cell small {
  display: block;
  margin-top: 2px;
  font-size: 11px;
  color: var(--muted);
  line-height: 1.45;
}
.next-cell.me b {
  color: #b94244;
  font-weight: 700;
}
.next-cell.me small {
  color: var(--ink, #24221f);
}

/* 达人端：这一单现在等谁 */
.h5-next {
  display: flex;
  align-items: baseline;
  gap: 8px;
  margin: 8px 0 0;
  padding: 8px 11px;
  border-radius: 10px;
  background: #f6f4ef;
  font-size: 12px;
}
.h5-next b {
  flex: 0 0 auto;
  color: var(--muted);
  font-size: 11px;
}
.h5-next span {
  color: var(--muted);
  line-height: 1.5;
}
.h5-next.me {
  background: #fdf0ef;
}
.h5-next.me b {
  color: #c4373a;
}
.h5-next.me span {
  color: var(--ink, #23211e);
}

/* 待办页一个块往往只有一两行，固定 300px 最小高度会留一大片空白，
   一屏放不下三四个块。表格按内容高，max-height 仍然管着上限。 */
.table-wrap {
  min-height: 0;
}

/* ===== 系统走查 ===== */
.matrix th {
  text-align: center;
}
.matrix .act-cell {
  font-weight: 600;
  min-width: 150px;
}
.matrix .dot-cell {
  text-align: center;
  width: 78px;
}
.matrix .dot-cell i {
  font-style: normal;
  font-size: 13px;
}
.matrix .dot-cell .yes {
  color: #2f4d8d;
}
.matrix .dot-cell .no {
  color: #dddcd8;
}
.rule-cell,
.step-cell,
.note-cell {
  white-space: normal;
  line-height: 1.5;
}
.step-cell {
  min-width: 300px;
}
.note-cell {
  min-width: 200px;
  font-size: 11px;
  color: var(--muted);
}
/* 设置页的「导入数据」是个 label 包着隐藏的 file input，
   要手动补上按钮的样子，否则跟旁边两个按钮对不齐 */
.settings-add .btn-like {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 6px 12px;
  border: 1px solid var(--line, #eae8e4);
  border-radius: 8px;
  font-size: 12px;
  line-height: 1.4;
  cursor: pointer;
  background: #ffffff;
  color: #4f4c46;
  white-space: nowrap;
}
.settings-add .btn-like:hover {
  border-color: #2f4d8d;
  color: #2f4d8d;
}

/* ===== 项目行展开：明细和父行连成一块，不再多出一列空白 ===== */
.progress-cell {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  white-space: nowrap;
}
.progress-cell .mini-bar {
  margin-right: 0;
}
.progress-cell em {
  font-style: normal;
  color: var(--muted);
  font-size: 12px;
}
.project-row.open > td {
  border-bottom-color: transparent;
}
.project-detail > td {
  border-top: 0;
  box-shadow: inset 3px 0 0 var(--brand, #29437c);
}
.project-detail .mini-table {
  background: #ffffff;
  border: 1px solid var(--line);
  border-radius: 10px;
  overflow: hidden;
}

/* ===== 从达人库添加：二级菜单 + 达人库速览 ===== */
.talent-add {
  position: relative;
}
.talent-lib-pop {
  display: none;
  position: absolute;
  top: calc(100% + 6px);
  right: 0;
  width: 360px;
  background: #ffffff;
  border: 1px solid var(--line);
  border-radius: 12px;
  box-shadow: 0 12px 30px rgba(36, 34, 31, 0.14);
  padding: 10px;
  z-index: 40;
}
.talent-lib-pop.open {
  display: block;
}
.lib-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 2px 4px 8px;
}
.lib-head b {
  font-size: 12px;
}
.lib-link {
  border: 0;
  background: none;
  color: #29437c;
  font-size: 12px;
  cursor: pointer;
  padding: 0;
}
.lib-link:hover {
  text-decoration: underline;
}
.lib-search {
  width: 100%;
  border: 1px solid var(--line);
  border-radius: 9px;
  padding: 7px 10px;
  font-size: 12px;
  margin-bottom: 6px;
}
.lib-list {
  max-height: 232px;
  overflow: auto;
}
.lib-item {
  display: grid;
  grid-template-columns: 1fr auto 46px;
  align-items: center;
  gap: 10px;
  width: 100%;
  text-align: left;
  border: 0;
  border-top: 1px solid #f6f4f0;
  background: #ffffff;
  padding: 9px 6px;
  color: var(--ink);
  cursor: pointer;
}
.lib-item:hover:not(:disabled) {
  background: #faf9f6;
}
.lib-item:disabled {
  cursor: default;
  opacity: 0.55;
}
.lib-who {
  display: grid;
  gap: 2px;
  min-width: 0;
}
.lib-who b {
  font-size: 13px;
}
.lib-who small,
.lib-meta small {
  color: var(--muted);
  font-size: 11px;
}
.lib-meta {
  display: flex;
  align-items: center;
  gap: 8px;
  white-space: nowrap;
}
.lib-act {
  text-align: right;
  font-size: 12px;
  color: #29437c;
}
.lib-item.used .lib-act {
  color: var(--muted);
}
.lib-empty {
  display: grid;
  gap: 6px;
  justify-items: start;
  padding: 14px 6px;
  color: var(--muted);
  font-size: 12px;
}

.peek-mask {
  display: none;
  position: fixed;
  inset: 0;
  background: rgba(24, 23, 21, 0.42);
  z-index: 120;
  justify-content: flex-end;
}
.peek-mask.open {
  display: flex;
}
.peek-panel {
  width: min(880px, 94vw);
  height: 100%;
  background: #ffffff;
  display: flex;
  flex-direction: column;
  box-shadow: -14px 0 40px rgba(24, 23, 21, 0.18);
}
.peek-top {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  padding: 18px 22px 12px;
  border-bottom: 1px solid var(--line);
}
.peek-top h2 {
  margin: 0;
  font-size: 17px;
}
.peek-top p {
  margin: 4px 0 0;
  font-size: 12px;
  color: var(--muted);
}
.peek-tools {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 22px 0;
}
.peek-tools .lib-search {
  max-width: 280px;
  margin: 0;
}
.peek-tools .muted {
  font-size: 12px;
}
.peek-tools .peek-add {
  margin-left: auto;
  white-space: nowrap;
}
.peek-table tr.picked td {
  background: #f9f8f5;
}
.peek-body {
  flex: 1;
  overflow: auto;
  padding: 12px 22px;
}
.peek-table {
  width: 100%;
}
.peek-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 12px 22px;
  border-top: 1px solid var(--line);
  font-size: 12px;
}
/* 展开区里的明细表按自己的内容排版，不跟外层共用固定列宽 */
.project-detail > td {
  width: auto;
}
.project-detail .mini-table {
  table-layout: auto;
}

/* 建单弹窗：拦不住就会存进去的几个字段，直接标红并在页脚说清楚原因 */
.field.invalid input,
.field.invalid select,
input.talent-amount.invalid {
  border-color: #b94244;
  background: #fafaf8;
}
.foot-hint.bad {
  color: #b94244;
}

/* 浮层打开时背景不跟着滚 */
body.overlay-open {
  overflow: hidden;
}

/* 窄屏：指标卡一行一个的话，四张卡要占掉一整屏才看得到正文 */
@media (max-width: 420px) {
  .kpis {
    grid-template-columns: 1fr 1fr;
  }
  .kpi {
    min-height: 92px;
    padding: 11px;
  }
  .kpi .num {
    font-size: 21px;
  }
  .kpi .label,
  .kpi .foot {
    font-size: 11px;
  }
}

/* 列筛选生效时把箭头点亮，否则筛完看不出这一列还挂着条件 */
.th-filter.on {
  color: #29437c;
  background: #f4f2ee;
  border-radius: 5px;
}

/* 流程条：右下角的「当前：脚本」和第 4 段的「4 发布」原来挤在同一行，
   窄屏（达人端 H5）上直接叠字，给它单独一行 */
.stagebar {
  padding-bottom: 34px;
}
.stagebar em {
  bottom: 0;
}
.bulk-hidden {
  font-style: normal;
  font-size: 11px;
  color: #b94244;
  margin-left: 8px;
}

/* 1024px（小笔记本 / iPad 横屏）下顶栏放不下：超管那一排
   搜索框 + 角色 + 预览达人端 + 新建订单 + 姓名 + 退出 有 626px，
   把整个页面撑出横向滚动条。让搜索框在这个区间可伸缩，够用就行。 */
@media (max-width: 1200px) and (min-width: 761px) {
  .top {
    padding: 0 14px;
  }
  .top-actions {
    min-width: 0;
    gap: 8px;
  }
  .gsearch {
    flex: 1 1 120px;
    min-width: 0;
  }
  .gsearch input {
    width: 100%;
    box-sizing: border-box;
  }
  .crumb span {
    display: none;
  }
}

/* 12 列的订单主表挤在 940px 里，列头会被折成「类 型」「负 责 人」，
   徽标也断成三行。宁可横向滚动，也不要把每列压到 78px。 */
.table-card .unified-table.order-table {
  min-width: 1160px;
}
.unified-table th {
  white-space: nowrap;
}
.badge {
  white-space: nowrap;
}

/* 品牌工作台的四个页签在手机上会被压成竖排单字（「内 容 审 核」），
   改成横向滚动，文字不折行 */
@media (max-width: 760px) {
  .brand-tabs {
    overflow-x: auto;
    flex-wrap: nowrap;
    -webkit-overflow-scrolling: touch;
    padding-bottom: 4px;
  }
  .brand-tabs button {
    flex: 0 0 auto;
    white-space: nowrap;
    padding: 8px 12px;
    font-size: 13px;
  }
}
/* 服务端模式的登录表单。本地模式那份是点头像即进，没有这一段。 */
.login-form {
  display: grid;
  gap: 14px;
  margin: 18px 0 8px;
}
.login-form label {
  display: grid;
  gap: 6px;
  font-size: 13px;
  color: #5e6166;
}
.login-form input {
  height: 42px;
  padding: 0 12px;
  border: 1px solid var(--line, #e3e6eb);
  border-radius: 10px;
  font-size: 14px;
  background: #ffffff;
}
.login-form input:focus {
  outline: none;
  border-color: #1d3f9f;
  box-shadow: 0 0 0 3px rgba(29, 63, 159, 0.12);
}
.login-form button {
  height: 44px;
  border-radius: 10px;
  font-size: 15px;
  font-weight: 600;
}
.login-form button[disabled] {
  opacity: 0.6;
  cursor: default;
}

/* ===== 建单弹窗的达人成本与毛利（09-21 会议）=====
   商务看不到分账比例，所以这几格只在 canSeeMoney() 为真时渲染，
   列数跟着变，用 .cost-col / .with-profit 切换栅格。 */
.talent-grid.cost-col {
  grid-template-columns: 1.25fr 0.72fr 0.78fr 0.86fr 0.86fr 32px;
}
.talent-cost {
  display: flex;
  align-items: baseline;
  justify-content: flex-end;
  gap: 6px;
  padding-right: 2px;
  white-space: nowrap;
}
.talent-cost .tc-share {
  font-style: normal;
  font-size: 11px;
  color: var(--muted);
}
.talent-cost .tc-cost {
  font-size: 13px;
  font-variant-numeric: tabular-nums;
}
.amount-check.with-profit {
  grid-template-columns: repeat(5, 1fr) 1.3fr;
}
#sumProfit {
  color: var(--green, #5a8f73);
}
@media (max-width: 760px) {
  .talent-grid.cost-col {
    grid-template-columns: 1fr 1fr;
  }
  .talent-cost {
    justify-content: flex-start;
  }
  .amount-check.with-profit {
    grid-template-columns: 1fr 1fr;
  }
}

/* ===== 物料要求与项目通知（09-21 会议）===== */
.brief-card + .brief-card {
  margin-top: 14px;
}
.brief-card .card-head small.cell-sub {
  display: block;
  font-weight: 400;
}
.brief-body {
  display: grid;
  grid-template-columns: 1.4fr 1fr;
  gap: 18px;
  padding: 0 16px 14px;
}
.brief-col > b {
  display: block;
  font-size: 13px;
  margin-bottom: 8px;
}
.brief-col textarea,
.notice-add textarea {
  width: 100%;
  box-sizing: border-box;
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 9px 11px;
  font: inherit;
  font-size: 13px;
  line-height: 1.7;
  resize: vertical;
  background: #ffffff;
}
.brief-text {
  margin: 0;
  font-size: 13px;
  line-height: 1.8;
  color: #56534c;
  white-space: pre-wrap;
}
.brief-acts {
  margin-top: 8px;
}
.sample-list {
  display: grid;
  gap: 6px;
  margin-bottom: 8px;
}
.sample-item {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
}
.sample-item a {
  flex: 1;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.sample-add {
  display: grid;
  gap: 6px;
}
.sample-add input {
  height: 32px;
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 0 9px;
  font-size: 13px;
  background: #ffffff;
}
.notice-board {
  border-top: 1px solid #f6f4f0;
  padding: 12px 16px 14px;
  background: #fafcff;
  border-radius: 0 0 14px 14px;
}
.notice-head {
  display: flex;
  align-items: baseline;
  gap: 10px;
  margin-bottom: 8px;
}
.notice-head b {
  font-size: 13px;
}
.notice-head .muted {
  font-size: 12px;
}
.notice-item {
  position: relative;
  border-left: 3px solid var(--blue, #2f4d8d);
  background: #ffffff;
  border-radius: 0 8px 8px 0;
  padding: 8px 32px 8px 11px;
  margin-bottom: 6px;
}
.notice-item p {
  margin: 0 0 3px;
  font-size: 13px;
  line-height: 1.7;
  white-space: pre-wrap;
}
.notice-item small {
  color: var(--muted);
  font-size: 11px;
}
.notice-item .x,
.sample-item .x {
  position: absolute;
  right: 6px;
  top: 6px;
  border: 0;
  background: transparent;
  color: var(--muted);
  cursor: pointer;
  font-size: 15px;
}
.sample-item .x {
  position: static;
}
.notice-add {
  display: grid;
  gap: 6px;
  justify-items: start;
  margin-top: 8px;
}

/* 导入预览：逐行给结果，成功和失败都留在页面上 */
.imp-row {
  font-size: 12.5px;
  line-height: 1.9;
  padding: 1px 2px;
  border-bottom: 1px dashed #f4f2ee;
  word-break: break-all;
}
.imp-row.ok {
  color: #486f5a;
}
.imp-row.bad {
  color: var(--red, #b84547);
}
.imp-row.muted {
  color: var(--muted);
}
.imp-sum {
  margin-top: 10px;
  border-top: 1px solid var(--line);
  padding-top: 8px;
}
.imp-sum b {
  display: block;
  font-size: 12px;
  color: var(--muted);
  margin-bottom: 5px;
}
.imp-sum div {
  display: flex;
  justify-content: space-between;
  font-size: 13px;
  padding: 2px 0;
}

/* 达人端的通知与物料要求 */
.h5-notice,
.h5-brief {
  margin: 8px 0 0;
  padding: 9px 11px;
  border-radius: 10px;
  font-size: 12.5px;
  line-height: 1.7;
}
.h5-notice {
  background: #f4f2ed;
  border-left: 3px solid #be5d39;
}
.h5-brief {
  background: #f9f7f2;
}
.h5-notice b,
.h5-brief b {
  display: block;
  font-size: 12px;
  margin-bottom: 4px;
}
.h5-notice p,
.h5-brief p {
  margin: 0 0 4px;
  white-space: pre-wrap;
}
.h5-notice p small {
  display: block;
  color: var(--muted);
  font-size: 11px;
}
.h5-brief a {
  display: block;
  font-size: 12px;
}

@media (max-width: 760px) {
  .brief-body {
    grid-template-columns: 1fr;
    gap: 14px;
  }
}

/* 第五个页签（物料与通知）加进来后，窄一点的桌面窗口会把「物料与通 知」压成两行。
   页签数量以后还会变，所以不缩字号，改成不换行 + 容器横向滚。 */
.brand-tabs {
  overflow-x: auto;
  flex-wrap: nowrap;
  scrollbar-width: none;
  -webkit-overflow-scrolling: touch;
}
.brand-tabs::-webkit-scrollbar {
  display: none;
}
.brand-tabs button {
  flex: 0 0 auto;
  white-space: nowrap;
}

/* 金额输入框旁边的单位标注：页面存的是分，输入框收的是元，不标会填错 */
.detail-fields span .unit {
  margin-left: 4px;
  font-style: normal;
  font-size: 11px;
  color: var(--muted);
}

/* ---------- 资金口径说明（2026-09-21） ----------
   建单、订单详情、达人端三处用同一份 FEE_BRIEF，样式也共用这一节。
   目的是让人在"决定接不接这一单"的时候就读到，所以给足对比度，不要做成浅灰小字。 */
.fee-brief {
  margin-top: 14px;
  border: 1px solid var(--line);
  border-left: 3px solid var(--blue);
  border-radius: 10px;
  background: var(--soft);
  padding: 12px 14px;
}
.fee-brief-head {
  display: flex;
  align-items: baseline;
  gap: 8px;
  margin-bottom: 8px;
}
.fee-brief-head b {
  font-size: 13px;
  color: var(--ink);
}
.fee-brief-head span {
  font-size: 12px;
  color: var(--muted);
}
.fee-brief-row {
  display: grid;
  grid-template-columns: 84px 1fr;
  gap: 10px;
  padding: 3px 0;
  font-size: 12px;
  line-height: 1.6;
}
.fee-brief-row span {
  color: var(--muted);
}
.fee-brief-row b {
  color: var(--ink);
  font-weight: 500;
}
.fee-brief-warn {
  margin-top: 8px;
  padding-top: 8px;
  border-top: 1px dashed var(--line);
  font-size: 12px;
  color: var(--chart-warning);
}

/* 达人端同一份说明，折叠起来省地方；星图单默认展开 */

/* 打款回执的上传按钮，长得和其他 tiny 按钮一样 */
.table-card .btn-like {
  display: inline-block;
  cursor: pointer;
  border: 1px solid var(--line);
  border-radius: 7px;
  padding: 4px 10px;
  font-size: 12px;
  color: var(--ink);
  background: #ffffff;
}
.table-card .btn-like:hover {
  border-color: var(--blue);
  color: var(--blue);
}

/* ============================================================
   投流项目（app.js 第 18 节）
   新加的类名一律以 .ad- / .h5-ad- 开头，不碰订单那边已有的样式。
   表格、卡片、弹窗复用 .card / .unified-table / .dialog，
   这里只补它们没有的几样：项目卡、月份格子、截图框、H5 任务块。
   ============================================================ */

.ad-head-acts {
  display: flex;
  align-items: center;
  gap: 8px;
}
.ad-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  gap: 14px;
  margin-top: 14px;
}
.ad-card {
  text-align: left;
  background: #ffffff;
  border: 1px solid var(--line);
  border-radius: 15px;
  padding: 16px;
  cursor: pointer;
  box-shadow: 0 5px 18px rgba(61, 59, 54, 0.04);
  transition:
    border-color var(--duration-fast, 0.16s) ease,
    transform var(--duration-fast, 0.16s) ease;
}
.ad-card:hover {
  border-color: var(--blue);
  transform: translateY(-2px);
}
.ad-card h3 {
  margin: 8px 0 2px;
  font-size: 15px;
}
.ad-card-top {
  display: flex;
  align-items: center;
  gap: 8px;
}
.ad-card-top .grow {
  flex: 1;
  font-size: 12px;
}
.ad-symbol {
  width: 26px;
  height: 26px;
  border-radius: 8px;
  display: grid;
  place-items: center;
  background: var(--soft);
  color: var(--blue);
  font-weight: 700;
  font-size: 13px;
}
.ad-card-sub {
  color: var(--muted);
  font-size: 12px;
  margin: 0 0 8px;
}
.ad-highlight {
  display: inline-block;
  background: var(--soft);
  color: var(--blue);
  border-radius: 6px;
  padding: 3px 8px;
  font-size: 12px;
  margin: 0 0 8px;
}
.ad-card-foot {
  display: flex;
  gap: 12px;
  margin-top: 10px;
  font-size: 12px;
  color: var(--muted);
}
.ad-card-foot .warn {
  color: var(--orange);
}

/* 进度条：本月交了几条 / 目标几条 */
.ad-progress {
  margin-top: 10px;
}
.ad-progress-label {
  display: flex;
  justify-content: space-between;
  font-size: 12px;
  color: var(--muted);
  margin-bottom: 4px;
}
.ad-progress-label strong {
  color: var(--ink);
}
.ad-bar {
  height: 6px;
  border-radius: 999px;
  background: var(--soft);
  overflow: hidden;
}
.ad-bar i {
  display: block;
  height: 100%;
  border-radius: 999px;
  background: var(--blue);
  transition: width var(--duration-medium, 0.3s) ease;
}

/* 按月跟踪交付的格子。一眼要能看出"这个月够没够"，所以用底色区分，
   不靠数字让人自己比。未来的月份压灰，免得误读成"欠了一堆"。 */
.ad-cell {
  text-align: center;
  white-space: nowrap;
}
.ad-cell b {
  font-size: 14px;
}
.ad-cell small {
  color: var(--muted);
}
.ad-cell.ok {
  background: rgba(102, 150, 124, 0.08);
}
.ad-cell.ok b {
  color: var(--green);
}
.ad-cell.part {
  background: rgba(182, 130, 50, 0.1);
}
.ad-cell.part b {
  color: var(--orange);
}
.ad-cell.none b {
  color: var(--muted);
}
.ad-cell.future {
  opacity: 0.4;
}
th.ad-col-now {
  color: var(--blue);
}

.ad-talent-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 10px;
}
.ad-talent-chips .chip {
  background: var(--soft);
  border-radius: 999px;
  padding: 3px 10px;
  font-size: 12px;
}
/* 「3 个月 × 4 条/月」这一行，数字要比文字大一截才看得出是规则 */
.rule-number {
  display: flex;
  align-items: baseline;
  gap: 6px;
  margin: 8px 0;
}
.rule-number b {
  font-size: 26px;
  line-height: 1;
}
.rule-number small,
.rule-number span {
  color: var(--muted);
  font-size: 12px;
}
.padded {
  padding: 4px 2px;
}
.padded p {
  margin: 4px 0;
}
.card .row,
.dialog .row {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.dialog .grow {
  flex: 1;
}
.ad-field {
  display: block;
  margin-top: 10px;
}
.ad-field span {
  display: block;
  font-size: 12px;
  color: var(--muted);
  margin-bottom: 4px;
}

/* 投流截图：点一下聚焦，再按 ⌘V 粘贴。聚焦态要看得见，
   否则用户按了粘贴没反应，不知道是没聚焦还是功能坏了。 */
.ad-shot-box {
  border: 1px dashed var(--line);
  border-radius: 10px;
  padding: 12px;
  min-height: 72px;
  background: #fafcff;
  cursor: text;
}
.ad-shot-box:focus {
  outline: none;
  border-color: var(--blue);
  background: var(--soft);
}
.ad-shot {
  max-width: 100%;
  max-height: 260px;
  border-radius: 8px;
  display: block;
  margin-bottom: 6px;
}
.ad-addr {
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 10px 12px;
  background: #fafcff;
}
.ad-addr p {
  margin: 4px 0 0;
  color: var(--muted);
  font-size: 12px;
}
.as-item {
  margin-bottom: 6px;
}
.as-item select {
  flex: 1;
}
/* 待确认单号：一行一条，指定达人后补建寄样单 */
.ad-pend {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 0;
  border-bottom: 1px solid var(--line);
  flex-wrap: wrap;
}
.ad-pend > div:first-child {
  flex: 1;
  min-width: 200px;
}

/* ---- 达人端 H5 ---- */
.h5-card {
  background: #ffffff;
  border-radius: 14px;
  padding: 14px;
  margin: 12px;
  box-shadow: 0 4px 14px rgba(59, 57, 54, 0.06);
}
.h5-card-head {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  margin-bottom: 10px;
}
.h5-card-head span {
  font-size: 11px;
  color: var(--muted);
}
.h5-ad-stat {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
  margin-bottom: 12px;
}
.h5-ad-stat div {
  background: var(--soft);
  border-radius: 10px;
  padding: 10px 6px;
  text-align: center;
}
.h5-ad-stat b {
  display: block;
  font-size: 18px;
}
.h5-ad-stat small {
  color: var(--muted);
  font-size: 11px;
}
.h5-ad-project {
  border-top: 1px solid var(--line);
  padding-top: 10px;
  margin-top: 10px;
}
.h5-ad-top {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
}
.h5-ad-top span {
  font-size: 11px;
  color: var(--muted);
}
.h5-ad-req {
  font-size: 12px;
  color: var(--muted);
  margin: 8px 0 0;
  line-height: 1.6;
}
.h5-btn {
  display: block;
  width: 100%;
  margin-top: 10px;
  padding: 9px;
  border: none;
  border-radius: 10px;
  background: var(--blue);
  color: #ffffff;
  font-size: 13px;
  cursor: pointer;
}
.h5-mini {
  border: 1px solid var(--line);
  background: #ffffff;
  border-radius: 7px;
  padding: 4px 10px;
  font-size: 12px;
  cursor: pointer;
}
.h5-mini.ghost {
  color: var(--muted);
}
.h5-ad-works {
  border-top: 1px solid var(--line);
  margin-top: 12px;
  padding-top: 10px;
}
.h5-ad-works > b {
  font-size: 13px;
}
.h5-ad-work {
  border-bottom: 1px solid var(--line);
  padding: 8px 0;
}
.h5-ad-work a {
  display: block;
  font-size: 12px;
  margin: 4px 0;
  word-break: break-all;
}
.h5-ad-work .row {
  display: flex;
  align-items: center;
  gap: 6px;
}
.h5-ad-work .grow {
  flex: 1;
  font-size: 11px;
}
.h5-ship-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 10px;
  padding: 8px 0;
  border-bottom: 1px solid var(--line);
}
.h5-ship-row b {
  display: block;
  font-size: 13px;
}
.h5-ship-row small {
  display: block;
  font-size: 11px;
  color: var(--muted);
}
.h5-ship-row > div:last-child {
  text-align: right;
}

/* 表格底下那行说明。不叫 .table-foot，是因为 enhanceTableFoot() 会在
   .table-card 末尾插一个 .table-pager，两个名字挨太近以后容易改错地方。 */
.ad-note {
  padding: 8px 2px 0;
  font-size: 12px;
  color: var(--muted);
  line-height: 1.6;
}

/* ===================== 开发入口（免密切换身份） =====================
   只有服务端开着 KOC_DEV_LOGIN 时才会出现。生产环境这些类名一个都用不上。 */

.login-card.wide {
  max-width: 860px;
  width: 92vw;
}
.login-wrap.dev {
  align-items: flex-start;
  padding: 40px 16px;
  overflow-y: auto;
}

.dev-warn {
  display: flex;
  gap: 10px;
  align-items: baseline;
  margin: 14px 0 18px;
  padding: 10px 14px;
  border: 1px solid #ebc6c3;
  border-left: 3px solid #b4494a;
  border-radius: 6px;
  background: #f9f8f5;
}
.dev-warn b {
  color: #a43f40;
  font-size: 13px;
  white-space: nowrap;
}
.dev-warn span {
  color: #775d5a;
  font-size: 12px;
  line-height: 1.6;
}
.dev-warn code {
  background: #f0e4e3;
  padding: 1px 5px;
  border-radius: 3px;
  font-size: 11px;
}

.dev-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
  gap: 12px;
}
.dev-role {
  border: 1px solid var(--line, #ebe9e5);
  border-radius: 8px;
  padding: 12px 14px;
  background: #ffffff;
}
.dev-role-head {
  display: flex;
  align-items: baseline;
  gap: 8px;
}
.dev-role-head b {
  font-size: 14px;
}
.dev-role-head span {
  font-size: 11px;
  color: var(--muted, #979389);
}
.dev-role-views {
  margin: 6px 0 10px;
  font-size: 11px;
  color: var(--muted, #979389);
  line-height: 1.5;
  word-break: break-all;
}
.dev-people {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.dev-person {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 1px;
  padding: 6px 10px;
  border: 1px solid var(--line, #ebe9e5);
  border-radius: 6px;
  background: #f9fbff;
  cursor: pointer;
  font: inherit;
  text-align: left;
}
.dev-person:hover {
  border-color: var(--brand, #27427b);
  background: #f8f7f4;
}
.dev-person b {
  font-size: 13px;
}
.dev-person small {
  font-size: 10px;
  color: var(--muted, #979389);
}
.dev-loading {
  padding: 24px;
  text-align: center;
  color: var(--muted, #979389);
  font-size: 13px;
}

.dev-pwd {
  margin-top: 18px;
  border-top: 1px solid var(--line, #ebe9e5);
  padding-top: 12px;
}
.dev-pwd summary {
  cursor: pointer;
  font-size: 12px;
  color: var(--muted, #979389);
}
.dev-pwd .login-form {
  margin-top: 12px;
  max-width: 320px;
}

/* 底部工具条：固定在底部，不挡系统本来的顶栏 */
#devbar {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 900;
  background: #302e29;
  color: #edebe7;
  border-top: 2px solid #b4494a;
  font-size: 12px;
}
.devbar-in {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 7px 16px;
  flex-wrap: wrap;
}
.devbar-tag {
  background: #b4494a;
  color: #ffffff;
  padding: 2px 8px;
  border-radius: 3px;
  font-size: 11px;
  font-weight: 600;
  white-space: nowrap;
}
.devbar-now {
  color: #ceccc7;
}
.devbar-now b {
  color: #ffffff;
}
.devbar-roles {
  display: flex;
  gap: 4px;
  margin-left: auto;
}
.devbar-roles button,
.devbar-switch {
  background: #43413c;
  color: #edebe7;
  border: 1px solid #56534c;
  border-radius: 4px;
  padding: 3px 10px;
  cursor: pointer;
  font: inherit;
  font-size: 11px;
}
.devbar-roles button:hover,
.devbar-switch:hover {
  background: #56534c;
}
.devbar-roles button.on {
  background: var(--brand, #27427b);
  border-color: var(--brand, #27427b);
  color: #ffffff;
}
.devbar-switch {
  margin-left: auto;
}
.devbar-roles + .devbar-switch {
  margin-left: 0;
}

/* 工具条别盖住页面最后一行，侧栏是 fixed 的，得单独往上顶 */
body:has(#devbar) {
  padding-bottom: 46px;
}
body:has(#devbar) .side {
  bottom: 46px;
  height: auto;
}

/* ============================================================
   2026-09-21 16:08 会议新增的几块样式
   ============================================================ */

/* 建单弹窗里的「订单金额构成」子块。和 01/02/03 三个大节区分开：
   它是 01 里面的一个可选补充，不是第四节。 */
.order-subsection {
  margin-top: 12px;
  padding: 12px 14px;
  border: 1px dashed var(--line, #e1dfdb);
  border-radius: 8px;
  background: var(--soft, #fcfbfa);
}
.order-subsection.invalid {
  border-color: #b4494a;
  background: #f8f7f4;
}
.order-subhead {
  display: flex;
  align-items: baseline;
  gap: 10px;
  margin-bottom: 10px;
  flex-wrap: wrap;
}
.order-subhead b {
  font-size: 13px;
}
.order-subhead .muted {
  font-size: 12px;
}
.formgrid.two {
  grid-template-columns: 1fr 1fr;
  gap: 11px;
}
/* 建单弹窗的字段标签也要能标单位（页面存分、输入框收元） */
.field label .unit {
  margin-left: 4px;
  font-style: normal;
  font-weight: 400;
  font-size: 11px;
  color: var(--muted);
}

/* 投流作品的运营内审：打回意见和两个按钮挤在表格一格里，
   textarea 要够窄，否则整张表被撑开。 */
.ops-judge {
  display: flex;
  align-items: center;
  gap: 4px;
  margin-top: 6px;
}
.ops-judge textarea {
  flex: 1;
  min-width: 90px;
  resize: vertical;
  font: inherit;
  font-size: 12px;
  padding: 3px 6px;
  border: 1px solid var(--line, #e1dfdb);
  border-radius: 4px;
}

/* 达人端收益拆成稿费和投流佣金两块：两者的推送时点不一样，
   混成一个数会让达人以为投流佣金也是确认回款就能拿。 */
.h5-income-split {
  display: grid;
  gap: 10px;
  margin: 12px 0;
}
.h5-income-part {
  border: 1px solid var(--line, #e9e7e2);
  border-radius: 10px;
  padding: 11px 13px;
  background: #ffffff;
}
.h5-income-part .row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  margin-bottom: 4px;
}
.h5-income-part strong {
  font-size: 17px;
}
.h5-income-part small {
  display: block;
  line-height: 1.5;
}

/* 窄屏：金额构成的四列塞不下 */
@media (max-width: 720px) {
  .order-subsection .formgrid.four,
  .order-subsection .formgrid.two {
    grid-template-columns: 1fr;
  }
}

/* 建单弹窗底部的账单构成：总额 → 返点 → 实收 → 博主到手 → 其他成本 → 留存。
   一行一笔，缩进的是扣减项，最后一行是结果。 */
.order-bill {
  margin-top: 12px;
  border: 1px solid var(--line, #efede9);
  border-radius: 10px;
  background: #ffffff;
  padding: 12px 14px;
}
.bill-head {
  display: flex;
  align-items: baseline;
  gap: 8px;
  margin-bottom: 8px;
}
.bill-head b {
  font-size: 13px;
}
.bill-head .muted {
  font-size: 12px;
}
.bill-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  padding: 5px 0;
  font-size: 13px;
}
.bill-row + .bill-row {
  border-top: 1px dashed var(--line, #efede9);
}
.bill-row span {
  color: var(--ink, #24221f);
}
.bill-row small {
  display: block;
  font-size: 11px;
  color: var(--muted, #8c887e);
  line-height: 1.5;
  margin-top: 1px;
}
.bill-row b {
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
/* 扣减项往里缩一格，一眼看出哪几笔是从总额里减掉的 */
.bill-row.sub {
  padding-left: 14px;
}
.bill-row.sub span {
  color: var(--muted, #8c887e);
}
.bill-row.sub b {
  color: var(--red, #ba4043);
}
.bill-row.mid b {
  color: var(--ink, #24221f);
}
.bill-row.muted-row span,
.bill-row.muted-row b {
  color: var(--muted, #8c887e);
}
.bill-row.total {
  margin-top: 4px;
  border-top: 1px solid var(--line, #efede9);
  padding-top: 8px;
  font-size: 14px;
}
.bill-row.total b {
  font-size: 16px;
  color: var(--green, #76a88d);
}
.bill-row.total.bad b {
  color: var(--red, #ba4043);
}
.bill-note {
  margin-top: 8px;
  font-size: 12px;
  color: var(--muted, #8c887e);
  line-height: 1.6;
}
.bill-note.bad {
  color: var(--red, #ba4043);
}

/* 回款凭证：财务点「确认入账」之前看的就是这一块 */
.receipt-proof {
  margin: 12px 0;
  border: 1px solid var(--line, #efede9);
  border-radius: 10px;
  padding: 11px 13px;
  background: #fafcff;
}
.receipt-proof.none {
  font-size: 12px;
  color: var(--red, #ba4043);
  background: rgba(186, 64, 67, 0.06);
  border-color: rgba(186, 64, 67, 0.25);
}
.rp-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 8px;
  flex-wrap: wrap;
}
.rp-head b {
  font-size: 13px;
}
.rp-head .muted {
  font-size: 11px;
}
.receipt-proof .ad-shot {
  max-height: 320px;
}
.rc-dialog {
  max-width: 620px;
}

/* ---- 卡在达人确认（结算页）2026-09-22 ----
   钱已经到公司账上，就差达人点一下。这一块放在结算表上面，
   用橙色描边跟下面的常规表格分开——它是"需要你现在去推一下"的东西，
   不是一张只用来看的表。 */
.stuck-card {
  border: 1px solid #e5c79b;
  background: #fcfdff;
}
.stuck-card .table-tools h3 {
  color: #875f26;
}
.stuck-card .notice.slim {
  margin: 0 14px 10px;
}
.stuck-card td .cell-sub {
  white-space: normal;
}
.stuck-card .row-actions {
  white-space: nowrap;
}

/* 结算表「达人确认」格里的催确认按钮，跟徽标挤在一行太窄，换行显示 */
.stuck-card td,
[data-scope="settlement"] td {
  vertical-align: top;
}
[data-scope="settlement"] td button.tiny.ghost {
  margin-top: 4px;
}

/* ---- 批量登记回款的清单（回款弹窗内）---- */
.rc-bulk-list label {
  display: block;
  margin-bottom: 6px;
  font-size: 13px;
  color: #68645c;
}
.rc-bulk-rows {
  max-height: 190px;
  overflow: auto;
  border: 1px solid var(--line, #eae8e4);
  border-radius: 10px;
  background: #f9fbff;
}
.rc-bulk-row {
  display: grid;
  grid-template-columns: 120px 90px 1fr auto;
  gap: 10px;
  align-items: center;
  padding: 7px 12px;
  font-size: 13px;
  border-bottom: 1px solid #f3f1ed;
}
.rc-bulk-row:last-child {
  border-bottom: none;
}
.rc-bulk-row span:first-child {
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 12px;
  color: #7a766c;
}
.rc-bulk-row .muted {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.rc-bulk-row strong {
  font-variant-numeric: tabular-nums;
}
.rc-bulk-sum {
  display: flex;
  justify-content: space-between;
  padding: 8px 12px;
  border-top: 1px solid var(--line, #eae8e4);
  background: #f7f6f3;
  font-size: 13px;
}
@media (max-width: 760px) {
  .rc-bulk-row {
    grid-template-columns: 1fr auto;
  }
  .rc-bulk-row .muted {
    grid-column: 1 / -1;
  }
}

/* 回款页的批量条：和订单页共用 .bulk-bar，只补一个金额合计的间距 */
#rcBulkBar #rcBulkSum {
  margin-right: auto;
}

/* 达人端：确认之后单子又变了，要说清楚为什么还要再确认一次 */
.h5-restale {
  margin: 0 0 8px;
  padding: 8px 10px;
  border-radius: 8px;
  background: #fdf4f3;
  border: 1px solid #f2cac7;
  color: #9d2a2d;
  font-size: 13px;
  line-height: 1.5;
}

/* ---- 星图返款抵扣（2026-09-22）----
   抵扣是"从应付里减掉"，所有负数用同一个颜色，扫一眼就知道哪几处是减项。 */
.down {
  color: #b54849;
}

/* 结算表加了「星图返款抵扣」和「公司实付」两列，11 列压不进 1160px */
[data-scope="settlement"] table {
  min-width: 1280px;
}
[data-scope="settlement"] .cell-sub,
[data-scope="payments"] .cell-sub {
  white-space: normal;
}

/* 订单详情里的抵扣说明。已核销是绿的（这笔结清了），
   只是排进计划是橙的（还没落定，结算单撤回就作废） */
.offset-note {
  margin: 10px 0;
  padding: 10px 12px;
  border-radius: 10px;
  background: #f1fbf3;
  border: 1px solid #cbded3;
  display: grid;
  gap: 4px;
  font-size: 13px;
  line-height: 1.55;
}
.offset-note b {
  color: #436653;
}
.offset-note span {
  color: #54655b;
}
.offset-note.plan {
  background: #fbfbf9;
  border-color: #e5c79b;
}
.offset-note.plan b {
  color: #875f26;
}
.offset-note.plan span {
  color: #715a39;
}
.pay-line.offset-line strong {
  color: #b54849;
}

/* ---- 达人端对账单的抵扣明细 ----
   达人看到的实付比稿费合计少一截，必须把减了什么、减了多少列出来，
   不然第一反应是公司克扣。 */
.h5-offset {
  margin: 10px 0 0;
  padding: 10px 12px;
  border-radius: 12px;
  background: #fbf9f4;
  border: 1px solid #ebd6be;
}
.h5-offset-head {
  display: grid;
  gap: 2px;
  margin-bottom: 8px;
}
.h5-offset-head b {
  font-size: 14px;
  color: #b34443;
}
.h5-offset-head small {
  color: #826c52;
  font-size: 12px;
  line-height: 1.5;
}
.h5-offset-row {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 12px;
  padding: 6px 0;
  border-top: 1px dashed #e9d9c5;
  font-size: 13px;
}
.h5-offset-row span {
  display: grid;
  gap: 2px;
}
.h5-offset-row small {
  color: #958674;
  font-size: 11px;
}
.h5-offset-row b {
  color: #bf3e3f;
  white-space: nowrap;
}
.h5-offset-sum {
  display: flex;
  justify-content: space-between;
  margin-top: 8px;
  padding-top: 8px;
  border-top: 1px solid #e9d9c5;
  font-size: 13px;
}
.h5-offset-sum b {
  color: #bf3e3f;
}
.h5-net {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 12px;
  margin-top: 10px;
  padding: 10px 12px;
  border-radius: 12px;
  background: #f7f5f0;
  border: 1px solid #f0dbd0;
}
.h5-net span {
  font-size: 12px;
  color: #63615c;
}
.h5-net strong {
  font-size: 17px;
  color: #262421;
}
.h5-owe-left {
  margin: 8px 0 0;
  font-size: 12px;
  line-height: 1.55;
  color: #b34443;
}

/* 达人库的归属负责人下拉。指派是轻动作，直接在格子里换人，
   不开弹窗——开弹窗人就懒得维护，结果整列空着。 */
.keeper-pick {
  width: 100%;
  max-width: 150px;
  height: 30px;
  padding: 0 6px;
  border: 1px solid var(--line, #eae8e4);
  border-radius: 8px;
  background: #ffffff;
  font-size: 13px;
  color: #272622;
}
.keeper-pick:hover {
  border-color: #c8c5c0;
}
[data-scope="talents"] td .cell-sub {
  white-space: normal;
}

/* 达人库加到 12 列，压到 1400px 以下表头会被截成「等⋯」「在手订⋯」。
   宁可横向滚动，也不要让人猜这一列是什么。 */
[data-scope="talents"] table {
  min-width: 1560px;
}

/* 建单弹窗里由别的字段推出来的只读格（负责岗位）。
   做成和输入框一样高、但明显不是输入框——灰底无边框，一眼知道点了也没用。 */
.derived-field {
  height: 38px;
  display: flex;
  align-items: center;
  padding: 0 12px;
  border-radius: 10px;
  background: #f7f6f3;
  color: #272622;
  font-size: 14px;
  font-weight: 600;
}

/* ===== 投流项目 · 达人卡与作品墙（2026-09-22） =====
   原来项目详情里作品是一张平表，5 位达人 × 8 条 = 40 行混排，
   而且只有一个截断到 34 个字符的裸链接。现在按达人分组、封面直接点开作品。 */
.slim-card {
  padding-bottom: 6px;
  margin-bottom: 10px;
}
.tal-card {
  margin-bottom: 10px;
  padding: 13px 15px;
}
.tal-head {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}
.tal-who b {
  font-size: 15px;
}
.tal-who small {
  display: block;
  color: var(--muted);
  font-size: 11.5px;
  margin-top: 1px;
}
.tal-prog {
  display: flex;
  align-items: baseline;
  gap: 6px;
}
.tal-prog small {
  color: var(--muted);
  font-size: 11.5px;
}
.tal-acts {
  margin-left: auto;
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}
.tal-todo {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
  margin-top: 9px;
}
/* 本月进度徽章：够了绿、交了一部分黄、一条没交灰 */
.ad-mini {
  display: inline-block;
  padding: 2px 9px;
  border-radius: 999px;
  font-size: 12.5px;
  background: var(--soft);
  color: var(--muted);
}
.ad-mini b {
  font-size: 14px;
  color: var(--ink);
}
.ad-mini.ok {
  background: rgba(70, 142, 94, 0.1);
  color: var(--green);
}
.ad-mini.ok b {
  color: var(--green);
}
.ad-mini.part {
  background: rgba(183, 128, 40, 0.1);
  color: var(--orange);
}
.ad-mini.part b {
  color: var(--orange);
}

.wk-wall {
  display: flex;
  gap: 9px;
  flex-wrap: wrap;
  margin-top: 11px;
}
.wk-empty {
  font-size: 12.5px;
  padding: 10px 0;
}
.wk-tile {
  width: 104px;
}
.wk-tile.off {
  opacity: 0.45;
}
.wk-cover {
  position: relative;
  display: block;
  width: 104px;
  height: 138px;
  border-radius: 9px;
  overflow: hidden;
  border: 1px solid var(--line);
  background: var(--soft);
}
.wk-cover img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
/* 没传封面时的占位：同一个产品永远同一个颜色，扫一眼能分组 */
.wk-ph {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  font-size: 22px;
  font-weight: 700;
  color: hsl(var(--h) 48% 38%);
  background: linear-gradient(
    150deg,
    hsl(var(--h) 62% 92%),
    hsl(var(--h) 52% 84%)
  );
}
.wk-cover:hover {
  border-color: var(--blue);
}
.wk-badge {
  position: absolute;
  left: 5px;
  bottom: 5px;
  font-style: normal;
  font-size: 10.5px;
  line-height: 1;
  padding: 3px 6px;
  border-radius: 6px;
  background: rgba(25, 24, 22, 0.72);
  color: #ffffff;
  backdrop-filter: blur(2px);
}
.wk-badge.green {
  background: rgba(70, 142, 94, 0.88);
}
.wk-badge.orange {
  background: rgba(183, 128, 40, 0.9);
}
.wk-badge.red {
  background: rgba(189, 59, 64, 0.88);
}
.wk-meta {
  display: flex;
  justify-content: space-between;
  gap: 4px;
  margin-top: 4px;
  font-size: 11px;
  color: var(--muted);
}
.wk-meta b {
  color: var(--ink);
  font-weight: 600;
}
.wk-note {
  margin: 3px 0 0;
  font-size: 10.5px;
  color: var(--red);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.wk-acts {
  display: flex;
  gap: 4px;
  margin-top: 5px;
}
.wk-acts .tiny {
  flex: 1;
  padding: 3px 0;
  font-size: 11px;
}
.tal-foot {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
  margin-top: 11px;
  padding-top: 9px;
  border-top: 1px solid var(--line);
  font-size: 12px;
}
.tal-money {
  margin-left: auto;
  color: var(--muted);
}
.tal-money b {
  color: var(--ink);
}
/* 提交作品弹窗里的封面预览 */
.ad-cover-pv {
  max-width: 150px;
  border-radius: 8px;
  display: block;
  margin-bottom: 6px;
}
@media (max-width: 720px) {
  .wk-tile,
  .wk-cover {
    width: 84px;
  }
  .wk-cover {
    height: 112px;
  }
  .tal-money {
    margin-left: 0;
  }
}

/* 加达人弹窗：复用建单那套 .lib-* 列表，另加「已选」这一行 */
#adLibList {
  max-height: 260px;
}
.picked-row {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  align-items: center;
  min-height: 26px;
}
.lib-x {
  border: 0;
  background: transparent;
  color: inherit;
  cursor: pointer;
  font-size: 13px;
  line-height: 1;
  padding: 0 0 0 4px;
  opacity: 0.6;
}
.lib-x:hover {
  opacity: 1;
}

/* ---- 品牌工作台「作品与链接」：一面墙看完所有链接（2026-09-22） ---- */
.lk-filters {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
  padding: 9px 16px;
  border-bottom: 1px solid var(--line);
  background: #f9fbff;
}
.lk-flabel {
  font-size: 12px;
  color: var(--muted);
  margin-left: 4px;
}
.lk-flabel:first-child {
  margin-left: 0;
}
.lk-chip {
  border: 1px solid var(--line);
  background: #ffffff;
  border-radius: 999px;
  padding: 4px 11px;
  font-size: 12px;
  color: var(--ink);
  cursor: pointer;
}
.lk-chip:hover {
  border-color: var(--blue);
}
.lk-chip.on {
  background: var(--blue);
  border-color: var(--blue);
  color: #ffffff;
}
.lk-sel-f {
  max-width: 170px;
}
/* 批量条：和订单页的 .bulk-bar 一个样，勾了才出现 */
.lk-bar {
  display: none;
  align-items: center;
  gap: 10px;
  padding: 9px 16px;
  border-bottom: 1px solid var(--line);
  background: #f6f4f0;
  font-size: 12px;
  flex-wrap: wrap;
}
.lk-bar.on {
  display: flex;
}
.lk-bar b {
  font-size: 14px;
}
.lk-bar input[type="date"] {
  padding: 4px 8px;
  border: 1px solid var(--line);
  border-radius: 7px;
  font-size: 12px;
  background: #ffffff;
}
.lk-wall {
  padding: 12px 16px 4px;
  margin-top: 0;
}
.lk-tile {
  position: relative;
  width: 124px;
}
.lk-tile .wk-cover {
  width: 124px;
  height: 164px;
}
.lk-tile.picked .wk-cover {
  border-color: var(--blue);
  box-shadow: 0 0 0 2px var(--blue);
}
.lk-pick {
  position: absolute;
  top: 5px;
  left: 5px;
  z-index: 2;
  width: 22px;
  height: 22px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 6px;
  background: rgba(255, 255, 255, 0.86);
  cursor: pointer;
}
.lk-pick input {
  cursor: pointer;
  margin: 0;
}
/* 来源标签：商单和投流两条线在同一面墙上，一眼要能分开 */
.lk-src {
  position: absolute;
  top: 5px;
  right: 5px;
  font-style: normal;
  font-size: 10.5px;
  line-height: 1;
  padding: 3px 6px;
  border-radius: 6px;
  color: #ffffff;
  background: rgba(47, 77, 141, 0.9);
}
.lk-src.ad {
  background: rgba(78, 105, 164, 0.92);
}
.lk-src.inline {
  position: static;
  display: inline-block;
}
.lk-sub {
  display: block;
  margin-top: 2px;
  font-size: 10.5px;
  color: var(--muted);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.lk-sels {
  display: grid;
  gap: 3px;
  margin-top: 5px;
}
.lk-sels .cell-select {
  font-size: 11px;
  padding: 3px 4px;
  width: 100%;
}
th.lk-pick-td,
td.lk-pick-td {
  width: 34px;
  text-align: center;
  padding-left: 10px;
  padding-right: 0;
}
tr.picked > td {
  background: #f6f4f0;
}
@media (max-width: 720px) {
  .lk-tile,
  .lk-tile .wk-cover {
    width: 96px;
  }
  .lk-tile .wk-cover {
    height: 128px;
  }
}

/* 达人端「我的作品」：同一面墙，手机上一行三张 */
.h5-works-head {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  font-size: 13px;
}
.h5-works-head span {
  color: var(--muted);
  font-size: 11.5px;
}
.h5-wall {
  gap: 8px;
  margin-top: 9px;
}
.h5-wall .wk-tile,
.h5-wall .wk-cover {
  width: 88px;
}
.h5-wall .wk-cover {
  height: 117px;
}
.wk-lock {
  display: block;
  margin-top: 4px;
  font-size: 10.5px;
  color: var(--muted);
}
.h5-works-more {
  margin-top: 9px;
}

/* 订单详情里就地改派负责人的下拉，和 .inline-num 同一副长相 */
.inline-sel {
  padding: 4px 8px;
  border: 1px solid var(--line);
  border-radius: 8px;
  font-weight: 600;
  color: var(--ink);
  background: #ffffff;
  max-width: 130px;
}
.inline-sel:focus {
  outline: none;
  border-color: var(--blue);
}

/* ---- 品牌工作台第一屏：要你处理 + 这批合作走到哪了（2026-09-22） ---- */
.brand-act {
  padding: 14px 18px 16px;
  margin-bottom: 12px;
  border-left: 3px solid var(--orange, #b78028);
}
.brand-act.done {
  border-left-color: var(--green, #468e5e);
}
.ba-head {
  display: flex;
  align-items: flex-start;
  gap: 12px;
}
.ba-head b {
  font-size: 16px;
}
.ba-head small {
  display: block;
  color: var(--muted);
  font-size: 12px;
  margin-top: 2px;
}
.ba-count {
  margin-left: auto;
  flex: none;
  padding: 3px 11px;
  border-radius: 999px;
  background: rgba(183, 128, 40, 0.12);
  color: var(--orange, #b78028);
  font-size: 12.5px;
  font-weight: 600;
}
.ba-count.ok {
  background: rgba(70, 142, 94, 0.12);
  color: var(--green, #468e5e);
}
.ba-list {
  display: grid;
  gap: 7px;
  margin-top: 12px;
}
/* 一件事一行，整行可点；左边是数字，右边是动作，中间说清不做会怎样 */
.ba-row {
  display: flex;
  align-items: center;
  gap: 13px;
  width: 100%;
  text-align: left;
  padding: 10px 13px;
  border: 1px solid var(--line);
  border-radius: 11px;
  background: #ffffff;
  cursor: pointer;
}
.ba-row:hover {
  border-color: var(--blue);
  background: #fbfbf9;
}
.ba-n {
  flex: none;
  min-width: 44px;
  font-style: normal;
  font-size: 22px;
  font-weight: 700;
  line-height: 1;
  color: var(--orange, #b78028);
  font-variant-numeric: tabular-nums;
}
.ba-n em {
  font-style: normal;
  font-size: 11.5px;
  font-weight: 500;
  margin-left: 2px;
}
.ba-t {
  flex: 1;
  min-width: 0;
}
.ba-t b {
  display: block;
  font-size: 13.5px;
}
.ba-t small {
  display: block;
  color: var(--muted);
  font-size: 11.5px;
  margin-top: 2px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.ba-go {
  flex: none;
  font-style: normal;
  font-size: 12.5px;
  color: var(--blue);
  font-weight: 600;
}
.ba-sum {
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px solid var(--line);
  font-size: 12.5px;
  color: var(--muted);
}

.brand-chain {
  padding: 14px 18px 16px;
  margin-bottom: 14px;
}
.bc-head {
  display: flex;
  align-items: flex-start;
  gap: 12px;
}
.bc-head b {
  font-size: 15px;
}
.bc-head small {
  display: block;
  color: var(--muted);
  font-size: 12px;
  margin-top: 2px;
}
.bc-stuck {
  margin-left: auto;
  flex: none;
  padding: 4px 11px;
  border-radius: 999px;
  background: rgba(183, 128, 40, 0.12);
  color: var(--orange, #b78028);
  font-size: 12.5px;
}
.bc-stuck b {
  font-size: 12.5px;
}
.bc-stuck.ok {
  background: rgba(70, 142, 94, 0.12);
  color: var(--green, #468e5e);
}
.bc-steps {
  display: flex;
  align-items: center;
  gap: 0;
  margin-top: 13px;
}
.bc-step {
  flex: 1;
  min-width: 0;
  text-align: left;
  padding: 10px 13px;
  border: 1px solid var(--line);
  border-radius: 11px;
  background: #ffffff;
  cursor: pointer;
}
.bc-step:hover {
  border-color: var(--blue);
}
.bc-step b {
  display: block;
  font-size: 12.5px;
  color: var(--muted);
  font-weight: 500;
}
.bc-step i {
  display: block;
  font-style: normal;
  font-size: 19px;
  font-weight: 700;
  line-height: 1.25;
  font-variant-numeric: tabular-nums;
}
.bc-step small {
  display: block;
  font-size: 11px;
  color: var(--muted);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.bc-step.ok i {
  color: var(--green, #468e5e);
}
.bc-step.ok b {
  color: var(--green, #468e5e);
}
/* 当前卡点：整条链上只会有一个，给足对比度 */
.bc-step.stuck {
  border-color: var(--orange, #b78028);
  background: #fcfbfa;
}
.bc-step.stuck i,
.bc-step.stuck b {
  color: var(--orange, #b78028);
}
.bc-step.none i,
.bc-step.none small {
  color: var(--muted);
}
.bc-line {
  flex: none;
  width: 18px;
  height: 1px;
  background: var(--line);
}

/* 页签降级成次级导航：第一屏已经把"该做什么"说完了，
   这一排只是"想单独看哪一项"，不该和上面抢视觉权重 */
.brand-tabs.sub {
  align-items: center;
  flex-wrap: wrap;
  gap: 6px;
}
.brand-tabs.sub .bt-label {
  font-size: 12px;
  color: var(--muted);
  margin-right: 2px;
}
.brand-tabs.sub button {
  padding: 5px 11px;
  font-size: 12.5px;
  border-radius: 999px;
  gap: 6px;
}
.brand-tabs.sub button em {
  font-size: 10.5px;
  padding: 1px 6px;
  color: var(--muted);
}
.brand-tabs.sub button.active {
  font-weight: 600;
}
.brand-tabs.sub button.active em {
  color: #ffffff;
}

/* 寄样：地址默认折起来，真要寄的那一刻才展开 */
.addr-fold summary {
  cursor: pointer;
  list-style: none;
  display: flex;
  align-items: baseline;
  gap: 8px;
}
.addr-fold summary::-webkit-details-marker {
  display: none;
}
.addr-fold summary::after {
  content: "地址 ⌄";
  font-size: 11px;
  color: var(--blue);
}
.addr-fold[open] summary::after {
  content: "收起 ⌃";
}
.addr-fold summary b {
  font-size: 13px;
}
.addr-fold summary span {
  font-size: 11.5px;
  color: var(--muted);
}
.addr-fold p {
  margin: 5px 0 0;
  font-size: 11.5px;
  color: var(--muted);
  line-height: 1.5;
}
/* 单号是这一页唯一要品牌方动手的东西，给够宽度 */
.ship-cell .express-add input {
  min-width: 170px;
}

@media (max-width: 900px) {
  .bc-steps {
    flex-wrap: wrap;
    gap: 7px;
  }
  .bc-step {
    flex: 1 1 44%;
  }
  .bc-line {
    display: none;
  }
}

/* ── 业务驾驶舱（2026-09-22 重做：数据摆全 + 每个数都能点开）─────────── */

/* 顶上的经营横幅。四个数是同一句话的四个部分，所以放一条带子里，
   不拆成四张白卡。 */
.biz-hero {
  border-radius: 16px;
  padding: 16px 20px 18px;
  margin-bottom: 14px;
  background: linear-gradient(118deg, #4a4842 0%, #27427c 46%, #294480 100%);
  box-shadow: 0 14px 34px rgba(75, 72, 66, 0.26);
  color: #ffffff;
}
.bh-head {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  font-size: 12px;
  letter-spacing: 0.4px;
  opacity: 0.82;
  margin-bottom: 12px;
}
.bh-head em {
  font-style: normal;
  font-variant-numeric: tabular-nums;
}
.bh-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1px;
  background: rgba(255, 255, 255, 0.16);
  border-radius: 12px;
  overflow: hidden;
}
.bh-cell {
  display: flex;
  flex-direction: column;
  gap: 5px;
  align-items: flex-start;
  padding: 13px 16px 14px;
  border: 0;
  background: rgba(255, 255, 255, 0.06);
  color: inherit;
  text-align: left;
  cursor: pointer;
  transition: background var(--duration-quick) var(--ease-smooth-out);
}
.bh-cell:hover {
  background: rgba(255, 255, 255, 0.18);
}
.bh-label {
  font-size: 12px;
  opacity: 0.8;
}
.bh-num {
  font-size: 27px;
  font-weight: 800;
  letter-spacing: -0.6px;
  font-variant-numeric: tabular-nums;
  line-height: 1.1;
}
.bh-note {
  font-size: 11px;
  opacity: 0.85;
}
.bh-note.good {
  color: #c3e4d1;
}
.bh-note.bad {
  color: #f9c6c2;
}

/* 分段小标题：把一屏数分成"资金 / 结构 / 执行"，不然一眼全是卡片 */
.biz-sec {
  display: flex;
  align-items: baseline;
  gap: 9px;
  margin: 16px 2px 9px;
  font-size: 13px;
  font-weight: 700;
  color: var(--ink);
}
.biz-sec small {
  font-size: 11px;
  font-weight: 500;
  color: var(--muted);
}

/* 可点的 KPI 卡。整张卡是按钮，右下角挂一句「看明细 →」，hover 才显。 */
.kpi-live {
  position: relative;
  border: 1px solid var(--line);
  font: inherit;
  text-align: left;
  cursor: pointer;
  width: 100%;
  transition:
    transform var(--duration-quick) var(--ease-smooth-out),
    box-shadow var(--duration-quick) var(--ease-smooth-out);
}
.kpi-live:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow);
}
.kpi-go {
  position: absolute;
  right: 13px;
  bottom: 12px;
  font-style: normal;
  font-size: 11px;
  color: var(--blue);
  opacity: 0;
  transition: opacity var(--duration-quick) var(--ease-smooth-out);
}
.kpi-live:hover .kpi-go {
  opacity: 1;
}

/* 趋势柱：整根柱子是按钮，柱子里那一截深色是毛利 */
/* 趋势图图例：成交 / 毛利，色块与柱子同色（2026-10-08） */
.trend-head-r {
  display: flex;
  align-items: center;
  gap: 12px;
}
.trend-legend .lg-rev {
  background: #cdd7eb;
}
.trend-legend .lg-gross {
  background: var(--pro-clay, #444749);
}
.trend-bars .barcol {
  border: 0;
  background: none;
  padding: 0;
  cursor: pointer;
}
.trend-bars .barcol:hover .bar {
  filter: brightness(1.08);
}
.bar-in {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  background: #4b4842;
  border-radius: 0 0 2px 2px;
  opacity: 0.85;
}
/* 毛利率行的列宽必须和 .bars 的柱子对齐：同样的 flex + gap + 左右 padding */
.trend-rate {
  display: flex;
  gap: 18px;
  padding: 10px 8px 2px;
}
.trend-rate span {
  flex: 1;
  text-align: center;
  font-size: 12px;
  font-weight: 600;
}
.trend-rate span.ok {
  color: var(--green);
}
.trend-rate span.warn {
  color: var(--orange);
}
.trend-rate span.muted {
  color: var(--muted);
  font-weight: 500;
}

/* 账龄三档 + 排行榜共用的横条行 */
.aging,
.rank {
  display: grid;
  gap: 7px;
  padding-top: 4px;
}
.age-row,
.rank-row {
  display: grid;
  grid-template-columns: 5.5em 1fr auto auto;
  align-items: center;
  gap: 10px;
  width: 100%;
  padding: 7px 8px;
  border: 0;
  border-radius: 8px;
  background: none;
  font: inherit;
  text-align: left;
  cursor: pointer;
  transition: background var(--duration-quick) var(--ease-smooth-out);
}
.rank-row {
  grid-template-columns: 7.5em 1fr auto auto;
}
.age-row:hover,
.rank-row:hover {
  background: var(--soft);
}
.age-lab,
.rk-name {
  font-size: 12px;
  color: var(--ink);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.age-lab i {
  width: 8px;
  height: 8px;
  border-radius: 2px;
  display: inline-block;
  margin-right: 6px;
}
.rk-role {
  font-style: normal;
  font-size: 10px;
  color: var(--muted);
  margin-left: 5px;
}
.age-bar,
.rk-bar {
  height: 8px;
  border-radius: 5px;
  background: #f4f2ee;
  overflow: hidden;
}
.age-bar em,
.rk-bar em {
  display: block;
  height: 100%;
  border-radius: 5px;
  background: var(--blue);
  min-width: 3px;
}
.age-row b,
.rank-row b {
  font-size: 12px;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}
.age-row small,
.rank-row small {
  font-size: 10px;
  color: var(--muted);
  min-width: 2.6em;
  text-align: right;
}

/* 合作类型环形图的图例变成按钮 */
.listleg button {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  width: 100%;
  padding: 5px 6px;
  border: 0;
  border-radius: 7px;
  background: none;
  font: inherit;
  font-size: 11px;
  text-align: left;
  cursor: pointer;
}
.listleg button:hover {
  background: var(--soft);
}
.listleg button small {
  color: var(--muted);
  min-width: 2.8em;
  text-align: right;
}

/* 要你拍板的 */
.boss-todo .empty {
  padding: 22px 16px;
}
.bt-row {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: center;
  gap: 2px 14px;
  width: 100%;
  text-align: left;
  padding: 13px 14px;
  margin-top: 8px;
  border: 1px solid var(--line);
  border-left: 3px solid var(--blue);
  border-radius: 10px;
  background: #ffffff;
  cursor: pointer;
  transition: background var(--duration-quick) var(--ease-smooth-out);
}
.bt-row:first-of-type {
  margin-top: 2px;
}
.bt-row:hover {
  background: var(--soft);
}
.bt-row.bad {
  border-left-color: var(--red);
}
.bt-main {
  font-size: 15px;
  font-weight: 700;
  color: var(--ink);
}
.bt-row small {
  grid-column: 1;
  font-size: 12px;
  color: var(--muted);
}
.bt-row i {
  grid-row: 1 / span 2;
  grid-column: 2;
  font-style: normal;
  font-size: 12px;
  color: var(--blue);
  white-space: nowrap;
}
.bt-row.bad i {
  color: var(--red);
}

/* ── 钻取抽屉 ──────────────────────────────────────────────
   点大屏上任何一个数，右边滑出这个数背后的每一张单。 */
.drill-mask {
  position: fixed;
  inset: 0;
  z-index: 70;
  background: rgba(30, 29, 27, 0.42);
  display: flex;
  justify-content: flex-end;
}
.drill-panel {
  width: min(880px, 94vw);
  height: 100%;
  background: #ffffff;
  display: flex;
  flex-direction: column;
  box-shadow: -18px 0 46px rgba(45, 44, 40, 0.2);
  animation: drillIn var(--duration-fast) var(--ease-smooth-out);
}
@keyframes drillIn {
  from {
    transform: translateX(3%);
    opacity: 0.4;
  }
}
.drill-top {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 16px;
  padding: 18px 20px 14px;
  border-bottom: 1px solid var(--line);
}
.drill-top h3 {
  margin: 0 0 4px;
  font-size: 17px;
}
.drill-top p {
  margin: 0;
  font-size: 12px;
  color: var(--muted);
}
.drill-top .close {
  border: 0;
  background: none;
  font-size: 22px;
  line-height: 1;
  color: var(--muted);
  cursor: pointer;
}
.drill-body {
  flex: 1;
  overflow: auto;
  padding: 14px 20px 24px;
}
.drill-tb {
  width: 100%;
  border-collapse: collapse;
  font-size: 12px;
}
.drill-tb th {
  text-align: left;
  padding: 8px 10px;
  color: var(--muted);
  font-weight: 600;
  border-bottom: 1px solid var(--line);
  white-space: nowrap;
}
.drill-tb td {
  padding: 9px 10px;
  border-bottom: 1px solid #f7f6f3;
}
.drill-tb tbody tr {
  cursor: pointer;
}
.drill-tb tbody tr:hover {
  background: var(--soft);
}
.drill-tb .r {
  text-align: right;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.drill-tb .mono {
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 11px;
  color: var(--muted);
}
.drill-tb tfoot td {
  padding: 10px;
  font-weight: 700;
  border-top: 1px solid var(--line);
  border-bottom: 0;
}

@media (max-width: 900px) {
  .bh-grid {
    grid-template-columns: repeat(2, 1fr);
  }
  .bh-num {
    font-size: 22px;
  }
  .trend-rate {
    gap: 8px;
    padding: 8px 4px 2px;
  }
  .trend-rate span {
    font-size: 11px;
  }
  .bt-row {
    grid-template-columns: 1fr;
  }
  .bt-row i {
    grid-row: auto;
    grid-column: 1;
    margin-top: 4px;
  }
  .drill-tb th:nth-child(4),
  .drill-tb td:nth-child(4),
  .drill-tb th:nth-child(5),
  .drill-tb td:nth-child(5) {
    display: none;
  }
}

/* 柱状图的柱子贴底。styles.css 里 .bar 写的是 margin:auto，
   在 flex 里 auto margin 会盖掉 align-items:flex-end，柱子变成垂直居中——
   一排柱子底边不齐，高低看不出来。改成只横向居中，全系统柱状图都受益。 */
.bars .bar {
  margin: 0 auto;
}

/* 1/3 宽的卡片里环形图和图例并排放不下（"线下稿费"会被拆成两行），竖着摆 */
.donutwrap.stacked {
  display: block;
}
.donutwrap.stacked .donut {
  margin: 4px auto 14px;
}
.donutwrap.stacked .listleg button span,
.donutwrap.stacked .listleg button b {
  white-space: nowrap;
}
.donutwrap.stacked .listleg button span {
  overflow: hidden;
  text-overflow: ellipsis;
}

/* ---- 投流确认（2026-09-22） ---- */
.lk-sep {
  width: 1px;
  height: 18px;
  background: var(--line);
  margin: 0 2px;
}
/* 已经确认过的：不再摆两个按钮，一行说完 + 一个「改」 */
.lk-confirmed {
  display: flex;
  align-items: baseline;
  gap: 6px;
  margin-top: 5px;
  font-size: 11px;
}
.lk-confirmed b {
  color: var(--muted);
  font-weight: 600;
}
.lk-confirmed.on b {
  color: var(--green, #468e5e);
}
.lk-confirmed .link-btn {
  font-size: 11px;
  padding: 0;
}
.lk-done {
  display: block;
  margin-top: 5px;
  font-size: 11px;
  color: var(--muted);
}
.lk-done.on {
  color: var(--green, #468e5e);
}
.lk-done.wait {
  color: var(--orange, #b78028);
}
td.lk-cf-td .wk-acts {
  margin-top: 0;
}
td.lk-cf-td .lk-confirmed,
td.lk-cf-td .lk-done {
  margin-top: 0;
}
td.lk-cf-td .tiny {
  padding: 3px 9px;
}

/* 达人端：品牌方点的那一下，落到这里 */
.h5-adtag {
  display: inline-block;
  margin-top: 3px;
  padding: 2px 8px;
  border-radius: 999px;
  font-size: 10.5px;
  background: var(--soft);
  color: var(--muted);
}
.h5-adtag.on {
  background: rgba(64, 148, 92, 0.12);
  color: var(--green, #40945c);
}
.h5-adtag.wait {
  background: rgba(196, 131, 27, 0.12);
  color: var(--orange, #c4831b);
}
.h5-adtag.off {
  background: #f2f0eb;
  color: var(--muted);
}

/* ── 系统设置（2026-09-22 第三轮：整页重做）─────────────────────────
   主张三条：人是主体不是表格行；权限是人的属性不是另一张表；
   说明文字折起来、版本信息降级成脚注。 */

/* 右上角的数据按钮组，跟标题同一行——导出导入不值得单开一张卡 */
.sys-data-btns {
  display: flex;
  gap: 7px;
  align-items: center;
}

/* 顶上那条概览：深色、一行、只放数不放话 */
.sys-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 26px;
  padding: 13px 18px;
  margin-bottom: 12px;
  border-radius: 12px;
  background: linear-gradient(110deg, #33312c 0%, #494640 100%);
  color: #d2d1cd;
  font-size: 12px;
}
.sys-bar b {
  color: #ffffff;
  font-size: 15px;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  margin-right: 2px;
}
.sys-bar-tail {
  margin-left: auto;
  opacity: 0.62;
}

/* ⓘ 展开的说明。默认收起——第一次看要，第二次起就是噪音 */
.sys-info {
  padding: 14px 18px;
  margin-bottom: 12px;
  border: 1px solid var(--line);
  border-left: 3px solid var(--blue);
  border-radius: 10px;
  background: #ffffff;
}
.sys-info p {
  margin: 0 0 9px;
  font-size: 12px;
  line-height: 1.7;
  color: var(--muted);
}
.sys-info p:last-child {
  margin-bottom: 0;
}
.sys-info b {
  color: var(--ink);
}

/* 按人看 / 按岗位看 */
.seg {
  display: inline-flex;
  padding: 3px;
  margin-bottom: 14px;
  border-radius: 10px;
  background: #f0eeea;
}
.seg button {
  padding: 7px 18px;
  border: 0;
  border-radius: 7px;
  background: none;
  font: inherit;
  font-size: 13px;
  color: var(--muted);
  cursor: pointer;
  transition:
    background var(--duration-quick) var(--ease-smooth-out),
    color var(--duration-quick) var(--ease-smooth-out);
}
.seg button.on {
  background: #ffffff;
  color: var(--ink);
  font-weight: 600;
  box-shadow: 0 1px 3px rgba(59, 57, 52, 0.13);
}

.sys-block {
  margin-bottom: 18px;
}
.sys-block-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  margin: 0 2px 10px;
}
.sys-block-head h4 {
  margin: 0;
  font-size: 13px;
  font-weight: 700;
}
.sys-block-head h4 span {
  margin-left: 9px;
  font-size: 11px;
  font-weight: 500;
  color: var(--muted);
}

/* 人卡网格。八个人摆成表格读起来像报表，摆成卡一眼扫得完 */
.pgrid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
  gap: 10px;
}
.pcard {
  display: flex;
  flex-direction: column;
  gap: 9px;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: #ffffff;
  transition:
    border-color var(--duration-quick) var(--ease-smooth-out),
    box-shadow var(--duration-quick) var(--ease-smooth-out);
}
.pcard:hover {
  box-shadow: 0 6px 18px rgba(74, 71, 65, 0.07);
}
.pcard.open {
  border-color: var(--blue);
  grid-column: 1 / -1;
}
.pcard.off {
  background: #f9fbff;
}
.pcard.off .pc-name,
.pcard.off .pc-note {
  opacity: 0.55;
}
.pc-top {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  gap: 11px;
  align-items: start;
}
.acc-mark {
  width: 34px;
  height: 34px;
  border-radius: 10px;
  display: grid;
  place-items: center;
  color: #ffffff;
  font-size: 14px;
  font-weight: 700;
}
.pc-name {
  font-size: 14px;
  font-weight: 700;
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}
.pc-note {
  font-size: 11px;
  color: var(--muted);
  margin-top: 2px;
}
/* 岗位占满整张卡的宽度：挤在中间那一列会折成两行，一排卡片高矮不齐 */
.pc-roles {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
}
.pc-roles .role-toggle {
  padding: 3px 9px;
  font-size: 11px;
}
.pc-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-top: auto;
  padding-top: 2px;
  font-size: 11px;
  color: var(--muted);
}
.pc-scope b {
  color: var(--ink);
}
.pc-perm {
  border: 1px solid var(--line);
  border-radius: 7px;
  padding: 4px 9px;
  background: #ffffff;
  font: inherit;
  font-size: 11px;
  color: var(--blue);
  white-space: nowrap;
  cursor: pointer;
}
.pc-perm:hover {
  background: var(--soft);
}
.pc-acts {
  display: flex;
  gap: 5px;
  flex: none;
}
.pc-detail {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.5fr);
  gap: 18px;
  margin-top: 4px;
  padding-top: 12px;
  border-top: 1px dashed var(--line);
}
.pc-detail h5 {
  margin: 0 0 7px;
  font-size: 11px;
  color: var(--muted);
  font-weight: 700;
}
.pc-detail h5 small {
  font-weight: 500;
  margin-left: 6px;
}
.accd-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
}
.accd-tags .tag,
.role-views .tag {
  padding: 3px 9px;
  border-radius: 6px;
  background: var(--soft);
  border: 1px solid var(--line);
  font-size: 11px;
  color: var(--ink);
}
.accd-tags .tag.ok {
  border-color: #d6e5db;
  background: #faf9f6;
  color: #486957;
}

/* 加账号的表单：折起来的，点开才占地方 */
.acc-new {
  padding: 14px;
  margin-bottom: 10px;
  border: 1px dashed var(--blue);
  border-radius: 12px;
  background: #fafcff;
}

/* 按岗位看 */
.role-pick {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  margin-bottom: 10px;
}
.role-pick .chip {
  padding: 6px 14px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: #ffffff;
  font-size: 12px;
  color: var(--muted);
  cursor: pointer;
}
.role-pick .chip:hover {
  border-color: var(--blue);
  color: var(--ink);
}
.role-pick .chip.on {
  background: var(--blue);
  border-color: var(--blue);
  color: #ffffff;
}
/* 岗位 chip 上挂人数：不点进去就知道哪个岗是空的（「主管」一直是 0） */
.role-pick .chip b {
  margin-left: 6px;
  padding: 0 6px;
  border-radius: 999px;
  background: var(--soft, #f5f3ef);
  font-size: 11px;
  font-weight: 700;
  color: var(--ink);
}
.role-pick .chip.on b {
  background: rgba(255, 255, 255, 0.24);
  color: #ffffff;
}
.role-pick .chip.empty b {
  background: transparent;
  color: var(--muted);
}
.role-add {
  padding: 5px 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
  font-size: 12px;
  color: var(--ink);
  cursor: pointer;
}
/* 岗位上的人：一人一行。用行不用卡，是因为这一块要回答的是"有几个、都是谁"，
   一眼扫下来比一排方块快。 */
.whos {
  display: flex;
  flex-direction: column;
  gap: 1px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--line);
  overflow: hidden;
}
.who-row {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  background: #ffffff;
}
.who-row.off {
  opacity: 0.55;
}
.who-id {
  min-width: 0;
  flex: 1;
}
.who-id b {
  display: block;
  font-size: 13px;
}
.who-id small {
  display: block;
  margin-top: 1px;
  font-size: 11px;
  color: var(--muted);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.who-also {
  flex: none;
  font-size: 11px;
  color: var(--blue);
}
.who-also.solo {
  color: var(--muted);
}
.who-acts {
  flex: none;
  display: flex;
  gap: 6px;
}
.role-empty {
  margin: 0;
  padding: 14px 16px;
  border: 1px dashed var(--line);
  border-radius: 10px;
  font-size: 12px;
  line-height: 1.7;
  color: var(--muted);
  background: var(--soft, #fafaf8);
}
.role-views {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
  margin: 0 2px 12px;
}
.rv-label {
  margin-right: 2px;
  font-size: 11px;
  color: var(--muted);
}
/* 汇报线分节（2026-09-22 夜）。八张人卡平铺看不出谁带谁，
   所以按商务 / 执行 / 运营 / 财务四条线切开，标题上就写明主管是谁。
   左边那条竖线是唯一的分组信号——再加边框或底色，四节摞起来会比原来更花 */
.lgrp {
  margin: 0 0 14px;
  padding-left: 12px;
  border-left: 2px solid var(--line);
}
/* 已经有人带人的线亮起来：一眼看出哪几条线还空着 */
.lgrp.has-boss {
  border-left-color: var(--blue);
}
.lgrp-head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 8px;
  margin: 0 2px 4px;
}
.lgrp-head h5 {
  margin: 0;
  font-size: 13px;
  font-weight: 700;
}
.lg-meta {
  font-size: 11px;
  color: var(--muted);
}
.lgrp-note {
  margin: 0 2px 9px;
  font-size: 11px;
  line-height: 1.6;
  color: var(--muted);
}

/* 汇报关系那一行。岗位说"能做什么"，这一行说"能看谁的"，所以贴着岗位放 */
.pc-team {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
  margin-top: 6px;
  font-size: 11px;
  color: var(--muted);
}
.pt-l {
  flex: none;
}
.pt-sel {
  padding: 3px 7px;
  border: 1px solid var(--line);
  border-radius: 7px;
  background: #ffffff;
  font-size: 11px;
  color: var(--ink);
  cursor: pointer;
  max-width: 130px;
}
.pc-team > b {
  color: var(--ink);
}
/* 一条线上只有一个人时，下拉框换成这句话——见 teamRow() */
.pt-none {
  flex: 1 1 auto;
  min-width: 0;
}
.pt-team {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 4px;
}
.pt-go {
  padding: 2px 7px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: #ffffff;
  font-size: 11px;
  color: var(--blue);
  cursor: pointer;
}
.pt-go:hover {
  border-color: var(--blue);
}
/* 带人的后果写在旁边：不写的话"汇报给"就只是个没有作用的下拉框 */
.pt-note {
  flex-basis: 100%;
  line-height: 1.6;
}

/* 兼岗说明：只在一个人真占了两个岗时出现，说清楚"加一个岗到底发生什么" */
.pc-multi {
  margin-top: 6px;
  padding: 7px 9px;
  border-radius: 8px;
  background: var(--soft, #fafaf8);
  font-size: 11px;
  line-height: 1.6;
  color: var(--muted);
}
.pc-multi b {
  color: var(--ink);
}
.perm-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: 10px;
}
.perm-grp {
  border: 1px solid var(--line);
  border-radius: 12px;
  background: #ffffff;
  padding: 12px 13px 13px;
}
.perm-grp h5 {
  margin: 0 0 9px;
  font-size: 12px;
  display: flex;
  justify-content: space-between;
  align-items: baseline;
}
.perm-grp h5 small {
  color: var(--muted);
  font-weight: 500;
  font-variant-numeric: tabular-nums;
}
.perm-row {
  display: flex;
  align-items: center;
  gap: 7px;
  padding: 3px 0;
  font-size: 12px;
  color: #b6b3ad;
}
.perm-row.on {
  color: var(--ink);
}
.perm-row i {
  font-style: normal;
  font-size: 11px;
  color: #e3e1dd;
  width: 10px;
  text-align: center;
}
.perm-row.on i {
  color: var(--green);
}

@media (max-width: 900px) {
  .pgrid {
    grid-template-columns: 1fr;
  }
  .pc-detail {
    grid-template-columns: 1fr;
    gap: 10px;
  }
  .sys-bar-tail {
    margin-left: 0;
  }
}

/* 卡片数量不固定的那一行：凑不满三张时自适应，别留 2/3 的空 */
.grid3.grid-fit {
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
}

/* 达人页签改成一人一行之后要的两个小样式（2026-09-22） */
.warn-text {
  color: var(--orange, #b78028);
  font-weight: 600;
}
td.num {
  text-align: right;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
/* 「作品记录」的筛选条复用品牌工作台那套 .lk-filters，这里只补个圆角 */
.card > .lk-filters:first-of-type {
  border-radius: 0;
}

/* ========== 结算单详情的页签 + 审批记录时间线（2026-09-22） ========== */
.pay-tabs {
  display: flex;
  gap: 6px;
  border-bottom: 1px solid var(--line);
  margin: -4px 0 14px;
}
.pay-tabs button {
  border: 0;
  background: none;
  padding: 8px 12px 9px;
  font-size: 13px;
  font-weight: 600;
  color: var(--muted);
  cursor: pointer;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
}
.pay-tabs button:hover {
  color: var(--ink);
}
.pay-tabs button.active {
  color: var(--blue);
  border-bottom-color: var(--blue);
}

/* 时间线：左边一条竖线穿过所有圆点，圆点按动作上色 */
.apv-line {
  position: relative;
  padding-left: 4px;
}
.apv-row {
  position: relative;
  padding: 0 0 14px 28px;
}
.apv-row::before {
  content: "";
  position: absolute;
  left: 9px;
  top: 20px;
  bottom: 0;
  width: 1px;
  background: var(--line);
}
.apv-row:last-child::before {
  display: none;
}
.apv-row > i {
  position: absolute;
  left: 0;
  top: 1px;
  width: 19px;
  height: 19px;
  border-radius: 50%;
  border: 1px solid var(--line);
  background: #ffffff;
  color: var(--muted);
  font-style: normal;
  font-size: 11px;
  line-height: 17px;
  text-align: center;
}
.apv-row.start > i,
.apv-row.pass > i {
  border-color: var(--green);
  background: var(--green);
  color: #ffffff;
}
.apv-row.back > i {
  border-color: var(--red);
  background: var(--red);
  color: #ffffff;
}
.apv-row.comment > i {
  border-color: var(--blue);
  color: var(--blue);
}
.apv-row.skip > i {
  border-style: dashed;
}
.apv-row.todo > i {
  border-style: dashed;
  color: #ceccc8;
}
.apv-row.todo .apv-main b {
  color: var(--muted);
  font-weight: 600;
}
.apv-main {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 8px;
  font-size: 13px;
  line-height: 20px;
}
.apv-main b {
  color: var(--ink);
}
.apv-act {
  font-size: 12px;
  color: var(--muted);
}
.apv-row.pass .apv-act,
.apv-row.start .apv-act {
  color: var(--green);
}
.apv-row.back .apv-act {
  color: var(--red);
}
.apv-who {
  font-size: 12px;
  color: var(--ink);
}
.apv-at {
  margin-left: auto;
  font-size: 12px;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.apv-note {
  margin: 5px 0 0;
  padding: 7px 10px;
  background: var(--soft);
  border-radius: 8px;
  font-size: 13px;
  line-height: 20px;
  color: var(--ink);
}
.apv-file {
  margin: 5px 0 0;
  font-size: 12px;
  color: var(--blue);
}
.apv-file small {
  display: block;
  color: var(--muted);
  font-size: 11px;
}
.apv-actions {
  display: flex;
  gap: 8px;
  margin: 12px 0 6px;
  padding-top: 12px;
  border-top: 1px dashed var(--line);
}

/* 提示条的标签是 flex 的直接子元素，正文一长就被挤成竖排一列字（2026-09-22 截图里
   看到「付款条件」变成四行）。只锁直接子级的 <b>，正文里嵌套的 <b> 不受影响。 */
.notice > b:first-child {
  flex: 0 0 auto;
  white-space: nowrap;
  align-self: flex-start;
}

/* 系统设置 →「开通外部登录」的一排按钮（2026-09-22）。
   品牌和达人可能有几十个，横着排会撑破卡片，这里换行 + 留缝。 */
.chip-row {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin: 6px 0 14px;
}
.chip-row button[disabled] {
  opacity: 0.55;
  cursor: default;
}

/* 还没写过物料、也没发过通知的项目折成一行（briefBoard 的 foldEmpty）。
   展开全是空文本框，一屏六张一模一样的空表单。 */
.brief-card.fold > summary {
  list-style: none;
  cursor: pointer;
}
.brief-card.fold > summary::-webkit-details-marker {
  display: none;
}
.brief-card.fold > summary::after {
  content: "展开填写 ⌄";
  margin-left: 10px;
  flex: none;
  color: var(--blue);
  font-size: 12px;
  font-weight: 600;
}
.brief-card.fold[open] > summary::after {
  content: "收起 ⌃";
}

/* 空页签的说明卡（brandEmptyState）。原来空了只有一行灰字，
   人看不出球在谁手里，也点不动任何东西。 */
.brand-empty {
  padding: 26px 22px 22px;
  text-align: center;
}
.brand-empty b {
  display: block;
  font-size: 15px;
}
.brand-empty p {
  max-width: 560px;
  margin: 8px auto 0;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.7;
}
.be-acts {
  display: flex;
  justify-content: center;
  gap: 8px;
  margin-top: 16px;
}

/* ===== 达人端 H5 重做（2026-09-23）：白底卡片、少说明、交作品优先 ===== */
.phone.t5 {
  --t5-bg: #f8f6f1;
  --t5-card: #ffffff;
  --t5-line: #f0eee9;
  --t5-ink: #22201d;
  --t5-sub: #93918b;
  --t5-accent: #b55531;
  --t5-grad: linear-gradient(120deg, #b55531, #be5c39);
  --t5-warn: #bb4342;
  --t5-ok: #5e9377;
  background: var(--t5-bg);
  color: var(--t5-ink);
}
.phone.t5 .phone-screen {
  padding-bottom: 150px;
}
.t5 .h5page {
  padding: 0 14px;
}
.t5-bar-top {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 18px 2px 12px;
  font-size: 17px;
}
.t5-bar-top b {
  flex: 1;
}
.t5-bar-top > span {
  font-size: 12px;
  color: var(--t5-sub);
}
.t5-back {
  border: 0;
  background: none;
  padding: 0;
  width: 26px;
  height: 26px;
  margin-left: -4px;
}
.t5 svg {
  width: 22px;
  height: 22px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.t5-link {
  border: 0;
  background: none;
  color: var(--t5-accent);
  font-size: 13px;
  padding: 0;
}

/* 首页顶部 */
.t5-me small {
  display: block;
  color: var(--t5-sub);
  font-size: 12px;
  margin-top: 2px;
}
.t5-avatar {
  width: 42px;
  height: 42px;
  border-radius: 50%;
  background: var(--t5-grad);
  color: #ffffff;
  display: grid;
  place-items: center;
  font-weight: 700;
  font-size: 17px;
  flex: none;
}
.t5-avatar.big {
  width: 54px;
  height: 54px;
  font-size: 21px;
}
.t5-bell {
  position: relative;
  border: 0;
  background: #ffffff;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  color: var(--t5-ink);
  box-shadow: 0 1px 3px rgba(30, 28, 25, 0.06);
}
.t5-bell i,
.t5-count {
  position: absolute;
  top: 4px;
  right: 3px;
  min-width: 16px;
  height: 16px;
  padding: 0 4px;
  border-radius: 8px;
  background: #c82f36;
  color: #ffffff;
  font-size: 10px;
  font-style: normal;
  line-height: 16px;
  text-align: center;
}
.t5-count {
  position: static;
  display: inline-block;
}
.t5-stats {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  background: #ffffff;
  border-radius: 16px;
  padding: 14px 4px;
}
.t5-stats div {
  text-align: center;
}
.t5-stats div + div {
  border-left: 1px solid var(--t5-line);
}
.t5-stats b {
  display: block;
  font-size: 22px;
  line-height: 1.2;
}
.t5-stats .hot b {
  color: var(--t5-accent);
}
.t5-stats small {
  color: var(--t5-sub);
  font-size: 12px;
}
.t5-alert {
  display: flex;
  align-items: center;
  gap: 8px;
  width: 100%;
  margin-top: 10px;
  border: 0;
  border-radius: 14px;
  padding: 12px 14px;
  background: #fbf5ec;
  color: #9c4442;
  text-align: left;
}
.t5-alert b {
  font-size: 14px;
}
.t5-alert span {
  flex: 1;
  font-size: 12px;
  opacity: 0.8;
}
.t5-alert svg {
  width: 16px;
  height: 16px;
}

/* 分段：任务 / 作品 / 快递 */
.t5-seg {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 4px;
  margin: 16px 0 12px;
  padding: 4px;
  background: #edebe6;
  border-radius: 12px;
}
.t5-seg button {
  border: 0;
  background: none;
  border-radius: 9px;
  padding: 8px 0;
  font-size: 14px;
  color: var(--t5-sub);
}
.t5-seg button.on {
  background: #ffffff;
  color: var(--t5-ink);
  font-weight: 600;
  box-shadow: 0 1px 3px rgba(30, 28, 25, 0.08);
}
.t5-seg small {
  margin-left: 4px;
  font-size: 11px;
  color: var(--t5-sub);
}

/* 卡片 */
.t5-card {
  background: var(--t5-card);
  border-radius: 16px;
  padding: 16px;
  margin-bottom: 12px;
  border: 1px solid transparent;
}
.t5-card.is-me {
  border-color: #f0d9cc;
}
.t5-logo {
  width: 36px;
  height: 36px;
  border-radius: 10px;
  flex: none;
  display: grid;
  place-items: center;
  font-weight: 700;
  color: hsl(var(--h, 240) 55% 45%);
  background: hsl(var(--h, 240) 70% 95%);
}
.t5-chip {
  flex: none;
  font-size: 11px;
  padding: 3px 8px;
  border-radius: 999px;
  background: #f3f1ec;
  color: #66645f;
  white-space: nowrap;
}
.t5-chip.warn {
  background: #faf3e8;
  color: var(--t5-warn);
}
.t5-chip.ok {
  background: #ebf5ee;
  color: var(--t5-ok);
}
.t5-prog {
  margin-top: 14px;
}
.t5-track {
  height: 6px;
  border-radius: 3px;
  background: #f0eee9;
  overflow: hidden;
}
.t5-track i {
  display: block;
  height: 100%;
  border-radius: 3px;
  background: var(--t5-grad);
}
.t5-btn {
  display: block;
  width: 100%;
  margin-top: 14px;
  border: 0;
  border-radius: 12px;
  padding: 11px 0;
  background: var(--t5-grad);
  color: #ffffff;
  font-size: 15px;
  font-weight: 600;
}
.t5-note,
.t5-warn {
  margin: 8px 0 0;
  font-size: 12px;
  line-height: 1.6;
  color: #66645f;
  background: #f9f7f2;
  border-radius: 10px;
  padding: 8px 10px;
}
.t5-note b {
  margin-right: 6px;
  color: var(--t5-ink);
}
.t5-warn {
  background: #fcf7ee;
  color: #9c4442;
}
.t5-kv {
  display: grid;
  grid-template-columns: 72px 1fr;
  gap: 8px;
  margin-top: 8px;
  font-size: 12px;
}
.t5-kv span {
  color: var(--t5-sub);
}
.t5-kv b {
  font-weight: 500;
  line-height: 1.5;
}
.t5-done {
  padding: 12px 16px;
  opacity: 0.85;
}
.t5-empty {
  text-align: center;
  color: var(--t5-sub);
  font-size: 13px;
  padding: 40px 0;
}
.t5-foot {
  color: var(--t5-sub);
  font-size: 11px;
  line-height: 1.6;
  padding: 0 4px;
  margin: 4px 0 16px;
}

/* 卡里的交稿区（沿用原审核 / 链接组件，只收样式） */
.t5 .h5-review,
.t5 .h5-links {
  margin-top: 12px;
  padding: 0;
  background: none;
  border: 0;
}
.t5 .h5-review-item {
  background: #f9f7f2;
  border: 0;
  border-radius: 12px;
  padding: 10px 12px;
  margin-bottom: 8px;
}
.t5 .h5-links-head {
  font-size: 13px;
  margin-bottom: 6px;
}
.t5 .h5-link-empty {
  display: none;
}
.t5 .h5-submit textarea,
.t5 .h5-submit input,
.t5 .h5-submit select {
  border-radius: 10px;
  border: 1px solid var(--t5-line);
  background: #ffffff;
  font-size: 14px;
}
.t5 .h5-submit button.primary {
  border-radius: 10px;
  background: var(--t5-grad);
  border: 0;
}

/* 列表行（我的 / 快递 / 作品 / 选择框） */
.t5-list {
  padding: 4px 16px;
}
.t5-list-head {
  display: flex;
  justify-content: space-between;
  padding: 12px 0 6px;
  font-weight: 600;
  font-size: 14px;
}
.t5-list-head small {
  color: var(--t5-sub);
  font-weight: 400;
}
.t5-row {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  min-height: 50px;
  padding: 10px 0;
  border: 0;
  border-bottom: 1px solid var(--t5-line);
  background: none;
  color: var(--t5-ink);
  text-align: left;
  font-size: 14px;
  text-decoration: none;
}
.t5-row:last-child {
  border-bottom: 0;
}
.t5-row > span {
  flex: 1;
  min-width: 0;
}
.t5-row > span b {
  display: block;
  font-weight: 500;
}
.t5-row small {
  display: block;
  color: var(--t5-sub);
  font-size: 12px;
  margin-top: 2px;
}
.t5-row em {
  font-style: normal;
  color: var(--t5-sub);
  display: flex;
  align-items: center;
  gap: 4px;
  font-size: 13px;
  text-align: right;
}
.t5-row em svg {
  width: 16px;
  height: 16px;
}
.t5-addr em {
  flex-direction: column;
  align-items: flex-end;
  max-width: 64%;
}
.t5-addr em b {
  color: var(--t5-ink);
  font-weight: 500;
}
.t5-addr > svg {
  width: 16px;
  height: 16px;
  color: var(--t5-sub);
  flex: none;
}
.t5-me {
  display: flex;
  align-items: center;
  gap: 14px;
}
.t5-me b {
  font-size: 17px;
}
.t5 .addr-edit {
  border-bottom: 1px solid var(--t5-line);
  padding: 12px 0;
  margin: 0;
  background: none;
}

/* 收益页 */
.t5-hero {
  background: var(--t5-grad);
  color: #ffffff;
  border-radius: 18px;
  padding: 18px;
}
.t5-hero small {
  display: block;
  opacity: 0.85;
  font-size: 12px;
}
.t5-hero strong {
  display: block;
  font-size: 30px;
  margin-top: 6px;
}
.t5 #hp-income .h5section,
.t5 #hp-msg .h5section {
  padding: 12px 0 0;
}
.t5 .revenue-grid,
.t5 .h5-income-part,
.t5 .statement-card,
.t5 .statement-detail,
.t5 .msg-list {
  border-radius: 14px;
}

/* 底栏、选择框 */
.t5-nav.bottomnav {
  grid-template-columns: repeat(3, 1fr);
  height: 62px;
  border-top: 1px solid var(--t5-line);
}
.t5-nav button {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 2px;
  font-size: 11px;
  color: #a3a19b;
}
.t5-nav button.active {
  color: var(--t5-accent);
}
.t5-dot {
  position: absolute;
  top: 10px;
  left: calc(50% + 8px);
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: #c82f36;
}
.t5-sheet {
  position: absolute;
  inset: 0;
  z-index: 5;
  background: rgba(25, 24, 21, 0.35);
  display: none;
  align-items: flex-end;
}
.t5-sheet.open {
  display: flex;
}
.t5-sheet-box {
  width: 100%;
  background: #ffffff;
  border-radius: 20px 20px 0 0;
  padding: 8px 18px 24px;
}
.t5-sheet-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 12px 0 4px;
  font-size: 16px;
}
.t5-act {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: 12px;
  padding: 10px 10px 10px 12px;
  border-radius: 12px;
  background: #f6f3ee;
  font-size: 13px;
  color: var(--t5-accent);
  font-weight: 600;
}
.t5-act span {
  flex: 1;
}
.t5-act button {
  border: 0;
  border-radius: 9px;
  padding: 7px 14px;
  background: var(--t5-grad);
  color: #ffffff;
  font-size: 13px;
  font-weight: 600;
  white-space: nowrap;
}
/* 作品墙：白卡里三列 */
.t5 .h5-ad-works {
  background: #ffffff;
  border-radius: 16px;
  padding: 14px 16px;
  margin: 0 0 12px;
  border: 0;
}
.t5 .h5-wall {
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
}
.t5 .wk-meta span {
  display: none;
}
.t5 .wk-meta b {
  font-size: 12px;
  font-weight: 500;
}
/* 收益页 */
.t5 #hp-income .h5section > * {
  margin-left: 0;
  margin-right: 0;
}
.t5 .billrow .money {
  white-space: nowrap;
}
.t5 .h5section {
  margin: 12px 0;
}

/* ---------- 19. 佣金对账 与 两段式账单（2026-09-23） ---------- */
.dy-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 12px;
}
.dy-bar .ck {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  color: var(--muted);
}
.dy-search {
  margin-left: auto;
  min-width: 200px;
}
.dy-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  padding: 40px 20px;
  text-align: center;
}
.dy-empty span {
  max-width: 560px;
  color: var(--muted);
  line-height: 1.7;
}
.dy-table td.num,
.dy-table th.num,
.dy-prod td.num,
.dy-prod th.num {
  text-align: right;
  white-space: nowrap;
}
.dy-row {
  cursor: pointer;
}
.dy-row:hover td {
  background: var(--soft);
}
.dy-row.open td {
  background: var(--soft);
  border-bottom-color: transparent;
}
.dy-caret {
  display: inline-block;
  width: 14px;
  color: var(--muted);
}
.dy-sub > td {
  background: var(--soft);
  padding: 4px 14px 14px 30px;
}
.dy-prod {
  width: 100%;
  background: #ffffff;
  border-radius: 10px;
}
.warn-notice {
  border-color: var(--orange);
}
.warn-text {
  color: var(--orange);
}

.bill-split {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.bill-part {
  border: 1px solid var(--line);
  border-radius: 12px;
  background: #ffffff;
  overflow: hidden;
}
.bill-part > summary {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 12px 14px;
  cursor: pointer;
  list-style: none;
}
.bill-part > summary::-webkit-details-marker {
  display: none;
}
.bill-part > summary small {
  color: var(--muted);
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.bill-part > summary strong {
  font-size: 16px;
  white-space: nowrap;
}
.bill-part > summary i {
  font-style: normal;
  font-size: 12px;
  color: var(--blue);
  white-space: nowrap;
}
.bill-part > summary i::after {
  content: " ▾";
}
.bill-part[open] > summary i::after {
  content: " ▴";
}
.bill-part[open] > summary {
  border-bottom: 1px solid var(--line);
}
.bill-no {
  display: inline-grid;
  place-items: center;
  width: 22px;
  height: 22px;
  border-radius: 6px;
  background: var(--soft);
  color: var(--blue);
  font-size: 12px;
  font-weight: 700;
  flex: none;
}
.bill-lines {
  padding: 6px 14px 10px;
}
.bill-line {
  display: flex;
  align-items: baseline;
  gap: 10px;
  padding: 7px 0;
  border-bottom: 1px dashed var(--line);
  font-size: 13px;
}
.bill-line:last-of-type {
  border-bottom: 0;
}
.bill-line > span {
  flex: 1;
  min-width: 0;
}
.bill-line > span small {
  display: block;
  color: var(--muted);
  font-size: 11px;
}
.bill-line > em {
  font-style: normal;
  color: var(--muted);
  width: 92px;
  text-align: right;
  white-space: nowrap;
}
.bill-line > b {
  width: 92px;
  text-align: right;
  white-space: nowrap;
}
.bill-head {
  font-size: 11px;
  color: var(--muted);
}
.bill-head > b {
  font-weight: 500;
}
.bill-note {
  font-size: 11px;
  margin: 8px 0 0;
}
.statement-detail .bill-split,
.h5-dy {
  margin: 10px 0;
}
@media (max-width: 480px) {
  .bill-line > em {
    width: 70px;
    font-size: 12px;
  }
  .bill-line > b {
    width: 74px;
  }
  .dy-search {
    margin-left: 0;
    min-width: 0;
    width: 100%;
  }
}

/* ============================================================
   投流项目 / 品牌工作台「项目管理」按协作台参考页重排（2026-09-23 下午）
   列表：眉题 + 大标题 + 四张统计卡 + 搜索筛选 + 项目卡
   详情：返回 → 品牌 / 项目名 / 周期 → 四个下划线页签
   ============================================================ */
.ad-ws-head,
.ad-detail-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 18px;
}
.ad-ws-head h1,
.ad-detail-head h1 {
  font-size: 28px;
  margin: 4px 0 6px;
  letter-spacing: 0.02em;
}
.ad-ws-head p,
.ad-detail-head p {
  margin: 0;
}
.ad-eyebrow {
  font-size: 11px;
  letter-spacing: 0.24em;
  color: var(--muted);
}
.ad-ws .ad-head-acts button:not(.tiny) {
  padding: 8px 16px;
  border-radius: 10px;
}
.ad-kpis {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
  margin-bottom: 16px;
}
.ad-kpi {
  background: #ffffff;
  border: 1px solid var(--line);
  border-radius: 14px;
  padding: 16px 18px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.ad-kpi span {
  color: var(--muted);
  font-size: 13px;
}
.ad-kpi b {
  font-size: 30px;
  line-height: 1;
}
.ad-kpi b small {
  font-size: 12px;
  color: var(--muted);
  font-weight: 400;
  margin-left: 6px;
}
.ad-filterbar {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: center;
}
.ad-filterbar.in-card {
  padding: 0 16px 12px;
}
.al-search {
  flex: 0 1 340px;
  min-width: 180px;
  height: 36px;
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 0 12px;
  background: #ffffff;
}
.al-sel {
  height: 36px;
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 0 10px;
  background: #ffffff;
  min-width: 110px;
}
.ad-ws .ad-grid {
  grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
  gap: 18px;
}
.ad-ws .ad-card {
  padding: 20px;
  border-radius: 16px;
}
.ad-ws .ad-card h3 {
  font-size: 17px;
  margin: 14px 0 6px;
}
.ad-ws .ad-symbol {
  width: 34px;
  height: 34px;
  border-radius: 10px;
}
.ad-ws .ad-progress-label strong small {
  color: var(--muted);
  font-weight: 400;
}
.ad-ws .ad-card-foot {
  border-top: 1px solid var(--line);
  padding-top: 12px;
  margin-top: 14px;
  align-items: center;
}
.ad-card-foot .grow {
  flex: 1;
}
.ad-go {
  font-size: 15px;
  color: var(--ink);
}
.ad-behind {
  margin-top: 18px;
}
.ad-behind > summary {
  cursor: pointer;
  list-style: none;
}
.ad-behind > summary::-webkit-details-marker {
  display: none;
}
.ad-back {
  background: none;
  border: 0;
  padding: 0;
  color: var(--muted);
  cursor: pointer;
  margin-bottom: 14px;
}
.ad-back:hover {
  color: var(--blue);
}
.ad-tabs {
  display: flex;
  gap: 28px;
  border-bottom: 1px solid var(--line);
  margin: 4px 0 18px;
}
.ad-tabs button {
  background: none;
  border: 0;
  border-bottom: 2px solid transparent;
  padding: 10px 2px;
  color: var(--muted);
  font-size: 15px;
  cursor: pointer;
  border-radius: 0;
}
.ad-tabs button.active {
  color: var(--ink);
  font-weight: 600;
  border-bottom-color: var(--purple);
}
.ad-brief {
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
  gap: 16px;
  align-items: start;
}
.ad-brief-side {
  display: grid;
  gap: 16px;
}
.ad-brief .card-head {
  display: flex;
  align-items: center;
  gap: 8px;
}
.ad-brief .card-head h3 {
  flex: 1;
}
.ad-brief .card-head .grow {
  flex: 0;
}
.ad-req .brief-text {
  white-space: pre-wrap;
  line-height: 1.8;
}
.ad-upload {
  cursor: pointer;
}
.ad-files {
  list-style: none;
  padding: 0;
  margin: 10px 0;
  display: grid;
  gap: 8px;
}
.ad-files li {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 10px;
  border: 1px solid var(--line);
  border-radius: 10px;
}
.ad-files .grow {
  flex: 1;
  min-width: 0;
  word-break: break-all;
}
.ad-todos {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  margin-top: 4px;
}
.ad-cell-sub {
  display: block;
  font-size: 11px;
  margin-top: 2px;
}
.ad-task-table .ship-info .tiny {
  margin-top: 4px;
}
.aw-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
@media (max-width: 900px) {
  .ad-kpis {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .ad-brief {
    grid-template-columns: 1fr;
  }
  .ad-ws-head,
  .ad-detail-head {
    flex-direction: column;
  }
  .ad-tabs {
    gap: 16px;
    overflow-x: auto;
  }
}
.ad-brief .chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 8px;
}

/* ============================================================
   佣金对账：总览 / 多维分析 / 原表明细 / 达人结算口径（2026-09-23 下午）
   ============================================================ */
.dy-ws {
  --dy-c0: #27427c;
  --dy-c1: #69997f;
  --dy-c2: #b68131;
  --dy-c3: #2a4683;
  --dy-c4: #4c68a6;
  --dy-c5: #a9a69f;
}
.dy-fbar {
  margin-bottom: 16px;
}
.dy-hint {
  font-size: 12px;
}
.dy-crumbs {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 6px;
}
.dy-crumbs > span {
  color: var(--muted);
}
.dy-crumb {
  border: 1px solid var(--line);
  background: #ffffff;
  border-radius: 999px;
  padding: 4px 12px;
  font-size: 12px;
  cursor: pointer;
  max-width: 280px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.dy-crumb em {
  font-style: normal;
  color: var(--muted);
  margin-right: 6px;
}
.dy-crumb.root {
  background: var(--soft);
}
.dy-crumb:hover {
  border-color: var(--blue);
}
.dy-kpis {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 12px;
  margin-bottom: 16px;
}
.dy-kpis .ad-kpi b {
  font-size: 22px;
}
.dy-kpis .ad-kpi small {
  font-size: 12px;
}
.dy-trend .card-head,
.dy-rank .card-head {
  display: flex;
  align-items: center;
  gap: 10px;
}
.dy-rank .card-head h3,
.dy-trend .card-head h3 {
  margin-right: auto;
}
.dy-cols {
  display: flex;
  align-items: flex-end;
  gap: 3px;
  height: 170px;
  padding: 10px 16px 16px;
}
.dy-col {
  flex: 1;
  min-width: 6px;
  height: 100%;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  align-items: center;
  background: none;
  border: 0;
  padding: 0;
  cursor: pointer;
}
.dy-col i {
  display: block;
  width: 100%;
  border-radius: 4px 4px 0 0;
  background: var(--blue);
  opacity: 0.78;
  transition: opacity 0.15s;
}
.dy-col:hover i {
  opacity: 1;
}
.dy-col span {
  font-size: 10px;
  color: var(--muted);
  margin-top: 4px;
}
.dy-mixes {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 18px 24px;
  padding: 18px;
  margin: 16px 0;
}
.dy-mix-head {
  display: flex;
  justify-content: space-between;
  margin-bottom: 8px;
}
.dy-mix-head small {
  color: var(--muted);
}
.dy-stack {
  display: flex;
  height: 10px;
  border-radius: 999px;
  overflow: hidden;
  gap: 2px;
}
.dy-stack button {
  border: 0;
  padding: 0;
  background: var(--c);
  cursor: pointer;
  min-width: 3px;
}
.dy-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 12px;
  margin-top: 8px;
}
.dy-legend button {
  background: none;
  border: 0;
  padding: 0;
  font-size: 12px;
  color: var(--ink);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 5px;
}
.dy-legend i {
  width: 8px;
  height: 8px;
  border-radius: 2px;
  background: var(--c);
}
.dy-legend em {
  font-style: normal;
  color: var(--muted);
}
.dy-ranks {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}
.dy-hbars {
  padding: 4px 16px 14px;
  display: grid;
  gap: 2px;
}
.dy-hbar {
  display: grid;
  grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr) auto 48px;
  align-items: center;
  gap: 10px;
  background: none;
  border: 0;
  border-radius: 8px;
  padding: 6px 6px;
  cursor: pointer;
  text-align: left;
}
.dy-hbar:hover {
  background: var(--soft);
}
.dy-hbar-k {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 13px;
}
.dy-hbar-track {
  display: block;
  height: 8px;
  border-radius: 999px;
  background: var(--soft);
  overflow: hidden;
}
.dy-hbar-track i {
  display: block;
  height: 100%;
  border-radius: 999px;
  background: var(--blue);
}
.dy-hbar b {
  font-size: 13px;
  font-variant-numeric: tabular-nums;
}
.dy-hbar small {
  color: var(--muted);
  text-align: right;
  font-size: 12px;
}
.dy-pv-tools {
  flex-wrap: wrap;
  gap: 8px;
}
.dy-pv-l {
  color: var(--muted);
  font-size: 12px;
}
.dy-presets {
  display: inline-flex;
  gap: 4px;
  flex-wrap: wrap;
}
.dy-link {
  background: none;
  border: 0;
  padding: 0;
  color: var(--blue);
  cursor: pointer;
  text-align: left;
  font: inherit;
}
.dy-link:hover {
  text-decoration: underline;
}
.dy-pv td,
.dy-pv th {
  white-space: nowrap;
}
.dy-pv td:first-child {
  max-width: 420px;
  white-space: normal;
}
.dy-share {
  min-width: 160px;
}
.dy-share .dy-hbar-track {
  display: inline-block;
  width: 100px;
  vertical-align: middle;
  margin-right: 8px;
}
.dy-share small {
  color: var(--muted);
}
.dy-pv tfoot td {
  border-top: 2px solid var(--line);
  background: var(--soft);
}
.dy-raw-wrap {
  max-height: 68vh;
  overflow: auto;
}
.dy-raw th {
  position: sticky;
  top: 0;
  z-index: 2;
  background: #fbfbf9;
  white-space: nowrap;
}
.dy-raw td {
  white-space: nowrap;
  max-width: 320px;
  overflow: hidden;
  text-overflow: ellipsis;
  font-size: 12px;
}
.dy-raw th:first-child,
.dy-raw td:first-child {
  position: sticky;
  left: 0;
  z-index: 1;
  background: #ffffff;
  box-shadow: 1px 0 0 var(--line);
}
.dy-raw th:first-child {
  z-index: 3;
  background: #fbfbf9;
}
.dy-raw th.dy-derived {
  background: #f6f4f0;
}
.dy-th {
  background: none;
  border: 0;
  padding: 0;
  font: inherit;
  color: inherit;
  cursor: pointer;
}
.dy-pager {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 16px;
  border-top: 1px solid var(--line);
}
.dy-sub-go {
  margin: 4px 0 8px;
}
@media (max-width: 1100px) {
  .dy-kpis {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  .dy-mixes,
  .dy-ranks {
    grid-template-columns: 1fr;
  }
}
/* 原表：列按内容自然撑开，横向滚动，不挤成一团 */
.dy-raw {
  width: max-content;
  min-width: 100%;
  table-layout: auto;
}
.dy-raw th,
.dy-raw td {
  min-width: 90px;
}
/* 排行条：四栏固定宽，条的起点一行行对齐 */
.dy-hbar {
  grid-template-columns: 170px minmax(60px, 1fr) 110px 46px;
}
.dy-hbar b {
  text-align: right;
}

/* ---- 佣金对账 · 经营拆解 ---- */
.dy-sec {
  padding: 22px 24px 20px;
  margin-bottom: 18px;
}
.dy-sec > header {
  display: flex;
  align-items: flex-start;
  gap: 16px;
  margin-bottom: 18px;
}
.dy-sec > header > div {
  flex: 1;
  min-width: 0;
}
.dy-sec-no {
  font-size: 30px;
  font-weight: 800;
  line-height: 1;
  color: var(--blue);
  opacity: 0.22;
  letter-spacing: -0.02em;
  min-width: 46px;
}
.dy-sec h2 {
  font-size: 20px;
  margin: 0 0 6px;
}
.dy-insight {
  margin: 0;
  font-size: 14px;
  line-height: 1.75;
  color: #494640;
}
.dy-insight b {
  color: var(--ink);
}
.dy-insight .up,
.dy-factor .up {
  color: var(--green);
}
.dy-insight .down,
.dy-factor .down {
  color: var(--red);
}
.dy-sec h4 {
  font-size: 13px;
  margin: 0 0 10px;
}
.dy-sec h4 small {
  color: var(--muted);
  font-weight: 400;
  margin-left: 6px;
}
.dy-foot {
  font-size: 12px;
  color: var(--muted);
  margin: 12px 0 0;
}
.dy-flow {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 28px;
}
/* 瀑布 */
.dy-wf {
  display: grid;
  gap: 6px;
}
.dy-wf-row {
  display: grid;
  grid-template-columns: 150px minmax(0, 1fr) 120px 64px;
  align-items: center;
  gap: 12px;
  font-size: 13px;
}
.dy-wf-k small {
  display: block;
  color: var(--muted);
  font-size: 11px;
}
.dy-wf-track {
  position: relative;
  height: 22px;
  background: var(--soft);
  border-radius: 6px;
}
.dy-wf-track i {
  position: absolute;
  top: 0;
  bottom: 0;
  border-radius: 6px;
  background: var(--blue);
}
.dy-wf-row.minus .dy-wf-track i {
  background: #e9aba6;
}
.dy-wf-row.plus .dy-wf-track i {
  background: var(--green);
}
.dy-wf-row.total .dy-wf-track i {
  background: var(--blue);
}
.dy-wf-row.keep .dy-wf-track i {
  background: var(--purple);
}
.dy-wf-row.keep {
  font-weight: 700;
}
.dy-wf-row b {
  text-align: right;
  font-variant-numeric: tabular-nums;
}
.dy-wf-row em {
  font-style: normal;
  text-align: right;
  color: var(--muted);
  font-size: 12px;
}
.dy-seg {
  display: inline-flex;
  background: var(--soft);
  border-radius: 10px;
  padding: 3px;
}
.dy-seg button {
  border: 0;
  background: none;
  padding: 6px 12px;
  border-radius: 8px;
  font-size: 12px;
  cursor: pointer;
  color: var(--muted);
}
.dy-seg button.on {
  background: #ffffff;
  color: var(--ink);
  box-shadow: 0 1px 4px rgba(37, 35, 32, 0.08);
}
/* 增长因子 */
.dy-factors {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
  margin-bottom: 20px;
}
.dy-factor {
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 14px 16px;
  display: grid;
  gap: 4px;
}
.dy-factor span {
  color: var(--muted);
  font-size: 12px;
}
.dy-factor b {
  font-size: 24px;
}
.dy-factor small {
  color: var(--muted);
}
.dy-factor em {
  font-style: normal;
  font-weight: 600;
}
.dy-factor i {
  font-style: normal;
  font-size: 12px;
  background: var(--soft);
  border-radius: 6px;
  padding: 3px 8px;
  justify-self: start;
}
.dy-movers {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}
.dy-mover {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 0 8px;
  width: 100%;
  text-align: left;
  border: 0;
  background: none;
  padding: 7px 8px;
  border-radius: 8px;
  cursor: pointer;
  border-left: 3px solid var(--green);
  margin-bottom: 4px;
}
.dy-mover.down {
  border-left-color: var(--red);
}
.dy-mover:hover {
  background: var(--soft);
}
.dy-mover span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.dy-mover small {
  grid-column: 1;
  color: var(--muted);
  font-size: 11px;
}
.dy-mover b {
  grid-row: 1 / 3;
  grid-column: 2;
  align-self: center;
}
.dy-mover.up b {
  color: var(--green);
}
.dy-mover.down b {
  color: var(--red);
}
/* 资金状态 */
.dy-stage-bar {
  display: flex;
  height: 26px;
  border-radius: 8px;
  overflow: hidden;
  gap: 2px;
  margin-bottom: 18px;
}
.dy-stage-bar button {
  border: 0;
  padding: 0;
  background: var(--c);
  cursor: pointer;
}
.dy-stage-cards {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  align-content: start;
}
.dy-stage {
  border: 1px solid var(--line);
  background: #ffffff;
  border-radius: 12px;
  padding: 12px 14px;
  text-align: left;
  display: grid;
  gap: 3px;
  cursor: pointer;
  position: relative;
}
.dy-stage:hover {
  border-color: var(--c);
}
.dy-stage i {
  width: 10px;
  height: 10px;
  border-radius: 3px;
  background: var(--c);
}
.dy-stage span {
  color: var(--muted);
  font-size: 12px;
}
.dy-stage b {
  font-size: 20px;
}
.dy-stage small {
  color: var(--muted);
}
.dy-hbar.static {
  cursor: default;
}
.dy-hbar.static:hover {
  background: none;
}
/* 帕累托 */
.dy-paretos {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 24px;
}
.dy-pareto,
.dy-quad {
  width: 100%;
  height: auto;
  overflow: visible;
}
.dy-pareto text,
.dy-quad text {
  font-size: 11px;
  fill: var(--muted);
}
.dy-pareto .ax,
.dy-quad .ax {
  stroke: var(--line);
}
.dy-pareto .guide,
.dy-quad .guide {
  stroke: #c5c3be;
  stroke-dasharray: 4 4;
}
.dy-top3 {
  display: grid;
  gap: 2px;
  margin-top: 8px;
}
.dy-top3 button {
  display: grid;
  grid-template-columns: 20px minmax(0, 1fr) auto;
  gap: 8px;
  align-items: center;
  background: none;
  border: 0;
  padding: 5px 6px;
  border-radius: 8px;
  text-align: left;
  cursor: pointer;
  font-size: 13px;
}
.dy-top3 button:hover {
  background: var(--soft);
}
.dy-top3 em {
  font-style: normal;
  color: var(--muted);
}
.dy-top3 span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
/* 四象限 */
.dy-quad-wrap {
  display: grid;
  grid-template-columns: minmax(0, 2.2fr) minmax(0, 1fr);
  gap: 24px;
}
.dy-quad .qbg.good {
  fill: rgba(105, 153, 127, 0.05);
}
.dy-quad .qbg.bad {
  fill: rgba(182, 129, 49, 0.06);
}
.dy-quad .ql {
  font-size: 12px;
  font-weight: 700;
  fill: #a9a69f;
}
.dy-quad .dot {
  cursor: pointer;
}
.dy-quad .dot circle {
  opacity: 0.72;
  stroke: #ffffff;
  stroke-width: 1.5;
}
.dy-quad .dot:hover circle {
  opacity: 1;
}
.dy-quad .dl {
  font-size: 10px;
  fill: var(--ink);
}
.dy-quad-lists {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px 12px;
  align-content: start;
}
.dy-quad-lists h4 {
  display: flex;
  align-items: center;
  gap: 6px;
}
.dy-quad-lists h4 i {
  width: 10px;
  height: 10px;
  border-radius: 50%;
}
.dy-quad-lists button {
  display: block;
  width: 100%;
  text-align: left;
  background: none;
  border: 0;
  padding: 4px 6px;
  border-radius: 6px;
  cursor: pointer;
}
.dy-quad-lists button:hover {
  background: var(--soft);
}
.dy-quad-lists span {
  display: block;
  font-size: 13px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.dy-quad-lists small {
  color: var(--muted);
  font-size: 11px;
}
/* 热力 */
.dy-heat {
  display: grid;
  grid-template-columns: minmax(0, 2.2fr) minmax(0, 1fr);
  gap: 28px;
}
.dy-heat-grid {
  display: grid;
  grid-template-columns: 40px repeat(24, minmax(0, 1fr));
  gap: 3px;
  align-items: center;
}
.dy-heat-grid .hh,
.dy-heat-grid .dd {
  font-size: 11px;
  color: var(--muted);
}
.dy-heat-grid button {
  aspect-ratio: 1;
  border: 0;
  border-radius: 4px;
  padding: 0;
  cursor: pointer;
  background: rgba(18, 49, 145, calc(0.05 + var(--a) * 0.9));
}
.dy-heat-grid button:hover {
  outline: 2px solid var(--ink);
}
.dy-hours {
  display: flex;
  align-items: flex-end;
  gap: 2px;
  height: 150px;
}
.dy-hours i {
  flex: 1;
  background: var(--blue);
  opacity: 0.75;
  border-radius: 3px 3px 0 0;
}
.dy-hours-ax {
  display: flex;
  justify-content: space-between;
  font-size: 11px;
  color: var(--muted);
  margin-top: 4px;
}
/* 退货率条：竖线是整体平均 */
.dy-hbar-track.rr {
  position: relative;
  overflow: visible;
}
.dy-hbar-track.rr i {
  background: #a45956;
}
.dy-hbar-track.rr s {
  position: absolute;
  top: -3px;
  bottom: -3px;
  width: 2px;
  background: var(--ink);
  opacity: 0.5;
}
.dy-refund-side {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
}
.dy-refund-side .dy-hbar {
  grid-template-columns: 90px minmax(40px, 1fr) 52px 60px;
}
@media (max-width: 1100px) {
  .dy-flow,
  .dy-paretos,
  .dy-quad-wrap,
  .dy-heat,
  .dy-refund-side {
    grid-template-columns: 1fr;
  }
  .dy-factors {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
.dy-sec {
  overflow: hidden;
}
.dy-refund-side .dy-hbar {
  grid-template-columns: 64px minmax(24px, 1fr) 44px 62px;
  gap: 6px;
  font-size: 12px;
}
.dy-refund-side .dy-hbar small {
  font-size: 11px;
}

/* ---- 佣金对账 · 经营拆解 v2：老板看板（2026-09-23 夜） ---- */
.dy-sec > header .dy-seg,
.dy-sec > header .dy-legend,
.dy-sec > header .dy-tipi {
  flex: none;
}
.dy-sec h2 {
  font-size: 17px;
}
.dy-insight {
  font-size: 13.5px;
  line-height: 1.6;
}
.dy-tipi {
  font-size: 11px;
  color: var(--muted);
  border: 1px solid var(--line);
  border-radius: 999px;
  padding: 2px 8px;
  cursor: help;
}
.dy-chg {
  font-style: normal;
  font-weight: 700;
  font-size: 12px;
  color: var(--muted);
  margin-left: 6px;
  white-space: nowrap;
}
.dy-chg.good {
  color: #608d75;
}
.dy-chg.bad {
  color: #bb3e42;
}
/* 顶部横幅 */
.dy-hero {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  flex-wrap: wrap;
  padding: 22px 26px;
  margin-bottom: 16px;
  border-radius: 18px;
  color: #ffffff;
  background: radial-gradient(120% 140% at 0% 0%, #27427c 0%, #302e29 55%, #1d1c19 100%);
  box-shadow: 0 10px 30px rgba(48, 46, 41, 0.25);
}
.dy-hero p {
  margin: 0 0 6px;
  font-size: 12px;
  opacity: 0.7;
  letter-spacing: 0.04em;
}
.dy-hero h2 {
  margin: 0;
  font-size: 20px;
  font-weight: 600;
}
.dy-hero h2 b {
  font-size: 30px;
  font-weight: 800;
  letter-spacing: -0.01em;
}
.dy-hero .dy-chg {
  font-size: 14px;
}
.dy-hero .dy-chg.good {
  color: #a6debf;
}
.dy-hero .dy-chg.bad {
  color: #a95553;
}
.dy-alerts {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
  max-width: 640px;
}
.dy-alerts > span {
  font-size: 12px;
  opacity: 0.65;
  margin-right: 2px;
}
.dy-alert {
  border: 1px solid rgba(255, 255, 255, 0.18);
  background: rgba(255, 255, 255, 0.08);
  color: #ffffff;
  border-radius: 999px;
  padding: 6px 12px;
  font-size: 12.5px;
  cursor: pointer;
}
.dy-alert:hover {
  background: rgba(255, 255, 255, 0.18);
}
.dy-alert i {
  font-style: normal;
  font-weight: 800;
  margin-right: 5px;
}
.dy-alert.bad i {
  color: #a95553;
}
.dy-alert.good i {
  color: #a6debf;
}
.dy-alert.warn i {
  color: #ad8746;
}
/* 指标卡 */
.dy-kpis {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
  margin-bottom: 16px;
}
.dy-kpi {
  text-align: left;
  background: #ffffff;
  border: 1px solid var(--line);
  border-radius: 14px;
  padding: 14px 16px 10px;
  cursor: pointer;
  display: grid;
  gap: 4px;
  transition: box-shadow 0.15s, border-color 0.15s;
}
.dy-kpi:hover {
  box-shadow: 0 6px 18px rgba(37, 35, 32, 0.08);
}
.dy-kpi.on {
  border-color: var(--dy-c0);
  box-shadow: 0 0 0 3px rgba(39, 66, 124, 0.14);
}
.dy-kpi > span {
  font-size: 12.5px;
  color: var(--muted);
}
.dy-kpi > b {
  font-size: 26px;
  font-weight: 800;
  letter-spacing: -0.01em;
  font-variant-numeric: tabular-nums;
}
.dy-kpi-foot {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 8px;
}
.dy-kpi-foot .dy-chg {
  margin: 0 0 4px;
}
.dy-spark {
  width: 96px;
  height: 30px;
  flex: none;
}
.dy-spark polyline {
  fill: none;
  stroke: var(--dy-c0);
  stroke-width: 1.6;
  vector-effect: non-scaling-stroke;
}
.dy-spark polygon {
  fill: var(--dy-c0);
  opacity: 0.1;
}
.dy-kpi.on .dy-spark polygon {
  opacity: 0.22;
}
/* 主趋势 */
.dy-trend {
  width: 100%;
  height: auto;
  display: block;
  font-size: 12px;
}
.dy-trend text {
  fill: var(--muted);
}
.dy-trend .guide {
  stroke: var(--line);
  stroke-dasharray: 3 4;
}
.dy-trend .cur {
  fill: none;
  stroke: var(--dy-c0);
  stroke-width: 2.6;
  stroke-linejoin: round;
}
.dy-trend .prev {
  fill: none;
  stroke: #c2c0bb;
  stroke-width: 1.8;
  stroke-dasharray: 5 5;
}
.dy-trend .peak {
  fill: var(--dy-c0);
  stroke: #ffffff;
  stroke-width: 2;
}
.dy-trend .peakt {
  fill: var(--ink);
  font-weight: 700;
  font-size: 13px;
}
.dy-trend .hit {
  cursor: pointer;
}
.dy-trend .hit rect {
  fill: transparent;
}
.dy-trend .hit line,
.dy-trend .hit circle,
.dy-trend .hit text {
  opacity: 0;
  pointer-events: none;
}
.dy-trend .hit line {
  stroke: var(--dy-c0);
  stroke-opacity: 0.35;
}
.dy-trend .hit circle {
  fill: #ffffff;
  stroke: var(--dy-c0);
  stroke-width: 2.5;
}
.dy-trend .hit text {
  fill: var(--ink);
  font-weight: 700;
  font-size: 13px;
  paint-order: stroke;
  stroke: #ffffff;
  stroke-width: 5px;
}
.dy-trend .hit:hover line,
.dy-trend .hit:hover circle,
.dy-trend .hit:hover text {
  opacity: 1;
}
.dy-legend {
  display: flex;
  gap: 14px;
  font-size: 12px;
  color: var(--muted);
}
.dy-legend span::before {
  content: "";
  display: inline-block;
  width: 18px;
  height: 0;
  border-top: 2.5px solid var(--dy-c0);
  vertical-align: middle;
  margin-right: 6px;
}
.dy-legend .prev::before {
  border-top: 2px dashed #c2c0bb;
}
/* 两栏 */
.dy-duo {
  display: grid;
  grid-template-columns: minmax(0, 1.55fr) minmax(0, 1fr);
  gap: 16px;
  align-items: start;
}
.dy-duo.even {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.dy-duo > .dy-sec {
  margin-bottom: 16px;
}
.dy-flow.one {
  grid-template-columns: 1fr;
  gap: 18px;
}
.dy-duo .dy-wf-row {
  grid-template-columns: 110px minmax(0, 1fr) 96px 52px;
  gap: 10px;
}
.dy-duo .dy-factors {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  margin-bottom: 16px;
}
.dy-duo .dy-factor {
  grid-template-columns: 1fr auto;
  align-items: baseline;
  padding: 10px 12px;
}
.dy-duo .dy-factor span,
.dy-duo .dy-factor b {
  grid-column: 1 / -1;
}
.dy-duo .dy-factor b {
  font-size: 20px;
}
.dy-duo .dy-factor .dy-chg {
  margin: 0;
}
.dy-duo .dy-movers {
  margin-top: 16px;
}
.dy-duo .dy-mover b {
  grid-row: auto;
}
/* 排行 */
.dy-rk {
  display: grid;
  gap: 2px;
}
.dy-rk-row {
  display: grid;
  grid-template-columns: 26px minmax(0, 1.4fr) minmax(40px, 1fr) 84px 48px 64px 46px 52px;
  align-items: center;
  gap: 10px;
  padding: 6px 4px;
  border-radius: 8px;
  font-size: 13px;
}
.dy-rk-row:hover {
  background: var(--soft);
}
.dy-rk-no {
  font-style: normal;
  font-weight: 800;
  color: var(--muted);
  text-align: center;
  font-size: 13px;
}
.dy-rk-no.hot {
  color: #ffffff;
  background: linear-gradient(135deg, #b78026, #b94245);
  border-radius: 7px;
  line-height: 22px;
}
.dy-rk-name {
  border: 0;
  background: none;
  text-align: left;
  padding: 0;
  cursor: pointer;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
  color: var(--ink);
  font-size: 13px;
}
.dy-rk-name:hover {
  color: var(--dy-c0);
  text-decoration: underline;
}
.dy-rk-bar {
  height: 8px;
  background: var(--soft);
  border-radius: 99px;
  overflow: hidden;
}
.dy-rk-bar i {
  display: block;
  height: 100%;
  border-radius: 99px;
  background: linear-gradient(90deg, #50699f, var(--dy-c0));
}
.dy-rk-row b {
  text-align: right;
  font-variant-numeric: tabular-nums;
}
.dy-rk-row small {
  color: var(--muted);
  text-align: right;
  font-size: 12px;
}
.dy-rk-row .dy-chg {
  margin: 0;
  text-align: right;
}
.dy-rk-go {
  border: 0;
  background: none;
  color: var(--dy-c0);
  font-size: 12px;
  cursor: pointer;
  padding: 0;
}
.dy-more {
  margin-top: 10px;
  border: 0;
  background: none;
  color: var(--dy-c0);
  font-size: 12.5px;
  cursor: pointer;
  padding: 4px;
}
/* 构成环图 */
.dy-donuts {
  display: grid;
  gap: 14px;
}
.dy-dn {
  display: grid;
  grid-template-columns: 120px minmax(0, 1fr);
  gap: 14px;
  align-items: center;
}
.dy-donut {
  width: 120px;
  height: 120px;
}
.dy-donut circle {
  fill: none;
  stroke-width: 15;
  transform: rotate(-90deg);
  transform-origin: 50px 50px;
  cursor: pointer;
  transition: stroke-width 0.15s;
}
.dy-donut circle:hover {
  stroke-width: 19;
}
.dy-donut .t1 {
  font-size: 9px;
  fill: var(--muted);
  text-anchor: middle;
}
.dy-donut .t2 {
  font-size: 11px;
  font-weight: 700;
  fill: var(--ink);
  text-anchor: middle;
}
.dy-dn-leg {
  display: grid;
  gap: 2px;
}
.dy-dn-leg button {
  display: grid;
  grid-template-columns: 10px minmax(0, 1fr) auto;
  gap: 8px;
  align-items: center;
  border: 0;
  background: none;
  padding: 3px 6px;
  border-radius: 6px;
  font-size: 12.5px;
  cursor: pointer;
  text-align: left;
}
.dy-dn-leg button:hover:not(:disabled) {
  background: var(--soft);
}
.dy-dn-leg button:disabled {
  cursor: default;
  color: var(--muted);
}
.dy-dn-leg i {
  width: 10px;
  height: 10px;
  border-radius: 3px;
}
.dy-dn-leg span {
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}
@media (max-width: 1100px) {
  .dy-kpis {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .dy-duo,
  .dy-duo.even {
    grid-template-columns: 1fr;
  }
}
@media (max-width: 640px) {
  .dy-rk-row {
    grid-template-columns: 22px minmax(0, 1fr) 80px 52px 40px;
  }
  .dy-rk-bar,
  .dy-rk-row > small,
  .dy-rk-row .rr {
    display: none;
  }
}
.dy-sec > header .dy-legend {
  margin-top: 0;
}

/* 我的达人：展开行里左右两张小表 */
/* 我的达人 · 达人明细抽屉 */
.mt-panel {
  width: min(820px, 94vw);
}
.mt-top-act {
  display: flex;
  align-items: center;
  gap: 10px;
}
.mt-top-act select {
  height: 32px;
  padding: 0 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
}
.mt-stats {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 10px;
  margin-bottom: 18px;
}
.mt-stat {
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 12px 14px;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.mt-stat span {
  font-size: 12px;
  color: var(--muted);
}
.mt-stat b {
  font-size: 19px;
  font-variant-numeric: tabular-nums;
}
.mt-stat small {
  font-size: 11px;
  color: var(--muted);
}
.mt-stat.total {
  background: #f9f8f5;
  border-color: #e6e4e0;
}
.mt-sec {
  margin-bottom: 20px;
}
.mt-sec h4 {
  display: flex;
  justify-content: space-between;
  margin: 0 0 8px;
  padding-bottom: 8px;
  border-bottom: 2px solid var(--line);
  font-size: 14px;
}
.mt-sec h4 span {
  font-variant-numeric: tabular-nums;
}
.mt-sec .drill-tb tr.ro {
  cursor: default;
}
.mt-go {
  margin-left: 8px;
  color: var(--muted);
  font-size: 16px;
}
@media (max-width: 760px) {
  .mt-stats {
    grid-template-columns: 1fr 1fr;
  }
  .mt-top-act {
    flex-wrap: wrap;
    justify-content: flex-end;
  }
}
/* 我的达人：列头不挂筛选箭头（上面有搜索框），列头文字完整显示 */
.mt-table th {
  white-space: nowrap;
  overflow: visible;
  text-overflow: clip;
}

/* ---- 投放进度表：对齐品牌方飞书表的彩色下拉（2026-09-23） ---- */
.aw-table td {
  vertical-align: middle;
}
.aw-table .nowrap {
  white-space: nowrap;
}
.aw-chip {
  display: inline-block;
  border: 0;
  border-radius: 999px;
  padding: 3px 10px;
  font-size: 12.5px;
  font-weight: 600;
  line-height: 1.5;
  white-space: nowrap;
  background: #f4f2ee;
  color: #6b675f;
}
select.aw-chip {
  appearance: none;
  -webkit-appearance: none;
  cursor: pointer;
  padding-right: 22px;
  background-image: linear-gradient(45deg, transparent 50%, currentColor 50%), linear-gradient(135deg, currentColor 50%, transparent 50%);
  background-position: calc(100% - 12px) 55%, calc(100% - 8px) 55%;
  background-size: 4px 4px;
  background-repeat: no-repeat;
}
select.aw-chip:hover {
  filter: brightness(0.96);
}
.aw-chip.v-blue {
  background-color: #eeece7;
  color: #27417a;
}
.aw-chip.v-purple {
  background-color: #f0eee9;
  color: #27427c;
}
.aw-chip.v-orange {
  background-color: #f4e7d1;
  color: #8c6221;
}
.aw-chip.v-cyan {
  background-color: #f1efeb;
  color: #32405d;
}
.aw-chip.v-red {
  background-color: #f7e4e1;
  color: #b74043;
}
.aw-chip.v-green {
  background-color: #e0f2e6;
  color: #486f5a;
}
.aw-chip.v-gray {
  background-color: #f4f2ee;
  color: #6b675f;
}
.aw-shot {
  width: 56px;
  height: 40px;
  object-fit: cover;
  border-radius: 6px;
  border: 1px solid var(--line);
  cursor: zoom-in;
  display: block;
}
.aw-note {
  max-width: 180px;
}
.aw-note span {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  font-size: 12.5px;
}
.aw-table th,
.aw-table td:nth-child(2),
.aw-table td:nth-child(5) {
  white-space: nowrap;
}
/* 表头工具条：按钮成组靠右，不再被挤到中间 */
.table-tools .tool-btns {
  margin-left: auto;
  display: flex;
  gap: 8px;
}
.aw-note {
  min-width: 140px;
}
.table-card > .ad-note {
  padding: 10px 14px 12px;
  border-top: 1px solid var(--line);
}
/* ===== 结算对账单（2026-09-23 重排） ===== */
.st-head-act {
  display: flex;
  gap: 10px;
  align-items: center;
}
.flow-strip {
  padding: 10px 12px;
}
.flow-steps {
  align-items: center;
}
.flow-all {
  flex: none;
  display: flex;
  align-items: center;
  gap: 6px;
  border: 1px solid var(--line);
  background: #ffffff;
  border-radius: 10px;
  padding: 0 14px;
  height: 44px;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
}
.flow-all b {
  color: var(--muted);
  font-weight: 600;
}
.flow-step {
  cursor: pointer;
  min-height: 44px;
  transition: border-color 0.15s, background 0.15s;
}
.flow-step:hover {
  border-color: #cccac5;
}
.flow-step .flow-txt small {
  display: none;
}
.flow-all.on,
.flow-step.on {
  border-color: #2f4d8d;
  background: #f6f4f0;
  box-shadow: 0 0 0 1px #2f4d8d inset;
}
.st-tools {
  gap: 14px;
  flex-wrap: wrap;
}
.st-sum {
  display: flex;
  gap: 18px;
  margin-left: auto;
  align-items: baseline;
}
.st-sum-i {
  display: flex;
  gap: 6px;
  align-items: baseline;
}
.st-sum-i small {
  font-size: 12px;
  color: var(--muted);
}
.st-sum-i b {
  font-size: 15px;
  font-variant-numeric: tabular-nums;
}
.st-sum-i.warn b {
  color: var(--orange);
}
.st-table td {
  vertical-align: middle;
}
.st-table th.num,
.st-table td.num {
  text-align: right;
  white-space: nowrap;
}
.st-table .down {
  color: #486f5a;
}
.st-name {
  border: 0;
  background: none;
  padding: 0;
  font: inherit;
  font-weight: 700;
  color: var(--ink, #282723);
  cursor: pointer;
}
.st-name:hover {
  color: #2f4d8d;
  text-decoration: underline;
}
.rule-panel {
  width: min(640px, 94vw);
}
.rule-sec {
  margin-bottom: 18px;
}
.rule-sec h4 {
  margin: 0 0 8px;
  font-size: 14px;
}
.rule-sec ul {
  margin: 0;
  padding-left: 18px;
  display: grid;
  gap: 7px;
}
.rule-sec li {
  font-size: 13px;
  line-height: 1.7;
  color: #48453f;
}

/* 佣金待归属（2026-09-23 晚）：投流佣金 / 挂车佣金两页顶上的折叠块 */
.dy-todo { padding: 12px 16px; margin-bottom: 12px; border-left: 3px solid var(--chart-warning, #b68131); }
.dy-todo > summary { cursor: pointer; list-style: revert; }
.dy-todo .table-wrap { margin-top: 10px; }
.st-table .cell-actions {
  display: flex;
  gap: 6px;
  align-items: center;
}
.st-table .cell-actions .menu-dot {
  height: 28px;
  min-width: 30px;
  font-size: 15px;
  font-weight: 700;
}

/* ---- 结算对账单 / 财务付款：按阶段分页签（2026-09-23） ---- */
.st-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin: 4px 0 12px;
}
.st-tabs button {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  border: 1px solid var(--line);
  background: #ffffff;
  color: var(--muted);
  border-radius: 8px;
  padding: 7px 14px;
  font-size: 13px;
  cursor: pointer;
}
.st-tabs button b {
  font-size: 12px;
  min-width: 18px;
  padding: 0 6px;
  border-radius: 9px;
  background: var(--soft);
  color: var(--ink);
  font-weight: 600;
}
.st-tabs button.on {
  background: var(--ink);
  border-color: var(--ink);
  color: #ffffff;
  font-weight: 600;
}
.st-tabs button.on b {
  background: rgba(255, 255, 255, 0.18);
  color: #ffffff;
}
.st-hint {
  margin: 0 16px 10px;
  font-size: 12.5px;
  line-height: 1.6;
}
.content > .st-hint {
  margin: 0 0 12px;
}
.st-later {
  margin: 0 0 12px;
  padding: 8px 12px;
  border-radius: 8px;
  background: var(--soft);
  font-size: 13px;
  color: var(--muted);
}
.st-later b {
  color: var(--ink);
}
.st-later .link {
  border: 0;
  background: none;
  color: var(--blue);
  cursor: pointer;
  font-size: 13px;
  padding: 0 4px;
}

/* 结算单详情顶上的核对面板 */
.doc-panel {
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 12px 14px;
  margin-bottom: 14px;
  display: grid;
  gap: 8px;
}
.doc-panel-head {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 12px;
  align-items: baseline;
}
.doc-panel-head span {
  color: var(--muted);
  font-size: 13px;
}
.doc-ok,
.doc-bad {
  margin: 0;
  font-size: 12.5px;
  padding: 5px 10px;
  border-radius: 6px;
}
.doc-ok {
  color: var(--green);
  background: rgba(105, 153, 127, 0.08);
}
.doc-bad {
  color: var(--red);
  background: rgba(187, 62, 66, 0.08);
}
.doc-lines {
  display: grid;
}
.doc-line {
  display: grid;
  grid-template-columns: 1fr auto auto;
  gap: 10px;
  align-items: center;
  padding: 7px 0;
  border-top: 1px dashed var(--line);
  font-size: 13px;
}
.doc-line span {
  display: grid;
  gap: 2px;
}
.doc-line small {
  color: var(--muted);
  font-size: 11px;
}
.doc-line b {
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.doc-line.adj span {
  color: #7d5c2d;
}
.doc-line.sum {
  border-top: 1px solid var(--ink);
  font-size: 14px;
}
.doc-acts {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

/* 结算设置 */
.settle-cfg .cfg-rows {
  display: grid;
  padding: 0 16px;
}
.cfg-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
  padding: 12px 0;
  border-bottom: 1px solid var(--line);
  font-size: 14px;
}
.cfg-row span {
  display: grid;
  gap: 2px;
}
.cfg-row small {
  color: var(--muted);
  font-size: 12px;
}
.cfg-row select {
  min-width: 200px;
  padding: 6px 8px;
  border: 1px solid var(--line);
  border-radius: 7px;
  background: #ffffff;
}
.cfg-acts {
  padding: 12px 16px;
}
.cfg-log {
  padding: 4px 16px 14px;
  font-size: 12.5px;
  color: var(--muted);
}
.cfg-log h4 {
  margin: 8px 0 4px;
  color: var(--ink);
  font-size: 13px;
}
.cfg-log p {
  margin: 3px 0;
}

/* 达人端：还没到结算的 / 上期 */
.h5-later {
  margin: 12px 0 0;
  padding: 10px 12px;
  border-radius: 12px;
  background: #faf8f3;
  border: 1px solid var(--line);
}
.h5-later-head {
  display: grid;
  gap: 2px;
  margin-bottom: 6px;
}
.h5-later-head b {
  font-size: 14px;
}
.h5-later-head small {
  color: var(--muted);
  font-size: 12px;
}
.h5-later-row {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 12px;
  padding: 6px 0;
  border-top: 1px dashed var(--line);
  font-size: 13px;
}
.h5-later-row span {
  display: grid;
  gap: 2px;
}
.h5-later-row small {
  color: var(--muted);
  font-size: 11px;
  line-height: 1.5;
}
.h5-later-row b {
  white-space: nowrap;
}
.h5-later-row.muted b {
  color: var(--muted);
}

/* ===== 达人端 H5 二改（2026-09-23）：按协作台达人端改成 首页 / 工作台 / 我的 ===== */
.t5-chip.brand {
  background: #f9ece6;
  color: var(--t5-accent);
}
.t5-foot-row {
  display: flex;
  gap: 16px;
  margin-top: 12px;
  padding-top: 10px;
  border-top: 1px solid var(--t5-line);
  font-size: 12px;
  color: var(--t5-sub);
}
.t5-me2 {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  padding: 24px 0 4px;
  text-align: center;
}
.t5-me2 .t5-avatar {
  margin-bottom: 6px;
}
.t5-me2 b {
  font-size: 20px;
}
.t5-me2 small {
  font-size: 13px;
  color: #66645f;
}
.t5-me2 i {
  font-style: normal;
}
.t5-score {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 8px;
}
.t5-score > div {
  background: #ffffff;
  border-radius: 14px;
  padding: 12px 4px;
  text-align: center;
}
.t5-score b {
  display: block;
  font-size: 18px;
  color: var(--t5-accent);
}
.t5-score b i {
  font-style: normal;
  font-size: 12px;
  margin-left: 1px;
}
.t5-score small {
  font-size: 11px;
  color: var(--t5-sub);
}
.t5-todo-item {
  display: block;
  width: 100%;
  border: 0;
  text-align: left;
  padding: 14px 16px;
}
.t5-todo-item .row {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 10px;
  margin-bottom: 0;
}
.t5-todo-item b {
  display: block;
  font-size: 15px;
}
.t5-todo-item small {
  display: block;
  margin-top: 2px;
  font-size: 12px;
  color: var(--t5-sub);
}
.t5-todo-item em {
  flex: none;
  font-style: normal;
  font-size: 13px;
  font-weight: 600;
  color: #be5c39;
}
.t5-todo-item .t5-track {
  margin-top: 10px;
}

/* 三改（2026-09-23 傍晚）：首页轮播、滚动通知条、工作台页签 / 筛选 / 项目卡，照协作台达人端 */
.t5-slides {
  margin: 4px -14px 0;
}
.t5-track2 {
  display: flex;
  gap: 10px;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  padding: 0 22px;
  scrollbar-width: none;
}
.t5-track2::-webkit-scrollbar {
  display: none;
}
.t5-slide {
  position: relative;
  flex: 0 0 calc(100% - 44px);
  aspect-ratio: 2 / 1;
  border-radius: 16px;
  overflow: hidden;
  scroll-snap-align: center;
  box-shadow: 0 1px 2px rgba(24, 22, 20, 0.04), 0 6px 20px -8px rgba(62, 60, 57, 0.1);
  background: #f7e5dc;
}
.t5-slide img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.t5-slide-cap {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  padding: 16px 18px;
  color: #ffffff;
  background: linear-gradient(rgba(22, 20, 17, 0) 40%, rgba(22, 20, 17, 0.42));
}
.t5-slide-cap span {
  align-self: flex-start;
  font-size: 10px;
  padding: 4px 8px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.2);
  backdrop-filter: blur(2px);
  letter-spacing: 0.5px;
}
.t5-slide-cap b {
  margin-top: 6px;
  font-size: 21px;
  font-weight: 800;
  text-shadow: 0 1px 6px rgba(20, 20, 19, 0.25);
}
.t5-slide-cap small {
  margin-top: 2px;
  font-size: 11.5px;
  color: rgba(255, 255, 255, 0.9);
}
.t5-dots {
  display: flex;
  justify-content: center;
  gap: 5px;
  margin-top: 8px;
}
.t5-dots i {
  width: 5px;
  height: 5px;
  border-radius: 3px;
  background: #eadbd2;
  transition: width 0.2s;
}
.t5-dots i.on {
  width: 16px;
  background: var(--t5-accent);
}
.t5-ticker {
  display: flex;
  align-items: center;
  gap: 8px;
  width: 100%;
  height: 36px;
  margin-top: 10px;
  border: 0;
  border-radius: 999px;
  padding: 0 14px 0 6px;
  background: linear-gradient(92deg, #c68206, #d5714e 70%, #bf5d3a);
  color: #ffffff;
  font-size: 13px;
  font-weight: 600;
  box-shadow: 0 6px 16px -8px rgba(213, 113, 78, 0.6);
}
.t5-ticker svg {
  flex: none;
  width: 26px;
  height: 26px;
  padding: 4px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.25);
}
.t5-marquee {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  white-space: nowrap;
  mask-image: linear-gradient(90deg, transparent, #141413 6%, #141413 94%, transparent);
}
.t5-marquee i {
  display: inline-block;
  font-style: normal;
  padding-left: 100%;
  animation: t5-marq 14s linear infinite;
}
@keyframes t5-marq {
  to {
    transform: translateX(-100%);
  }
}
/* 工作台页签：选中是渐变胶囊，其他就是字 */
#hp-work .t5-seg {
  background: none;
  padding: 0;
  gap: 10px;
}
#hp-work .t5-seg button {
  padding: 10px 0;
  border-radius: 12px;
  font-size: 14px;
}
#hp-work .t5-seg button.on {
  background: var(--t5-grad);
  color: #ffffff;
  box-shadow: 0 8px 18px -8px rgba(181, 85, 49, 0.7);
}
#hp-work .t5-seg button.on small {
  color: rgba(255, 255, 255, 0.8);
}
.t5-search {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 10px;
  border: 1px solid var(--t5-line);
  border-radius: 12px;
  padding: 0 12px;
  background: #ffffff;
  color: var(--t5-sub);
}
.t5-search svg {
  width: 18px;
  height: 18px;
  flex: none;
}
.t5-search input {
  flex: 1;
  min-width: 0;
  border: 0;
  outline: 0;
  padding: 11px 0;
  font-size: 14px;
  background: none;
}
.t5-filters {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
  margin-bottom: 12px;
}
.t5-filters select {
  min-width: 0;
  border: 1px solid var(--t5-line);
  border-radius: 10px;
  padding: 9px 8px;
  background: #ffffff;
  font-size: 13px;
  color: var(--t5-ink);
}
.t5-pcard .t5-track {
  background: #f4e6de;
}

/* 系统设置：岗位权限可点 + 开关与参数（2026-09-23） */
.perm-row.perm-edit {
  width: 100%;
  border: 0;
  background: none;
  font: inherit;
  font-size: 12px;
  text-align: left;
  cursor: pointer;
  border-radius: 5px;
  padding: 3px 4px;
  margin-left: -4px;
}
.perm-row.perm-edit:hover {
  background: #f7f6f3;
}
.perm-row .perm-lock,
.perm-row .perm-mod,
.cfg-row .perm-mod {
  font-size: 10.5px;
  padding: 0 5px;
  border-radius: 4px;
  line-height: 16px;
  font-weight: 500;
}
.perm-row .perm-lock {
  color: #98948b;
  background: #f4f2ee;
}
.perm-row .perm-mod,
.cfg-row .perm-mod {
  color: #966615;
  background: #fbf3e6;
  display: inline-block;
  margin-left: 6px;
  width: max-content;
}
.cfg-group {
  margin: 14px 0 0;
  font-size: 13px;
  color: var(--muted);
  font-weight: 600;
}
.cfg-num {
  display: flex !important;
  align-items: center;
  gap: 6px;
}
.cfg-num input {
  width: 110px;
  padding: 6px 8px;
  border: 1px solid var(--line);
  border-radius: 7px;
  text-align: right;
}
.cfg-num em {
  font-style: normal;
  color: var(--muted);
  font-size: 13px;
  min-width: 28px;
}
.cfg-perm-sum {
  display: flex !important;
  align-items: center;
  gap: 10px;
  font-size: 13px;
  color: var(--muted);
}
.cfg-acts {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}
.cfg-row .cfg-name {
  font-weight: 500;
}

/* 商单项目的「物料与任务要求」：左边上下两张卡（项目要求 / 项目通知） */
.so-brief-main { display: grid; gap: 16px; align-content: start; }

/* ---- 投流项目详情：照协作台的行点开抽屉（2026-09-23 晚） ---- */
.ad-click-row { cursor: pointer; }
.ad-click-row:hover td { background: #faf9f6; }
.ad-task-cell b { display: block; font-size: 14px; }
.ad-task-cell small { color: var(--muted); font-size: 12px; }
.ad-task-cell.future b, .ad-task-cell.future small { color: #bebbb5; }
.ad-task-cell.ok small { color: var(--green); }
.ad-task-cell.late small { color: var(--red); }
.aw-url { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 12px; color: var(--blue); background: #f8f7f4; border: 1px solid var(--line); border-radius: 6px; padding: 2px 8px; max-width: 260px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; display: inline-block; vertical-align: middle; }
.metric-drawer .metric-body { background: #ffffff; min-height: calc(100% - 80px); }
.dw-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 4px 16px; }
.dw-kv { margin: 0 0 16px; }
.dw-kv small { display: block; color: var(--muted); font-size: 12px; margin-bottom: 6px; }
.dw-kv > div { font-size: 14px; color: var(--ink); }
.dw-card { border: 1px solid var(--line); border-radius: 12px; padding: 14px 16px; margin: 4px 0 16px; }
.dw-card p { margin: 4px 0; }
.dw-card-h { color: var(--muted); font-size: 13px; margin-bottom: 8px !important; }
.dw-acts { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; }
.dw-shot { max-width: 100%; border-radius: 8px; border: 1px solid var(--line); }
.dw-log { margin: 12px 0; border-left: 2px solid var(--line); padding-left: 14px; }
.dw-log-row { margin-bottom: 14px; }
.dw-log-row b { display: block; font-size: 14px; }
.dw-log-row small { color: var(--muted); }
.dw-log-row details { margin-top: 4px; font-size: 13px; }
.dw-log-row summary { color: var(--blue); cursor: pointer; }

/* 达人端投流项目详情页（照协作台达人工作台单项目页） */
.t5-back-link {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  border: 0;
  background: none;
  color: #73716b;
  font-size: 14px;
  padding: 16px 0 10px;
}
.t5-back-link svg { width: 16px; height: 16px; }
.h5ad-brand { display: block; color: #73716b; font-size: 12px; }
.h5ad-title { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin: 4px 0; }
.h5ad-title h3 { margin: 0; font-size: 20px; }
.h5ad-sub { color: #73716b; font-size: 12px; margin: 0 0 14px; }
.h5ad-sec { padding: 0; overflow: hidden; }
.h5ad-sec > *:not(.h5ad-h) { margin-left: 16px; margin-right: 16px; }
.h5ad-h { display: flex; justify-content: space-between; align-items: center; padding: 14px 16px; border-bottom: 1px solid var(--t5-line, #f0eee9); margin-bottom: 12px; }
.h5ad-h small { color: #92908a; }
.h5ad-prog { display: flex; justify-content: space-between; font-size: 13px; color: #73716b; margin-bottom: 8px; }
.h5ad-prog b { color: #272623; }
.h5ad-months { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin: 14px 16px 16px !important; }
.h5ad-months div { background: #f8f6f1; border-radius: 10px; padding: 8px 4px; text-align: center; }
.h5ad-months div.on { background: #faefe9; }
.h5ad-months small { display: block; font-size: 11px; color: #92908a; }
.h5ad-months b { font-size: 14px; }
.h5ad-hl { color: #b55531; font-size: 13px; }
.h5ad-req { color: #54514c; font-size: 13px; line-height: 1.7; white-space: pre-line; }
.h5ad-prods { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 12px; margin-bottom: 12px; }
.h5ad-prods div { border: 1px solid #f0eee9; border-radius: 12px; padding: 10px 12px; min-width: 110px; }
.h5ad-prods i { display: grid; place-items: center; width: 36px; height: 36px; border-radius: 8px; background: #f8f6f1; margin-bottom: 8px; }
.h5ad-prods i svg { width: 18px; height: 18px; fill: none; stroke: #92908a; stroke-width: 1.6; }
.h5ad-prods b { font-size: 13px; }
.h5ad-empty { text-align: center; color: #73716b; font-size: 13px; padding: 8px 0 16px; }
.h5ad-empty small { color: #92908a; font-size: 11px; }
.h5ad-sec .t5-list { margin-bottom: 8px; }
.h5ad-sec .t5-row em { display: inline-flex; align-items: center; gap: 6px; }
.h5ad-q { width: calc(100% - 32px); box-sizing: border-box; padding: 9px 12px; border: 1px solid #e7e5e0; border-radius: 10px; font-size: 13px; }
.h5ad-fs { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 8px; margin-bottom: 10px; }
.h5ad-fs select { padding: 8px 10px; border: 1px solid #e7e5e0; border-radius: 10px; background: #ffffff; font-size: 13px; }
.h5ad-work { border: 1px solid #f0eee9; border-radius: 12px; padding: 12px 14px; margin-bottom: 10px; }
.h5ad-work > small { display: block; color: #73716b; font-size: 12px; margin-top: 4px; }
.h5ad-work-h { display: flex; justify-content: space-between; align-items: center; }
.h5ad-work-h .wk-badge { position: static; }
.h5ad-work-a { display: flex; align-items: center; gap: 12px; margin-top: 10px; font-size: 13px; }
.h5ad-work-a a { color: #bd5b38; }
.h5ad-work-a button { border: 0; background: none; padding: 0; font-size: 13px; color: #54514c; }
.h5ad-work-a .r { margin-left: auto; }
.h5ad-submit { position: absolute; left: 14px; right: 14px; bottom: 72px; z-index: 3; }
.h5ad-submit button { width: 100%; border: 0; border-radius: 12px; padding: 13px; color: #ffffff; font-size: 15px; font-weight: 600; background: var(--t5-grad, linear-gradient(90deg, #c86846, #c4623e)); box-shadow: 0 8px 20px rgba(181, 85, 49, 0.28); }
.h5ad-sheet-sub { display: block; font-size: 12px; color: #92908a; font-weight: 400; }
.h5ad-addr { font-size: 13px; margin: 8px 0; }
.h5ad-warn { background: #fef7ed; border: 1px solid #f5e4c9; color: #9c6d2d; border-radius: 10px; padding: 10px 12px; font-size: 12px; }

/* ---- 投放进度表 1:1 飞书（2026-09-24）：绿色表头、有问题的行标红、表里直接改 ---- */
.aw-table thead th {
  background: #85a793;
  color: #ffffff;
  font-weight: 600;
  text-align: center;
}
.aw-table tr.aw-bad td {
  background: #fafaf8;
}
.aw-table tr.aw-bad td:first-child {
  box-shadow: inset 3px 0 0 #bb3e42;
}
.aw-problem {
  display: block;
  margin-top: 4px;
  max-width: 200px;
  font-size: 12px;
  line-height: 1.4;
  color: #b74043;
  white-space: normal;
}
.aw-cap {
  display: block;
  max-width: 280px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.aw-cell-in {
  width: 100%;
  min-width: 110px;
  border: 1px solid transparent;
  border-radius: 6px;
  background: transparent;
  padding: 4px 6px;
  font: inherit;
  font-size: 12.5px;
}
.aw-cell-in:hover,
.aw-cell-in:focus {
  border-color: var(--line);
  background: #ffffff;
  outline: none;
}
.aw-problem.editable {
  cursor: pointer;
  text-decoration: underline dotted;
}

/* 本月需结算：商品行可点开看订单；整位博主一次分流的那一行（2026-09-25） */
.ms-g { cursor: pointer; }
.ms-g:hover { background: rgba(46, 76, 141, 0.05); }
.ms-bulk { display: flex; gap: 8px; align-items: center; margin: 2px 0 10px; }
.ms-prod .row-actions .tiny + .tiny { margin-left: 6px; }

/* 结算单两部分说明（2026-09-28）：钱为什么在公司 / 什么时候结 */
.sx {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin: 12px 0;
}
.sx-part {
  border: 1px solid var(--line);
  border-radius: 10px;
  background: #ffffff;
  padding: 10px 14px 12px;
}
.sx-part > h4 {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 0 0 6px;
  font-size: 14px;
}
.sx-part > h4 > span {
  display: inline-grid;
  place-items: center;
  width: 20px;
  height: 20px;
  border-radius: 5px;
  background: var(--soft);
  color: var(--blue);
  font-size: 12px;
}
.sx-month {
  padding: 6px 0;
  border-top: 1px solid var(--line);
}
.sx-mh {
  display: flex;
  justify-content: space-between;
  font-size: 13px;
  padding: 2px 0;
}
.sx-line {
  display: flex;
  align-items: baseline;
  gap: 10px;
  padding: 4px 0 4px 10px;
  font-size: 12.5px;
}
.sx-line > span {
  flex: 1;
  min-width: 0;
}
.sx-line small {
  display: block;
  color: var(--muted);
  font-size: 11px;
}
.sx-line > b {
  white-space: nowrap;
  font-weight: 600;
}
.sx .down {
  color: var(--red, #b54236);
}
.sx-total {
  display: flex;
  justify-content: space-between;
  border-top: 1px solid var(--ink, #242320);
  padding-top: 8px;
  margin-top: 4px;
  font-size: 14px;
}
.sx-kv {
  margin: 0;
}
.sx-kv > div {
  display: flex;
  gap: 12px;
  padding: 5px 0;
  border-top: 1px dashed var(--line);
  font-size: 12.5px;
}
.sx-kv > div:first-child {
  border-top: 0;
}
.sx-kv dt {
  width: 40px;
  flex: none;
  color: var(--muted);
}
.sx-kv dd {
  margin: 0;
  flex: 1;
}
.sx-flow {
  display: flex;
  align-items: center;
  margin-top: 10px;
  font-size: 11.5px;
}
.sx-flow > span {
  padding: 4px 8px;
  border-radius: 999px;
  background: var(--soft);
  color: var(--muted);
  white-space: nowrap;
}
.sx-flow > span.on {
  color: var(--blue);
}
.sx-flow > span.now {
  background: var(--blue);
  color: #ffffff;
}
.sx-flow > i {
  flex: 1;
  height: 1px;
  background: var(--line);
  min-width: 6px;
}

/* 达人端收益与结算（2026-09-28） */
.h5-wd {
  position: relative;
}
.h5-wd-btn {
  margin-top: 10px;
  border: 0;
  border-radius: 999px;
  padding: 8px 22px;
  background: #fff;
  color: var(--blue);
  font-weight: 600;
}
.h5-wd-btn[disabled] {
  opacity: 0.5;
}
.h5-wd-st {
  display: inline-block;
  margin-top: 8px;
  font-size: 12px;
  opacity: 0.9;
}
.h5-wd-kpis {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 6px;
  margin-top: 14px;
  padding-top: 10px;
  border-top: 1px solid rgba(255, 255, 255, 0.25);
}
.h5-wd-kpis span {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.h5-wd-kpis small {
  font-size: 11px;
  opacity: 0.8;
}
.h5-wd-kpis b {
  font-size: 14px;
}
.h5-tracks {
  display: grid;
  gap: 8px;
  margin-bottom: 10px;
}
.h5-track {
  border: 1px solid var(--line);
  border-radius: 10px;
  background: #fff;
  padding: 10px 12px;
}
.h5-track .row {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
}
.h5-track small {
  display: block;
  color: var(--muted);
  font-size: 11px;
  margin-top: 2px;
}
.h5-cur {
  border: 1px solid var(--line);
  border-radius: 12px;
  background: #fff;
  padding: 12px;
  margin: 10px 0;
}
.h5-cur-head {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
}
.h5-cur-head small {
  display: block;
  color: var(--muted);
  font-size: 11px;
}
.h5-cur-tip {
  font-size: 12px;
  color: var(--orange);
  margin: 8px 0 0;
}
.h5-cur .sx-part {
  border: 0;
  padding: 8px 0 0;
}
.h5-cur-more > summary,
.h5-bill > summary {
  cursor: pointer;
  list-style: none;
}
.h5-cur-more > summary {
  font-size: 12px;
  color: var(--blue);
  padding: 6px 0;
}
.h5-bills {
  margin-top: 12px;
}
.h5-bills-head b {
  display: block;
}
.h5-bills-head small {
  color: var(--muted);
  font-size: 11px;
}
.h5-bill {
  border-top: 1px solid var(--line);
  padding: 8px 0;
}
.h5-bill > summary {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
}
.h5-bill > summary small {
  display: block;
  color: var(--muted);
  font-size: 11px;
}
.h5-pick {
  display: grid;
  gap: 6px;
  margin: 6px 0 10px;
}
.h5-pick-row {
  display: flex;
  align-items: center;
  gap: 10px;
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 10px 12px;
}
.h5-pick-row span {
  flex: 1;
}
.h5-pick-row small {
  display: block;
  color: var(--muted);
  font-size: 11px;
}
.h5-pick-tip {
  font-size: 11.5px;
  color: var(--muted);
  margin: 4px 0;
}
.h5-pick-go {
  width: 100%;
  margin-top: 8px;
}
/* 收款信息同意勾选（10-12） */
.h5-agree {
  display: flex;
  align-items: center;
  gap: 6px;
  margin: 10px 2px 0;
  font-size: 12px;
  color: var(--muted);
}
.h5-agree input {
  margin: 0;
  width: 15px;
  height: 15px;
  flex: none;
}
.h5-agree a {
  color: var(--t5-accent);
  cursor: pointer;
}
.bill-prod > summary {
  list-style: none;
  cursor: pointer;
}
.bill-prod > summary::-webkit-details-marker {
  display: none;
}
.bill-prod > summary .bill-line > span::after {
  content: " ▸";
  color: var(--blue);
  font-size: 10px;
}
.bill-prod[open] > summary .bill-line > span::after {
  content: " ▾";
}
.bill-orders {
  margin: 0 0 6px 8px;
  font-size: 11.5px;
}
.bill-orders .bill-line {
  font-size: 11.5px;
  padding: 4px 0;
}
.t5-alert.ok {
  background: #eef6f1;
  border-color: #cfe5d8;
  color: #2f6b4c;
}
.t5-todos {
  padding: 2px 12px;
}
.t5-todos .t5-row em {
  color: var(--orange);
}
tr.row-alert > td {
  background: #fcf3f2;
}
.nick-alert {
  margin-top: 3px;
}
.ms-months {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin: 2px 0 8px;
  font-size: 12px;
}
.ms-m {
  display: inline-flex;
  gap: 6px;
  padding: 2px 8px;
  border-radius: 999px;
  background: var(--soft);
}
/* 新建订单 · 投流项目：没有稿费和固定费用，金额列和金额平衡整块藏起来（09-28） */
#orderModal.ad-mode .talent-amount,
#orderModal.ad-mode #colAmount,
#orderModal.ad-mode .talent-cost,
#orderModal.ad-mode .talent-grid-head.cost-col > span:nth-child(4) {
  visibility: hidden;
}
#orderModal.ad-mode .amount-check > div {
  display: none;
}

/* ---- 经营拆解 · 达人经营明细（2026-09-28） ---- */
.dy-tal-strip {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 10px;
  margin-bottom: 14px;
}
.dy-tal-strip > div {
  background: var(--soft, #f8f7f4);
  border-radius: 10px;
  padding: 10px 14px;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.dy-tal-strip span {
  font-size: 12px;
  color: var(--muted);
}
.dy-tal-strip b {
  font-size: 18px;
}
.dy-tal-strip em {
  font-style: normal;
}
.dy-tal-strip em.good {
  color: #608d75;
}
.dy-tal-strip em.bad {
  color: #bb3e42;
}
.dy-tal-strip small {
  font-size: 11px;
  color: var(--muted);
}
.dy-tal-views {
  margin-bottom: 10px;
  flex-wrap: wrap;
}
.dy-tal-views small {
  margin-left: 4px;
  opacity: 0.65;
}
.dy-tal-wrap {
  overflow-x: auto;
}
table.dy-tal {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
  white-space: nowrap;
}
.dy-tal th {
  font-size: 12px;
  font-weight: 600;
  color: var(--muted);
  text-align: left;
  padding: 8px 8px;
  border-bottom: 1px solid var(--line);
  position: sticky;
  top: 0;
  background: var(--card, #ffffff);
}
.dy-tal th.num,
.dy-tal td.num {
  text-align: right;
}
.dy-th-sort {
  cursor: pointer;
  user-select: none;
}
.dy-th-sort:hover,
.dy-th-sort.on {
  color: var(--dy-c0);
}
.dy-tal td {
  padding: 8px 8px;
  border-bottom: 1px solid var(--line);
  vertical-align: middle;
}
.dy-tal tbody tr:hover {
  background: var(--soft, #f8f7f4);
}
.dy-tal tr.lost td {
  color: var(--muted);
}
.dy-tal td small {
  display: block;
  font-size: 11px;
  color: var(--muted);
}
.dy-tal td.num small {
  display: inline;
  margin-left: 4px;
}
.dy-tal-rk {
  width: 28px;
}
.dy-tal-name {
  background: none;
  border: 0;
  padding: 0;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font: inherit;
  color: inherit;
}
.dy-tal-name:hover b {
  color: var(--dy-c0);
  text-decoration: underline;
}
.dy-tag {
  font-style: normal;
  font-size: 10.5px;
  padding: 1px 6px;
  border-radius: 999px;
  background: #f4e9d9;
  color: #9d6922;
}
.dy-tal-g {
  min-width: 130px;
}
.dy-tal-g .dy-rk-bar {
  display: flex;
  justify-content: flex-end;
  height: 4px;
  margin: 4px 0 0;
  background: rgba(0, 0, 0, 0.06);
  border-radius: 2px;
  overflow: hidden;
}
.dy-tal-g .dy-rk-bar i {
  display: block;
  height: 100%;
  background: var(--dy-c0);
  border-radius: 2px;
}
.dy-tal td.num small.blk {
  display: block;
  margin: 2px 0 0;
}
.dy-tal-g small {
  display: block !important;
  margin: 2px 0 0 !important;
}
.dy-bad {
  color: #bb3e42;
  font-weight: 700;
}
.dy-tal-sp .dy-spark {
  width: 96px;
  height: 26px;
  display: block;
}
.dy-tal-prod {
  max-width: 170px;
}
.dy-tal-prod button {
  background: none;
  border: 0;
  padding: 0;
  font: inherit;
  color: inherit;
  cursor: pointer;
  max-width: 170px;
  overflow: hidden;
  text-overflow: ellipsis;
  display: block;
  text-align: left;
}
.dy-tal-prod button:hover {
  color: var(--dy-c0);
}
@media (max-width: 640px) {
  .dy-stage-cards {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  }
  .dy-stage {
    min-width: 0;
  }
  .dy-flow {
    grid-template-columns: minmax(0, 1fr);
  }
  .dy-hbar {
    grid-template-columns: 72px minmax(30px, 1fr) auto 40px;
    gap: 6px;
  }
}

/* ---- 经营拆解：原地展开 + 侧边订单（2026-09-28） ---- */
.dy-rk .dy-rk-extra {
  display: none;
}
.dy-rk.all .dy-rk-extra {
  display: grid;
}
.dy-rk-row.dy-rk-on,
.dy-tal tr.dy-rk-on {
  background: var(--soft);
}
.dy-rk-name,
.dy-tal-name {
  cursor: pointer;
}
.dy-rk-name::after,
.dy-tal-name::after {
  content: "▾";
  margin-left: 6px;
  font-size: 10px;
  color: var(--muted);
  opacity: 0;
  transition: opacity 0.15s;
}
.dy-rk-row:hover .dy-rk-name::after,
.dy-tal tr:hover .dy-tal-name::after,
.dy-rk-on .dy-rk-name::after,
.dy-rk-on .dy-tal-name::after {
  opacity: 1;
}
.dy-rk-on .dy-rk-name::after,
.dy-rk-on .dy-tal-name::after {
  content: "▴";
}
.dy-rk-sub {
  margin: 2px 0 10px 36px;
  padding: 14px 16px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: #ffffff;
  white-space: normal;
  animation: dyRkIn 0.18s ease-out;
}
.dy-tal .dy-rk-open > td {
  padding: 0 8px 10px;
  background: var(--soft, #f8f7f4);
}
.dy-tal .dy-rk-sub {
  margin: 0 0 0 28px;
  max-width: 900px;
}
.dy-tal tr.dy-rk-open:hover {
  background: none;
}
@keyframes dyRkIn {
  from {
    opacity: 0;
    transform: translateY(-4px);
  }
}
.dy-rk-sub-top {
  display: flex;
  gap: 20px;
  align-items: stretch;
  flex-wrap: wrap;
  margin-bottom: 12px;
}
.dy-rk-kv {
  display: grid;
  grid-template-columns: repeat(5, minmax(80px, auto));
  gap: 8px 22px;
  flex: 1 1 auto;
}
.dy-rk-kv span,
.dy-rk-sub-sp span,
.dy-peek-kv span {
  display: block;
  font-size: 11.5px;
  color: var(--muted);
}
.dy-rk-kv b {
  font-size: 15px;
}
.dy-rk-sub-sp {
  flex: 0 0 180px;
}
.dy-rk-sub-sp .dy-spark {
  width: 180px;
  height: 34px;
  display: block;
  margin-top: 4px;
}
.dy-rk-sub h4 {
  margin: 0 0 6px;
  font-size: 12.5px;
}
.dy-rk-subl {
  display: grid;
  gap: 2px;
}
.dy-rk-subl button {
  display: grid;
  grid-template-columns: minmax(0, 1.6fr) minmax(40px, 1fr) 76px 150px;
  gap: 10px;
  align-items: center;
  border: 0;
  background: none;
  padding: 5px 6px;
  border-radius: 7px;
  font: inherit;
  font-size: 12.5px;
  text-align: left;
  cursor: pointer;
  color: inherit;
}
.dy-rk-subl button:hover {
  background: var(--soft);
}
.dy-rk-subl span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.dy-rk-subl i {
  height: 5px;
  border-radius: 3px;
  background: rgba(0, 0, 0, 0.06);
  overflow: hidden;
}
.dy-rk-subl s {
  display: block;
  height: 100%;
  background: var(--dy-c1);
  border-radius: 3px;
}
.dy-rk-subl b {
  text-align: right;
}
.dy-rk-subl small {
  color: var(--muted);
  font-size: 11.5px;
}
.dy-rk-sub-acts {
  display: flex;
  gap: 8px;
  margin-top: 12px;
}
/* 右侧订单抽屉 */
.dy-peek .metric-drawer {
  width: min(560px, 94vw);
}
.dy-peek-kv {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 8px;
  margin-bottom: 12px;
}
.dy-peek-kv > div {
  background: #ffffff;
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 8px 12px;
}
.dy-peek-kv b {
  font-size: 16px;
}
.dy-peek-list {
  background: #ffffff;
  border: 1px solid var(--line);
  border-radius: 12px;
  overflow: hidden;
}
.dy-peek-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 96px 58px;
  gap: 12px;
  align-items: center;
  padding: 9px 14px;
  border-bottom: 1px solid var(--line);
  font-size: 13px;
}
.dy-peek-row:last-child {
  border-bottom: 0;
}
.dy-peek-row small {
  display: block;
  color: var(--muted);
  font-size: 11.5px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.dy-peek-row .num {
  text-align: right;
}
.dy-st {
  font-style: normal;
  font-size: 11px;
  text-align: center;
  padding: 2px 6px;
  border-radius: 999px;
  background: var(--soft);
  color: var(--muted);
}
.dy-st.good {
  background: #eeece8;
  color: #517963;
}
.dy-st.bad {
  background: #f6e5e5;
  color: #ae4244;
}
.dy-peek-more {
  font-size: 12px;
  margin: 8px 2px 0;
}
.dy-peek-go {
  margin-top: 12px;
}
@media (max-width: 640px) {
  .dy-rk-sub {
    margin-left: 0;
  }
  .dy-rk-kv {
    grid-template-columns: repeat(3, 1fr);
  }
  .dy-rk-subl button {
    grid-template-columns: minmax(0, 1fr) 70px;
  }
  .dy-rk-subl i,
  .dy-rk-subl small {
    display: none;
  }
  .dy-peek-kv {
    grid-template-columns: repeat(2, 1fr);
  }
}
.dy-tal tr.dy-rk-extra {
  display: none;
}
.dy-tal.all tr.dy-rk-extra {
  display: table-row;
}
.dy-tal .dy-rk-sub small {
  display: inline;
  margin-left: 4px;
}
.dy-tal .dy-rk-subl small {
  margin: 0;
}
.dy-rk-sub.in-peek {
  margin: 0 0 12px;
}
.dy-rk-sub.in-peek .dy-rk-kv {
  grid-template-columns: repeat(3, 1fr);
}
.dy-rk-sub.in-peek .dy-rk-subl button {
  grid-template-columns: minmax(0, 1.4fr) minmax(30px, 0.6fr) 70px 120px;
}
button.dy-peek-row {
  width: 100%;
  border: 0;
  border-bottom: 1px solid var(--line);
  background: none;
  font: inherit;
  text-align: left;
  cursor: pointer;
  color: inherit;
}
button.dy-peek-row:hover {
  background: var(--soft);
}
.dy-peek-row .dy-tag {
  margin-left: 6px;
}
/* 抽屉挂在 body 上，不在 .dy-ws 里面，配色变量要再给一份 */
.dy-peek {
  --dy-c0: #27427c;
  --dy-c1: #69997f;
  --dy-c2: #b68131;
  --dy-c5: #a9a69f;
}
.dy-peek-row {
  grid-template-columns: minmax(0, 1fr) auto 58px;
}
.dy-peek-row .num small {
  white-space: nowrap;
}

/* 大屏时间范围：本月 / 上月 / 近3个月 / 近6个月 / 今年 / 按月份 */
.dash-range {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 12px;
  margin: 0 0 14px;
}

/* 权限按板块排（2026-09-29）：每张板块卡顶上一排「能进」的页面开关 */
.perm-views {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 5px;
  margin: 0 0 8px;
  padding-bottom: 8px;
  border-bottom: 1px dashed var(--line);
}
.pv-chip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: #ffffff;
  color: #b6b3ad;
  font: inherit;
  font-size: 11.5px;
  line-height: 20px;
  padding: 0 8px;
}
.pv-chip.on {
  color: var(--ink);
  border-color: var(--green);
  background: #f7f6f3;
}
.pv-chip.perm-edit {
  cursor: pointer;
}
.pv-chip.perm-edit:hover {
  border-color: var(--ink);
}
.pv-chip .perm-lock {
  font-size: 10px;
  color: #98948b;
}
.pv-chip .perm-mod {
  font-size: 10px;
  color: #966615;
  background: #fbf3e6;
  border-radius: 4px;
  padding: 0 4px;
}

/* 快递100 物流轨迹（10-08）：新的在上 */
.trace-list {
  list-style: none;
  margin: 6px 0 0;
  padding: 0 0 0 14px;
  border-left: 2px solid var(--line, #eceae6);
  display: grid;
  gap: 10px;
}
.trace-list li {
  position: relative;
  display: grid;
  gap: 2px;
  font-size: 13px;
  line-height: 1.5;
}
.trace-list li::before {
  content: "";
  position: absolute;
  left: -19px;
  top: 6px;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--line, #dad8d5);
}
.trace-list li:first-child::before {
  background: var(--brand, #365596);
}
.trace-list small {
  color: var(--muted, #8e8a80);
}

/* 结算单三笔一行（10-08）：稿费 / 星图（负） / 卖货佣金 → 实付 */
.sx-three {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 12px;
}
.sx-three span {
  flex: 1 1 88px;
  display: grid;
  gap: 2px;
  padding: 8px 10px;
  border-radius: 10px;
  background: var(--soft, #f9f8f5);
}
.sx-three small {
  font-size: 12px;
  color: var(--muted, #8e8a80);
}
.sx-three b {
  font-size: 15px;
  font-variant-numeric: tabular-nums;
}
.sx-three .sx-three-net {
  background: var(--brand-soft, #f5f3ef);
}

.cell-sub.self-edit { white-space: normal; max-width: 150px; line-height: 1.4; }

/* 宽表横向滚动时，最后一列（操作 / 状态）固定在右侧，不被截断（2026-10-08） */
[data-scope="receipts"] .table-wrap > table tr > :last-child:not([colspan]),
[data-scope="receipt-docs"] .table-wrap > table tr > :last-child:not([colspan]),
[data-scope="payments"] .table-wrap > table tr > :last-child:not([colspan]),
[data-scope="settlement"] .table-wrap > table tr > :last-child:not([colspan]),
.rt-card .table-wrap > table tr > :last-child:not([colspan]) {
  position: sticky;
  right: 0;
  z-index: 1;
  background: var(--pro-card, #ffffff);
  box-shadow: -6px 0 6px -6px rgba(33, 31, 28, 0.18);
}
[data-scope] .table-wrap > table thead tr > :last-child:not([colspan]),
.rt-card .table-wrap > table thead tr > :last-child:not([colspan]) {
  z-index: 3;
}
/* 固定列跟着整行变色，不留一块白（2026-10-09） */
[data-scope] .table-wrap > table tbody tr:hover > :last-child:not([colspan]),
.rt-card .table-wrap > table tbody tr:hover > :last-child:not([colspan]) {
  background: var(--pro-hover, #f9f8f6);
}
/* 「显示已结清」开关 */
.rt-toggle {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  margin-left: auto;
  font-size: 12px;
  color: var(--muted);
  cursor: pointer;
}

/* 作品没有封面时显示产品名（10-08：原来只截前两个字，「NOVA 气垫粉霜」只剩「NO」） */
.wk-ph.wk-ph-name {
  padding: 8px;
  font-size: 13px;
  line-height: 1.35;
  text-align: center;
  word-break: break-all;
  overflow: hidden;
}

/* 分成账单穿透抽屉（10-09）：达人这个月的商品和订单 */
.dy-peek .metric-drawer:has(.dy-bp) {
  width: min(680px, 96vw);
}
.dy-bp .dy-peek-kv small {
  display: block;
  color: var(--muted);
  font-size: 11.5px;
  margin-top: 2px;
}
.dy-bp-note {
  font-size: 12.5px;
  margin: 0 2px 12px;
}
.dy-bp-h {
  font-size: 13px;
  margin: 4px 2px 8px;
}
.dy-bp-prod {
  width: 100%;
  margin-bottom: 14px;
  background: #ffffff;
  border: 1px solid var(--line);
  border-radius: 12px;
  overflow: hidden;
}
.dy-bp-prod td:first-child {
  max-width: 260px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.dy-bp-bar {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 8px;
}
.dy-bp-bar .dy-bp-h {
  margin: 0;
}
.dy-bp-bar .seg {
  margin-left: auto;
}
.dy-peek-row.dy-bp-row {
  grid-template-columns: minmax(0, 1fr) auto 112px;
}
.dy-bp-st {
  text-align: center;
}
.dy-bp-st .dy-st {
  display: inline-block;
}
.dy-bp-st small {
  text-align: center;
}
.dy-bp-row .mono {
  font-size: 12.5px;
}

/* 全站表格：点表头排序 + 表尾翻页（10-09） */
th.th-sortable {
  cursor: pointer;
  user-select: none;
}
th.th-sortable:hover,
th.sort-on {
  color: var(--blue, #2f4d8d);
}
.th-sort-mark {
  font-style: normal;
}
.table-pager,
.dy-pager {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 14px;
  flex-wrap: wrap;
}
.table-pager .row-count,
.dy-pager .row-count {
  margin-right: auto;
  font-size: 12px;
  color: var(--muted);
}
.pager-ctl {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  color: var(--muted);
}
.pager-ctl b {
  color: var(--ink, #282723);
  font-weight: 600;
}
.pager-ctl .tiny {
  min-width: 28px;
  padding: 2px 8px;
}
.pager-size {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  color: var(--muted);
}
.pager-size select {
  height: 28px;
  padding: 0 6px;
  border: 1px solid var(--line);
  border-radius: 7px;
  background: #ffffff;
  font-size: 12px;
}
.dy-bp .dy-pager {
  border: 0;
  padding: 8px 2px 0;
}


/* ===== web/src/css/30-theme.css ===== */
/* ============================================================
   KOC 协作中心 设计层
   挂在 styles.css / app.css 之后，只管“长什么样、怎么动”，不碰业务。

   三条原则：
   1. 一屏一个主角 —— 大数字、主按钮只给最该看的那一个
   2. 颜色只表达状态 —— 品牌只留墨蓝（能点、选中）；琥珀 = 在等别人，砖红 = 超期 / 出错，绿 = 办完
   3. 动效只解释变化 —— 进页、数字变化、刚操作过的那一行；其余时间静止

   改配色只改下面 :root 的 --pro-* 变量。
   ============================================================ */

html.pro {
  /* 底色与文字：暖白、暖灰（2026-10-09 C 暖白克制版，用户认可） */
  --pro-bg: #f6f5f1;
  --pro-bg-sunk: #efede7;
  --pro-card: #ffffff;
  --pro-hover: #faf9f6;
  --pro-line: #e8e5de;
  --pro-line-soft: #efede7;
  --pro-line-strong: #cfcac0;
  --pro-ink: #1c1b19;
  --pro-ink-2: #3d3a35;
  --pro-muted: #5f5b53;
  --pro-faint: #7a756b;
  /* 唯一的品牌色：低饱和墨蓝 = 能点、选中。变量名沿用 clay，免得全站改名 */
  --pro-clay: #2f4b8c;
  --pro-clay-hover: #1f3566;
  --pro-clay-ink: #2f4b8c;
  --pro-clay-tint: #eef1f7;
  --pro-clay-tint-2: #dde3ef;
  /* 状态色：只用在钱和事的状态上。红 = 超期 / 要扣钱，绿 = 办完，琥珀 = 在等别人 */
  --pro-amber: #8a5a0b;
  --pro-amber-tint: #f8efdc;
  --pro-red: #b42318;
  --pro-red-tint: #fbeae7;
  --pro-green: #2f7d4f;
  --pro-green-tint: #e8f2ec;
  /* 深色侧栏：偏暖炭灰 */
  --pro-side: #1f2126;
  --pro-side-active: #2d2f36;
  --pro-side-ink: #b4b0a7;
  --pro-side-ink-strong: #f2f0eb;
  --pro-side-mute: #77736b;
  --pro-gold: #e9c46a;
  /* 动效：只解释变化，快进快出 */
  --pro-ease: cubic-bezier(0.2, 0.7, 0.2, 1);
  --pro-t: 140ms;
  /* 字 */
  --pro-serif:
    -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB",
    "Microsoft YaHei", "Segoe UI", sans-serif;
  --pro-sans:
    -apple-system, BlinkMacSystemFont, "SF Pro Text", "PingFang SC",
    "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", sans-serif;
  --pro-mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
  /* 阴影：很轻，只用来分层 */
  --pro-shadow-1: 0 1px 2px rgba(28, 27, 25, 0.04);
  --pro-shadow-2: 0 1px 2px rgba(28, 27, 25, 0.04), 0 8px 24px rgba(28, 27, 25, 0.06);
  --pro-shadow-3: 0 24px 64px rgba(28, 27, 25, 0.16);

  /* 把原来的变量也接到新主题上，主线里用 var(--blue) 的地方自动跟着变 */
  --ink: var(--pro-ink);
  --muted: var(--pro-muted);
  --line: var(--pro-line);
  --soft: var(--pro-bg-sunk);
  --blue: var(--pro-clay);
  --blue2: #4f69a3;
  --purple: var(--pro-clay-hover);
  --pink: #a0afd1;
  --green: #1f784a;
  --orange: #97590c;
  --red: var(--pro-red);
  --shadow: var(--pro-shadow-2);

  /* 图表：分类色固定顺序，四个颜色明度和色相都拉开 */
  --chart-1: #365596;
  --chart-2: #1f784a;
  --chart-3: #b68d40;
  --chart-4: #b87044;
  --chart-seq-1: #cbd3e5;
  --chart-seq-2: #a0b0d1;
  --chart-seq-3: #365596;
  --chart-seq-4: #1e325d;
  --chart-good: #1f784a;
  --chart-warning: #97590c;
  --chart-critical: #bd443a;
  --chart-neutral: #365596;
  --chart-inactive: #bbb8b2;
}

/* ---------- 基础 ---------- */

html.pro body {
  background: var(--pro-bg);
  color: var(--pro-ink);
  font-family: var(--pro-sans);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
html.pro ::selection {
  background: var(--pro-clay-tint-2);
  color: var(--pro-ink);
}
html.pro :where(a, button, select, input, textarea, [tabindex]):focus-visible {
  outline: 2px solid var(--pro-clay);
  outline-offset: 2px;
}
html.pro * {
  scrollbar-width: thin;
  scrollbar-color: #d6d5d1 transparent;
}
html.pro .muted {
  color: var(--pro-muted);
}

/* 数字一律等宽，金额一列的小数点上下对齐 */
html.pro :is(.num, .money, td.num, .kpi .num, .bh-num, .metric-card b, .pc-id, .id-link, .nav-count) {
  font-variant-numeric: tabular-nums;
}

/* ---------- 侧栏：浅色、安静 ---------- */

html.pro .side {
  background: var(--pro-bg-sunk);
  color: var(--pro-ink-2);
  border-right: 1px solid var(--pro-line);
  padding: 18px 12px 14px;
}
html.pro .brand {
  color: var(--pro-ink);
  font-weight: 600;
  font-family: var(--pro-serif);
  font-size: 16px;
  letter-spacing: 0.01em;
  padding: 2px 8px 20px;
}
html.pro .brand small {
  font-family: var(--pro-sans);
  color: var(--pro-faint);
  font-size: 10px;
  font-weight: 500;
  letter-spacing: 0.12em;
}
html.pro .brandmark {
  width: 32px;
  height: 32px;
  border-radius: 9px;
  background: var(--pro-clay);
  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.12);
  color: #fbfbf9;
  font-family: var(--pro-serif);
  font-size: 17px;
  font-weight: 600;
}
html.pro .nav {
  gap: 2px;
}
html.pro .nav button {
  color: #5b5850;
  padding: 8px 10px;
  border-radius: 8px;
  gap: 10px;
  font-size: 13.5px;
  transition:
    background var(--duration-quick) var(--ease-smooth-out),
    color var(--duration-quick) var(--ease-smooth-out);
}
html.pro .nav button:hover {
  background: rgba(28, 27, 25, 0.05);
  color: var(--pro-ink);
}
html.pro .nav button.active {
  background: #eae8e3;
  color: var(--pro-ink);
  font-weight: 600;
}
html.pro .nav button.active:before {
  display: none;
}
html.pro .nav .ico {
  width: 18px;
  height: 18px;
  flex: none;
  display: inline-grid;
  place-items: center;
  color: #8f8b81;
}
html.pro .nav button.active .ico,
html.pro .nav button:hover .ico {
  color: var(--pro-ink);
}
html.pro .nav button.active .ico {
  color: var(--pro-clay);
}
html.pro .pro-ico {
  width: 17px;
  height: 17px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.6;
  stroke-linecap: round;
  stroke-linejoin: round;
}
html.pro .nav button.nav-group {
  color: var(--pro-faint);
  font-size: 11.5px;
  font-weight: 600;
  letter-spacing: 0.06em;
  padding: 14px 10px 6px;
  background: transparent;
}
html.pro .nav button.nav-group:hover,
html.pro .nav button.nav-group.here {
  background: transparent;
  color: var(--pro-ink-2);
}
html.pro .nav button.nav-group .ico {
  display: none;
}
/* 分类标题旁的页数（「投流品 1」）说明不了什么，箭头 9px 时只剩一个点，看着像脏点 */
html.pro .nav-count {
  display: none;
}
html.pro .nav-caret {
  color: var(--pro-faint);
  font-size: 11px;
  margin-left: auto;
}
html.pro .nav-sub {
  margin-left: 0;
  padding-left: 0;
  border-left: 0;
  gap: 2px;
}
html.pro .nav-sub button {
  font-size: 13.5px;
  padding: 8px 10px;
}
html.pro .nav-dot {
  background: var(--pro-clay);
}
html.pro .side-foot {
  background: transparent;
  border: 1px solid var(--pro-line);
  border-radius: 10px;
  color: var(--pro-muted);
  font-size: 11.5px;
}
html.pro .side-foot .dot {
  background: var(--green) !important;
  box-shadow: none !important;
}
html.pro .reset-demo {
  background: var(--pro-card);
  border: 1px solid var(--pro-line);
  color: var(--pro-ink-2);
  border-radius: 7px;
}

/* ---------- 顶栏 ---------- */

html.pro .top {
  background: rgba(251, 251, 249, 0.86);
  backdrop-filter: saturate(1.2) blur(14px);
  -webkit-backdrop-filter: saturate(1.2) blur(14px);
  border-bottom: 1px solid var(--pro-line);
}
@media (min-width: 901px) {
  /* 副标题太长时一行截断，不把顶栏撑成两行 */
  html.pro .top {
    gap: 16px;
    height: 60px;
  }
  html.pro .crumb {
    display: flex;
    align-items: baseline;
    min-width: 0;
    flex: 1 1 auto;
    overflow: hidden;
  }
  html.pro .crumb strong {
    flex: none;
    white-space: nowrap;
  }
  html.pro .crumb span {
    min-width: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  html.pro .top-actions {
    flex: none;
  }
}
html.pro .crumb strong {
  font-size: 15px;
  font-weight: 600;
  color: var(--pro-ink);
}
html.pro .crumb span {
  color: var(--pro-muted);
}
html.pro .gsearch input {
  background: var(--pro-card);
  border: 1px solid var(--pro-line);
  border-radius: 9px;
  padding: 8px 12px;
  font-size: 13px;
  transition:
    border-color var(--duration-quick) var(--ease-smooth-out),
    box-shadow var(--duration-quick) var(--ease-smooth-out);
}
html.pro .gsearch input:focus {
  outline: none;
  border-color: #a8b4cf;
  box-shadow: 0 0 0 3px var(--pro-clay-tint);
}
html.pro .who {
  border-left-color: var(--pro-line);
}
html.pro .role-chip,
html.pro .role-chip.solo {
  background: var(--pro-clay-tint);
  color: var(--pro-clay-ink);
  font-weight: 600;
}
html.pro .role-switch {
  background: var(--pro-card);
  border-color: var(--pro-line);
  color: var(--pro-ink-2);
}

/* ---------- 按钮 ---------- */

html.pro :is(.primary, .ghost, .tiny) {
  border-radius: 9px;
  box-shadow: none;
  transition:
    background var(--duration-quick) var(--ease-smooth-out),
    border-color var(--duration-quick) var(--ease-smooth-out),
    color var(--duration-quick) var(--ease-smooth-out),
    transform var(--duration-quick) var(--ease-smooth-out);
}
html.pro :is(.primary, .ghost, .tiny):hover {
  transform: none;
}
html.pro :is(.primary, .ghost, .tiny):active:not(:disabled) {
  transform: scale(0.98);
}
html.pro .primary {
  background: var(--pro-clay);
  color: #fcfdff;
  font-weight: 600;
  border: 1px solid transparent;
}
html.pro .primary:hover:not(:disabled) {
  background: var(--pro-clay-hover);
}
html.pro :is(.ghost, .tiny) {
  background: var(--pro-card);
  border: 1px solid var(--pro-line);
  color: var(--pro-ink-2);
}
html.pro :is(.ghost, .tiny):hover:not(:disabled) {
  background: var(--pro-hover);
  border-color: var(--pro-line-strong);
  color: var(--pro-ink);
}
html.pro .tiny.primary {
  background: var(--pro-clay);
  border-color: transparent;
  color: #fcfdff;
}
html.pro .tiny.primary:hover:not(:disabled) {
  background: var(--pro-clay-hover);
  color: #fcfdff;
}
html.pro button:disabled {
  cursor: not-allowed;
}
html.pro .btn-glyph {
  display: inline-grid;
  place-items: center;
  margin-right: 5px;
  vertical-align: -3px;
}
html.pro .btn-glyph .pro-ico {
  width: 15px;
  height: 15px;
  stroke-width: 1.8;
}

/* ---------- 表单 ---------- */

html.pro :is(input:not([type="checkbox"]):not([type="radio"]):not([type="range"]), select, textarea) {
  border-color: var(--pro-line);
  border-radius: 8px;
  color: var(--pro-ink);
  transition:
    border-color var(--duration-quick) var(--ease-smooth-out),
    box-shadow var(--duration-quick) var(--ease-smooth-out);
}
html.pro :is(input:not([type="checkbox"]):not([type="radio"]), select, textarea):focus {
  outline: none;
  border-color: #a8b4cf;
  box-shadow: 0 0 0 3px var(--pro-clay-tint);
}
html.pro :is(input[type="checkbox"], input[type="radio"]) {
  accent-color: var(--pro-clay);
}
html.pro ::placeholder {
  color: var(--pro-faint);
}

/* ---------- 页面标题：衬线，一眼知道在哪 ---------- */

html.pro .content {
  padding: 22px 28px 40px;
}
html.pro .section-title {
  margin-bottom: 16px;
}
html.pro .section-title h1 {
  font-family: var(--pro-serif);
  font-weight: 600;
  font-size: 27px;
  letter-spacing: 0;
  color: var(--pro-ink);
}
html.pro .section-title p {
  color: var(--pro-muted);
}
html.pro .info-dot {
  color: var(--pro-faint);
}
html.pro .ad-eyebrow {
  color: var(--pro-clay-ink);
  letter-spacing: 0.14em;
}
html.pro .ad-ws-head h1,
html.pro .ad-ws h1 {
  font-family: var(--pro-serif);
  font-weight: 600;
}
html.pro .biz-sec small {
  color: var(--pro-faint);
  font-weight: 600;
  letter-spacing: 0.08em;
}
html.pro .role-info {
  background: var(--pro-card);
  border: 1px solid var(--pro-line);
  border-radius: 10px;
  color: var(--pro-ink-2);
}
html.pro .role-info b {
  color: var(--pro-clay-ink);
}

/* ---------- 卡片与指标 ---------- */

html.pro :is(.card, .kpi, .metric-card, .ad-card, .ad-kpi, .pcard, .brand-lib-item, .table-card) {
  background: var(--pro-card);
  border: 1px solid var(--pro-line);
  border-radius: 14px;
  box-shadow: var(--pro-shadow-1);
}
html.pro .card-head h3 {
  font-size: 14.5px;
  font-weight: 600;
  color: var(--pro-ink);
}
html.pro .kpis {
  gap: 12px;
  margin-bottom: 14px;
}
html.pro .kpi {
  padding: 16px 18px;
  min-height: 108px;
  transition:
    border-color var(--duration-quick) var(--ease-smooth-out),
    box-shadow var(--duration-fast) var(--ease-smooth-out);
}
html.pro .kpi .label {
  font-size: 12.5px;
  color: var(--pro-muted);
}
/* 左侧状态色条改成标签前的小圆点：信息不变，卡片边缘干净 */
html.pro .kpi:after {
  display: none;
}
html.pro .kpi[style*="--accent"]:not([style*="--accent:transparent"]) .label::before {
  content: "";
  display: inline-block;
  width: 6px;
  height: 6px;
  margin-right: 7px;
  border-radius: 50%;
  background: var(--accent);
  vertical-align: 2px;
}
html.pro .kpi .num {
  font-size: 28px;
  font-weight: 650;
  letter-spacing: -0.02em;
  color: var(--pro-ink);
  margin-top: 10px;
}
html.pro .kpi .num.danger,
html.pro .kpi .foot.danger {
  color: var(--pro-red);
}
html.pro .kpi .foot {
  font-size: 12px;
  color: var(--pro-muted);
}
html.pro .kpi-live:hover {
  transform: none;
  border-color: var(--pro-line-strong);
  box-shadow: var(--pro-shadow-2);
}
html.pro .kpi-go {
  color: var(--pro-clay-ink);
}

/* 大屏主卡：深墨底，一屏里唯一的深色块 */
html.pro .biz-hero {
  background:
    radial-gradient(640px 220px at 92% -10%, rgba(52, 82, 147, 0.3), transparent 70%),
    radial-gradient(520px 200px at -5% 120%, rgba(52, 82, 147, 0.12), transparent 70%),
    #211f1c;
  color: #f7f5f2;
  border: 1px solid #2d2c28;
  border-radius: 16px;
  box-shadow: var(--pro-shadow-2);
}
html.pro .bh-head {
  font-family: var(--pro-serif);
  font-size: 14px;
  letter-spacing: 0.02em;
  opacity: 0.9;
}
html.pro .bh-grid {
  background: rgba(255, 255, 255, 0.08);
  border-radius: 12px;
}
html.pro .bh-cell {
  background: rgba(255, 255, 255, 0.025);
}
html.pro .bh-cell:hover {
  background: rgba(255, 255, 255, 0.07);
}
html.pro .bh-num {
  font-size: 30px;
  font-weight: 600;
  letter-spacing: -0.02em;
}
html.pro .bh-note.good {
  color: #abd2bc;
}
html.pro .bh-note.bad {
  color: #eab2ac;
}

/* 趋势柱：浅蓝是成交，里面那截墨蓝是毛利 */
html.pro .trend-bars .bar {
  background: #dfddd9;
  border-radius: 6px 6px 2px 2px;
}
html.pro .bar-in {
  background: var(--pro-clay);
  opacity: 1;
}
html.pro .bar em {
  color: var(--pro-muted);
  font-variant-numeric: tabular-nums;
}

/* ---------- 表格 ---------- */

html.pro th {
  background: transparent;
  color: var(--pro-muted);
  font-weight: 500;
  font-size: 12px;
  border-bottom: 1px solid var(--pro-line);
}
/* 表头在滚动框里是吸顶的：透明底会让滚上去的行从表头底下透出来，和列名叠在一起 */
html.pro :is(.table-wrap, .unified-scroll) thead th {
  background: var(--pro-card);
}
/* 数字列的列名和数字一起靠右，不然「GMV」「净佣金」离自己那列的数差出半格 */
html.pro th.num {
  text-align: right;
}
html.pro td {
  border-top: 1px solid var(--pro-line-soft);
  color: var(--pro-ink-2);
}
html.pro tbody tr {
  transition: background var(--duration-quick) var(--ease-smooth-out);
}
html.pro tbody tr:hover > td {
  background: #fcfbfa;
}
html.pro td b {
  color: var(--pro-ink);
  font-weight: 600;
}
html.pro .cell-sub {
  color: var(--pro-faint);
}
html.pro .id-link {
  color: var(--pro-clay-ink);
  font-family: var(--pro-mono);
  font-size: 12px;
  letter-spacing: -0.01em;
}

/* ---------- 标签：淡底，颜色只说状态 ---------- */

html.pro .badge {
  background: var(--pro-clay-tint);
  color: var(--pro-clay-ink);
  font-weight: 600;
  font-size: 11px;
  padding: 3px 9px;
  border: 0;
}
html.pro .badge.green {
  background: var(--pro-green-tint);
  color: var(--pro-green);
}
html.pro .badge.red {
  background: var(--pro-red-tint);
  color: var(--pro-red);
}
html.pro .badge.orange {
  background: var(--pro-amber-tint);
  color: var(--pro-amber);
}
html.pro .badge.gray {
  background: #f3f1ed;
  color: #6c685f;
}
html.pro :is(.warn, .v-orange) {
  color: var(--pro-amber);
}
html.pro :is(.danger) {
  color: var(--pro-red);
}
html.pro :is(.ok, .good, .up) {
  color: var(--pro-green);
}

/* ---------- 弹窗、抽屉、提示 ---------- */

html.pro .modal,
html.pro :is(.detail-mask, .metric-mask, .peek-mask) {
  background: rgba(28, 27, 25, 0.34);
  backdrop-filter: blur(2px);
  -webkit-backdrop-filter: blur(2px);
}
html.pro .dialog {
  border-radius: 16px;
  border: 1px solid var(--pro-line);
  box-shadow: var(--pro-shadow-3);
  background: var(--pro-card);
}
html.pro :is(.dialog-head, .dialog-foot) {
  background: var(--pro-card);
  border-color: var(--pro-line);
}
html.pro .dialog-head h2 {
  font-family: var(--pro-serif);
  font-weight: 600;
  font-size: 20px;
}
html.pro :is(.detail-drawer, .metric-drawer, .peek-panel) {
  background: var(--pro-bg);
  box-shadow: -24px 0 64px rgba(28, 27, 25, 0.16);
}
html.pro .toast {
  background: #211f1c;
  color: #f7f5f2;
  border-radius: 12px;
  padding: 11px 18px;
  font-size: 13px;
  box-shadow: 0 12px 32px rgba(28, 27, 25, 0.22);
}
html.pro .notice {
  border-radius: 12px;
}

/* ---------- 登录页 ---------- */

html.pro .login-wrap {
  background:
    radial-gradient(900px 420px at 50% -10%, rgba(33, 69, 166, 0.09), transparent 70%),
    var(--pro-bg);
}
html.pro .login-card {
  border-radius: 20px;
  border: 1px solid var(--pro-line);
  box-shadow: var(--pro-shadow-2);
  padding: 32px 28px 24px;
}
html.pro .login-brand {
  margin-bottom: 22px;
}
html.pro .login-brand .brandmark {
  width: 40px;
  height: 40px;
  border-radius: 11px;
  font-size: 20px;
}
html.pro .login-brand b {
  font-family: var(--pro-serif);
  font-weight: 600;
  font-size: 22px;
}
html.pro .login-item {
  border-color: var(--pro-line);
  border-radius: 12px;
  transition:
    border-color var(--duration-quick) var(--ease-smooth-out),
    background var(--duration-quick) var(--ease-smooth-out);
}
html.pro .login-item:hover {
  transform: none;
  border-color: var(--pro-line-strong);
  background: #f8fafe;
}
html.pro .login-avatar {
  background: var(--pro-clay-tint);
  color: var(--pro-clay-ink);
  font-family: var(--pro-serif);
  font-weight: 600;
  font-size: 15px;
  border-radius: 10px;
}
html.pro .login-roles em {
  background: #e9eff6;
  color: var(--pro-ink-2);
  font-weight: 500;
}
html.pro .login-group {
  color: var(--pro-faint);
  letter-spacing: 0.08em;
}

/* 按品牌 / 产品取色的占位块：色相保留（能分组），饱和度压到和整站一样安静 */
html.pro .t5-logo {
  color: hsl(var(--h, 30) 28% 36%);
  background: hsl(var(--h, 30) 30% 94%);
  font-family: var(--pro-serif);
}
html.pro .wk-ph {
  color: hsl(var(--h) 26% 36%);
  background: linear-gradient(150deg, hsl(var(--h) 28% 93%), hsl(var(--h) 24% 86%));
}

/* ---------- 页签 ---------- */

html.pro .brand-tabs button.active,
html.pro .brand-switch button.active {
  border-color: var(--pro-ink);
  background: var(--pro-card);
}
html.pro .brand-tabs button.active em,
html.pro .brand-switch button.active em {
  background: var(--pro-ink);
}

/* ---------- 动效 ---------- */

/* 进页：内容块依次浮上来，250ms，每块错开 40ms */
@keyframes pro-rise {
  from {
    opacity: 0;
    transform: translateY(var(--distance-base, 8px));
  }
  to {
    opacity: 1;
    transform: none;
  }
}
html.pro .pro-rise {
  animation: pro-rise var(--duration-slow) var(--ease-smooth-out) both;
  animation-delay: calc(var(--i, 0) * var(--duration-stagger, 40ms));
}

/* 刚操作过的那一行：主色淡底亮一下再退掉 */
@keyframes pro-flash {
  0%,
  35% {
    background-color: var(--pro-clay-tint);
  }
  100% {
    background-color: transparent;
  }
}
html.pro tr.pro-flash > td,
html.pro .pro-flash:not(tr) {
  animation: pro-flash 1.4s var(--ease-smooth-out) both;
}

/* 系统设了“减少动态效果”：全部直接到结果 */
@media (prefers-reduced-motion: reduce) {
  html.pro *,
  html.pro *::before,
  html.pro *::after {
    animation-duration: 1ms !important;
    animation-delay: 0ms !important;
    transition-duration: 1ms !important;
  }
}

/* ---------- 窄屏：侧栏变顶部横条时保持浅色 ---------- */

@media (max-width: 900px) {
  html.pro .side {
    border-right: 0;
    border-bottom: 1px solid var(--pro-line);
    padding: 8px 10px;
  }
  html.pro .content {
    padding: 14px;
  }
  /* 分组在横条里摊平：组标题不显示，组里的页面直接排成一行。
     原版这里一组的子菜单会把整条导航撑到一百多像素高。 */
  html.pro .side .nav {
    align-items: center;
  }
  html.pro .side .nav .nav-grp,
  html.pro .side .nav .nav-sub,
  html.pro .side .nav .nav-sub.closed {
    display: contents;
  }
  html.pro .side .nav button.nav-group {
    display: none;
  }
  html.pro .side .nav button {
    border-radius: 999px;
    padding: 6px 12px;
  }
  html.pro .side .nav button.active {
    background: var(--pro-ink);
    color: var(--pro-bg);
  }
  html.pro .side .nav button.active .ico {
    color: var(--pro-bg);
  }
  html.pro .kpi .num {
    font-size: 22px;
  }
  html.pro .bh-num {
    font-size: 22px;
  }
  html.pro .section-title h1 {
    font-size: 23px;
  }
}

/* ============================================================
   排版层（pro/layout.js 配套）
   ============================================================ */

/* ---- 1. 我的待办：一条队列 ---- */
html.pro .pro-queue {
  padding: 0;
  overflow: hidden;
}
html.pro .pq-head {
  display: flex;
  align-items: baseline;
  gap: 12px;
  flex-wrap: wrap;
  padding: 18px 20px 6px;
}
html.pro .pq-head h3 {
  margin: 0;
  font-family: var(--pro-serif);
  font-size: 17px;
  font-weight: 500;
  color: var(--pro-ink);
}
html.pro .pq-head h3 .count {
  margin-left: 8px;
  font-size: 13px;
  font-variant-numeric: tabular-nums;
}
html.pro .pq-head .muted {
  font-size: 12.5px;
}
html.pro .pq-chips {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  padding: 10px 20px 12px;
}
html.pro .pq-chip {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  height: 30px;
  padding: 0 12px;
  border: 1px solid var(--pro-line);
  border-radius: 999px;
  background: var(--pro-card);
  color: var(--pro-ink-2);
  font-size: 13px;
  cursor: pointer;
  transition:
    background var(--duration-fast, 0.15s) var(--ease-out, ease),
    border-color var(--duration-fast, 0.15s) var(--ease-out, ease),
    color var(--duration-fast, 0.15s) var(--ease-out, ease);
}
html.pro .pq-chip:hover {
  border-color: var(--pro-line-strong);
  background: var(--pro-hover);
}
html.pro .pq-chip i {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--pro-amber);
}
html.pro .pq-chip.danger i {
  background: var(--pro-red);
}
html.pro .pq-chip.wait i {
  background: var(--pro-faint);
}
html.pro .pq-chip b {
  font-size: 12px;
  font-weight: 600;
  color: var(--pro-muted);
  font-variant-numeric: tabular-nums;
}
html.pro .pq-chip.on {
  background: var(--pro-ink);
  border-color: var(--pro-ink);
  color: #fbfbf9;
}
html.pro .pq-chip.on b {
  color: rgba(251, 251, 249, 0.7);
}
html.pro .pq-note {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
  margin: 0 20px 10px;
  padding: 10px 14px;
  border-radius: 10px;
  background: var(--pro-bg-sunk);
  color: var(--pro-muted);
  font-size: 12.5px;
}
html.pro .pq-note[hidden] {
  display: none;
}
html.pro .pq-note > span:first-child {
  flex: 1;
  min-width: 200px;
}
html.pro .pq-tools {
  display: inline-flex;
  gap: 6px;
}
html.pro .pq-list {
  border-top: 1px solid var(--pro-line-soft);
}
html.pro .pq-row {
  display: grid;
  grid-template-columns: 124px minmax(150px, 1.15fr) minmax(0, 2fr) 104px 64px minmax(116px, auto);
  align-items: center;
  gap: 16px;
  padding: 13px 20px;
  border-bottom: 1px solid var(--pro-line-soft);
  transition: background var(--duration-fast, 0.15s) var(--ease-out, ease);
}
html.pro .pq-row[hidden] {
  display: none;
}
html.pro .pq-row:hover {
  background: var(--pro-hover);
}
html.pro .pq-cat {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  justify-self: start;
  width: fit-content;
  max-width: 100%;
  padding: 1px 8px 1px 7px;
  border-radius: 999px;
  background: var(--pro-bg-sunk);
  font-size: 11.5px;
  line-height: 18px;
  color: var(--pro-muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
html.pro .pq-cat i {
  flex: none;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--pro-amber);
}
html.pro .pq-row.hot .pq-cat i {
  background: var(--pro-red);
}
html.pro .pq-row.wait .pq-cat i {
  background: var(--pro-faint);
}
html.pro .pq-main {
  min-width: 0;
}
html.pro .pq-main b {
  color: var(--pro-ink);
  font-weight: 600;
  font-size: 14px;
}
html.pro .pq-main .cell-sub,
html.pro .pq-fact .cell-sub,
html.pro .pq-money .cell-sub {
  display: block;
  margin-top: 2px;
  color: var(--pro-muted);
  font-size: 12px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
html.pro .pq-id {
  margin-top: 3px;
  font-size: 12px;
}
/* 10-08 晚：信息列改成固定宽的三格，不同类别的行上下对得齐，宽屏上也不会被拉散 */
html.pro .pq-facts {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 210px));
  gap: 4px 28px;
  min-width: 0;
  font-size: 13px;
  color: var(--pro-ink-2);
}
html.pro .pq-fact {
  min-width: 0;
  max-width: 100%;
}
html.pro .pq-fact em {
  display: block;
  font-style: normal;
  font-size: 11px;
  color: var(--pro-faint);
  letter-spacing: 0.02em;
}
html.pro .pq-fact.warn,
html.pro .pq-fact .warn {
  color: var(--pro-amber);
}
html.pro .pq-fact.overdue,
html.pro .pq-fact .overdue,
html.pro .pq-fact.danger {
  color: var(--pro-red);
}
html.pro .pq-fact .date-rule {
  display: none;
}
html.pro .pq-fact .aw-chip {
  padding: 1px 8px;
  font-size: 12px;
  line-height: 18px;
}
html.pro .pq-money {
  text-align: right;
  font: 500 14px var(--pro-mono);
  font-variant-numeric: tabular-nums;
  color: var(--pro-ink);
}
html.pro .pq-row.hot .pq-money {
  color: var(--pro-red);
}
html.pro .pq-days {
  text-align: right;
  font-size: 12px;
  color: var(--pro-muted);
  white-space: nowrap;
}
html.pro .pq-days b {
  font: 600 15px var(--pro-mono);
  color: var(--pro-ink-2);
  font-variant-numeric: tabular-nums;
}
html.pro .pq-row.hot .pq-days b {
  color: var(--pro-red);
}
html.pro .pq-act {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 6px;
  flex-wrap: wrap;
}
html.pro .pq-act > .ghost {
  order: 1;
}
html.pro .pq-act > :not(.ghost):not(.cell-sub) {
  order: 2;
}
html.pro .pq-act .cell-sub {
  order: 3;
  flex-basis: 100%;
  margin-top: -2px;
  text-align: right;
  color: var(--pro-faint);
  font-size: 11px;
}
/* 每行一个主动作：第一个非 ghost 按钮用主色实色，其余悬停才出现 */
html.pro .pq-act > button.tiny:not(.ghost):not(:disabled) {
  background: var(--pro-clay);
  border-color: var(--pro-clay);
  color: #ffffff;
}
html.pro .pq-act > button.tiny:not(.ghost):not(:disabled):hover {
  background: var(--pro-clay-hover);
  border-color: var(--pro-clay-hover);
}
html.pro .pq-row.wait .pq-act:empty::after {
  content: "等对方";
  font-size: 12px;
  color: var(--pro-faint);
}
html.pro .pq-fold {
  display: block;
  width: 100%;
  padding: 13px 20px;
  border: 0;
  background: transparent;
  color: var(--pro-muted);
  font-size: 13px;
  text-align: center;
  cursor: pointer;
}
html.pro .pq-fold[hidden] {
  display: none;
}
html.pro .pq-fold:hover {
  color: var(--pro-clay-ink);
  background: var(--pro-hover);
}
@media (hover: hover) {
  html.pro .pq-act > .ghost {
    opacity: 0;
    transition: opacity var(--duration-fast, 0.15s) var(--ease-out, ease);
  }
  html.pro .pq-row:hover .pq-act > .ghost,
  html.pro .pq-row:focus-within .pq-act > .ghost {
    opacity: 1;
  }
}

/* ---- 2. 订单中心：6 列 + 阶段进度条 ---- */
html.pro .pro-oc td {
  vertical-align: middle;
}
html.pro .pro-oc .oc-id .id-link {
  font-size: 13px;
}
html.pro .pro-oc .oc-stage {
  min-width: 120px;
}
html.pro .oc-bar {
  display: flex;
  gap: 3px;
  width: 104px;
  margin-bottom: 5px;
}
html.pro .oc-bar i {
  flex: 1;
  height: 5px;
  border-radius: 3px;
  background: var(--pro-line);
}
html.pro .oc-bar i.done {
  background: var(--pro-clay);
}
html.pro .oc-bar i.cur {
  background: var(--pro-clay-tint-2);
  box-shadow: inset 0 0 0 1px var(--pro-clay);
}
html.pro .oc-bar.full i {
  background: var(--pro-green);
}
html.pro .oc-bar.cancelled i {
  background: repeating-linear-gradient(135deg, var(--pro-line) 0 3px, transparent 3px 5px);
}
html.pro .pro-oc select.stage-edit {
  height: 24px;
  padding: 0 20px 0 0;
  border: 0;
  border-radius: 0;
  background-color: transparent;
  box-shadow: none;
  color: var(--pro-ink-2);
  font-size: 12.5px;
  cursor: pointer;
}
html.pro .pro-oc select.stage-edit:hover:not(:disabled) {
  color: var(--pro-clay-ink);
}
html.pro .pro-oc select.stage-edit:disabled {
  opacity: 1;
  color: var(--pro-muted);
  cursor: default;
}
html.pro .pro-oc .oc-next .next-cell + .cell-sub {
  margin-top: 3px;
}
html.pro .pro-oc .cell-sub.warn {
  color: var(--pro-amber);
}
html.pro .pro-oc .oc-act {
  white-space: nowrap;
  text-align: right;
}
@media (hover: hover) {
  html.pro .pro-oc .oc-act > .ghost {
    opacity: 0;
    transition: opacity var(--duration-fast, 0.15s) var(--ease-out, ease);
  }
  html.pro .pro-oc tr:hover .oc-act > .ghost,
  html.pro .pro-oc tr:focus-within .oc-act > .ghost {
    opacity: 1;
  }
}

/* ---- 3. 达人端首页：下一步 ---- */

/* ---- 排版层 · 手机宽度 ---- */
/* 2026-09-28：分类小字叠在名字上面（不再单占一列、和名字隔一大段空白）；
   中间信息按固定格子对齐；没有金额 / 天数的队列不给这两列留位；三张 KPI 卡撑满一行 */
@media (min-width: 901px) {
  html.pro .kpis:has(> .kpi:nth-child(3):last-child) {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  html.pro .kpis:has(> .kpi:nth-child(2):last-child) {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  /* 操作列定宽（10-10）：每行是独立的格子，原来操作列按内容撑（催链接那行多一个悬停才出现的「联系达人」），
     同一队列里事实那几格忽宽忽窄、上下对不齐。按最宽的那种（主按钮 + 悬停按钮）定成 176px。 */
  html.pro .pq-row {
    grid-template-columns: minmax(170px, 220px) minmax(0, 1fr) 104px 64px 176px;
    grid-template-areas:
      "cat facts money days act"
      "main facts money days act";
    gap: 2px 24px;
    padding: 14px 24px;
  }
  html.pro .no-money .pq-row {
    grid-template-columns: minmax(170px, 220px) minmax(0, 1fr) 64px 176px;
    grid-template-areas:
      "cat facts days act"
      "main facts days act";
  }
  html.pro .no-days .pq-row {
    grid-template-columns: minmax(170px, 220px) minmax(0, 1fr) 104px 176px;
    grid-template-areas:
      "cat facts money act"
      "main facts money act";
  }
  html.pro .no-money.no-days .pq-row {
    grid-template-columns: minmax(170px, 220px) minmax(0, 1fr) 176px;
    grid-template-areas:
      "cat facts act"
      "main facts act";
  }
  html.pro .no-money .pq-money,
  html.pro .no-days .pq-days {
    display: none;
  }
  html.pro .pq-cat { grid-area: cat; align-self: end; font-size: 11.5px; }
  html.pro .pq-main { grid-area: main; align-self: start; }
  html.pro .pq-facts {
    grid-area: facts;
    display: grid;
    grid-template-columns: minmax(0, 1.7fr) minmax(0, 1fr) minmax(0, 1fr);
    max-width: 680px;
  }
  html.pro .two-facts .pq-facts {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    max-width: 460px;
    gap: 4px 28px;
    align-items: start;
  }
  html.pro .pq-fact {
    overflow: hidden;
    text-overflow: ellipsis;
  }
  html.pro .pq-money { grid-area: money; }
  html.pro .pq-days { grid-area: days; }
  html.pro .pq-act { grid-area: act; }
}

@media (max-width: 900px) {
  html.pro .pq-head,
  html.pro .pq-chips {
    padding-left: 16px;
    padding-right: 16px;
  }
  html.pro .pq-chips {
    flex-wrap: nowrap;
    overflow-x: auto;
    scrollbar-width: none;
  }
  html.pro .pq-chip {
    flex: none;
  }
  html.pro .pq-note {
    margin-left: 16px;
    margin-right: 16px;
  }
  html.pro .pq-row {
    grid-template-columns: minmax(0, 1fr) auto;
    grid-template-areas:
      "cat days"
      "main money"
      "facts facts"
      "act act";
    gap: 6px 12px;
    padding: 14px 16px;
  }
  html.pro .pq-cat { grid-area: cat; }
  html.pro .pq-main { grid-area: main; }
  html.pro .pq-facts { grid-area: facts; }
  html.pro .pq-money { grid-area: money; }
  html.pro .pq-days { grid-area: days; }
  html.pro .pq-act { grid-area: act; justify-content: flex-start; }
  html.pro .pq-act .cell-sub { text-align: left; }
  html.pro .pq-act:empty { display: none; }
}

/* 2026-09-28 各页对齐：卡片之间留一样的间距；提示条的标题和正文居中对齐 */
html.pro .content > .card + .card,
html.pro .content > .card + .notice {
  margin-top: 14px;
}
html.pro .notice.slim > b:first-child {
  align-self: center;
}
html.pro .pq-note:only-of-type {
  margin-top: 4px;
}
/* 卡片标题栏：标题靠左，提示和按钮一起靠右（原先有按钮时提示会漂在正中间） */
html.pro .table-tools {
  justify-content: flex-start;
  gap: 12px;
}
html.pro .table-tools > h3 {
  margin-right: auto;
}
html.pro .table-tools > .muted {
  text-align: right;
}
/* 表头筛选箭头平时不显示，鼠标移到表头或已在筛选时才出现 */
@media (hover: hover) {
  html.pro th .th-filter:not(.on) {
    opacity: 0;
    transition: opacity 0.15s;
  }
  html.pro th:hover .th-filter,
  html.pro th .th-filter:focus-visible {
    opacity: 1;
  }
}
/* 结算对账单：卡片里的说明和表格左边对齐 */
html.pro .card > .st-hint {
  margin: 10px 16px 4px;
}
/* 项目卡片是 button，内容默认垂直居中，同一行卡片高度不同时内容上下错开；改成从顶上排，底栏贴底 */
html.pro .ad-card {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
}
html.pro .ad-card > .ad-card-foot {
  margin-top: auto;
  padding-top: 10px;
}
html.pro .ad-card > .ad-progress {
  margin-top: auto;
}
html.pro .ad-card > .ad-progress + .ad-card-foot {
  margin-top: 10px;
}
html.pro .ad-card > .ad-highlight {
  align-self: flex-start;
}

/* 运营看的稿费单只读、列多：订单号、产品、类型、名字不折行（原来「星图稿\n费」「2026-09-18-01-\n02」） */
html.pro .ops-fee-table td,
html.pro .ops-fee-table th {
  white-space: nowrap;
}

/* ---------- 2026-10-09 视觉收口 ----------
   小节标题不再靠左边 3px 蓝线分层，只靠字重和上方留白 */
html.pro .crm-head,
html.pro .sf-panel section h4,
html.pro .order-section-title,
html.pro .detail-section h3 {
  border-left: 0;
  padding-left: 0;
}
html.pro .sys-info {
  border-left: 1px solid var(--pro-line);
}
/* 系统设置顶上的统计条：浅底，深色只留给侧栏 */
html.pro .sys-bar {
  background: var(--pro-card, #ffffff);
  border: 1px solid var(--pro-line);
  color: var(--pro-muted);
}
html.pro .sys-bar b {
  color: var(--pro-ink);
}
/* 投流项目物料：标题别被右边提示挤成竖排 */
html.pro .ad-brief .card-head h3 {
  flex: 0 0 auto;
  white-space: nowrap;
}
html.pro .ad-brief .card-head {
  flex-wrap: wrap;
}
html.pro .ad-brief .card-head .field-hint {
  flex: 1 0 100%;
  margin: 0;
}
html.pro .ad-upload {
  white-space: nowrap;
  flex-shrink: 0;
}
html.pro .ad-files a {
  color: var(--pro-clay);
  text-decoration: none;
}
html.pro .ad-files a:hover {
  text-decoration: underline;
}
/* 统计卡数字全站一个字号（原来 21 / 27 / 28 / 29 / 30 各页不一样） */
html.pro :is(.kpi .num, .order-stats button b, .metric-card b, .ad-kpi b, .revenue .total) {
  font-size: 26px;
  line-height: 32px;
  font-weight: 650;
  letter-spacing: -0.02em;
}
/* 表格行内按钮统一 28px，一行里不再大中小混着 */
html.pro :is(td, .row-actions) > :is(button, .btn, label.tiny):not(.id-link):not(.link-btn):not(.chip-x):not([aria-expanded]) {
  height: 28px;
  min-height: 28px;
  padding-top: 0;
  padding-bottom: 0;
  font-size: 12px;
  line-height: 26px;
}
/* 橙色提醒条：橙框蓝字看着像两种提示叠在一起，统一成浅橙底 + 橙字 */
html.pro .notice.warn-notice {
  background: color-mix(in srgb, var(--orange, #b78028) 8%, #ffffff);
  border-color: color-mix(in srgb, var(--orange, #b78028) 35%, transparent);
}
html.pro .notice.warn-notice > b:first-child {
  color: color-mix(in srgb, var(--orange, #b78028) 85%, #000000);
}
/* 达人在手机浏览器里打开：外层顶栏一行放下，手机框贴满屏，不留米色边和圆角 */
@media (max-width: 560px) {
  html.pro .top {
    flex-wrap: nowrap;
    min-height: 0;
    padding: 8px 12px;
  }
  html.pro .top .crumb > span {
    display: none;
  }
  html.pro .top {
    justify-content: space-between;
  }
  html.pro .top .who {
    margin-left: auto;
    padding-left: 0;
    border-left: 0;
  }
  html.pro .phone-stage {
    padding: 0;
  }
  html.pro .phone,
  html.pro .phone.t5 {
    width: 100%;
    max-width: none;
    height: calc(100dvh - 52px);
    border: 0;
    border-radius: 0;
    box-shadow: none;
  }
}
/* 订单详情抽屉顶部动作：小一号，「作废」做成红字次级按钮，不跟标题抢眼 */
html.pro .detail-actions > button {
  height: 32px;
  min-height: 32px;
  padding: 0 12px;
  font-size: 13px;
}
html.pro .detail-actions > button.danger,
html.pro .detail-actions > button[onclick*="void"],
html.pro .detail-actions > button[onclick*="Void"] {
  border-color: transparent;
  background: transparent;
  color: var(--pro-red);
}
html.pro .detail-actions > button.danger:hover,
html.pro .detail-actions > button[onclick*="oid"]:hover {
  background: color-mix(in srgb, var(--pro-red) 8%, transparent);
}

/* ---------- 10-09 全面走查 ---------- */
/* 顶栏消息铃铛 */
.top-bell {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  padding: 0;
  border: 1px solid var(--line, #e7e4de);
  border-radius: 10px;
  background: #fff;
  color: #5f5b53;
  cursor: pointer;
}
.top-bell:hover {
  background: #f6f5f2;
}
.top-bell svg {
  width: 18px;
  height: 18px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.top-bell i {
  position: absolute;
  top: -6px;
  right: -6px;
  min-width: 18px;
  height: 18px;
  padding: 0 5px;
  border-radius: 9px;
  background: #c4382f;
  color: #fff;
  font: 600 11px/18px system-ui, sans-serif;
  font-style: normal;
  text-align: center;
}
.msg-card.flash {
  box-shadow: 0 0 0 3px #2f4a8a33;
  transition: box-shadow 0.3s;
}
.cell-sub.danger {
  color: var(--red, #c4382f);
}
/* 核验入账弹窗里的凭证图 */
.ask-proof {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin: 10px 0 2px;
  padding: 8px;
  border: 1px solid var(--line, #e7e4de);
  border-radius: 10px;
  background: #fafaf8;
  text-decoration: none;
  color: inherit;
}
.ask-proof img {
  display: block;
  max-width: 100%;
  max-height: 220px;
  object-fit: contain;
  border-radius: 6px;
  background: #fff;
}
.ask-proof small {
  color: var(--muted, #8a867d);
  font-size: 12px;
}
/* 付款页 / 对账页右侧单据的按钮条贴在屏幕底部（10-09）：卖货佣金几十行，按钮原来要翻到底才看得到 */
.sf-panel .sf-acts {
  position: sticky;
  bottom: 0;
  z-index: 3;
  box-shadow: 0 -8px 18px rgba(30, 28, 24, 0.06);
}
/* 结算单抽屉加宽：明细表（订单号 / 商品 / 金额 / 时间）在 520 宽里商品列被挤没了 */
.metric-drawer:has(.payment-detail) {
  width: min(760px, 94vw);
}
.sb-com .c-id {
  width: 168px;
}
/* 达人库：地址一行省略（悬停看全），表格不再撑出横向滚动、把「合作关系 / 状态 / 负责运营」压在操作列底下 */
td.tl-recv {
  max-width: 230px;
}
.tl-addr {
  display: block;
  max-width: 230px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.table-tools .dy-search {
  margin-left: auto;
  width: 240px;
  height: 34px;
  padding: 0 12px;
  border: 1px solid var(--line, #e7e4de);
  border-radius: 8px;
  background: #fff;
  font-size: 13px;
}
/* 可折叠的卡片（如「本月未交齐」）标题前加箭头，原来看不出能点开 */
details.ad-behind > summary {
  cursor: pointer;
  list-style: none;
}
details.ad-behind > summary::-webkit-details-marker {
  display: none;
}
details.ad-behind > summary h3::before {
  content: "▸";
  display: inline-block;
  width: 14px;
  margin-right: 4px;
  color: var(--muted, #8a867d);
  transition: transform 0.15s;
}
details.ad-behind[open] > summary h3::before {
  transform: rotate(90deg);
}
/* 结算单抽屉里的按钮也贴底，不用先翻过几十行佣金明细 */
.metric-drawer .doc-acts {
  position: sticky;
  bottom: 0;
  z-index: 3;
  margin: 0 -12px;
  padding: 10px 12px;
  background: #fff;
  box-shadow: 0 -8px 18px rgba(30, 28, 24, 0.06);
}
/* 稿费订单在 13 寸笔记本（1280–1440 宽）上放不下（10-09）：负责人、截止时间被挤到右边看不见，
   「还差」被截断。窄屏时收掉「业务日期」（订单号开头就是这个日期）和「商品名称」（并到客户下面一行）。 */
.c-prod-sub {
  display: none;
}
@media (max-width: 1480px) {
  .crm-order-list .c-date,
  .crm-order-list .c-prod {
    display: none;
  }
  .crm-order-list .c-prod-sub {
    display: block;
  }
  .table-card .unified-table.order-table.crm-order-list {
    min-width: 960px;
  }
  html.pro .crm-order-list td .cell-sub.warn {
    max-width: 150px;
  }
}
/* 达人库原来 min-width 1560px，1440 宽屏上「合作关系 / 状态 / 负责运营」被压在贴右的操作列底下，
   要横向拖才看得到（10-09 全面走查）。地址收成一行后 1150 就放得下，窄于这个宽度才横向滚动。 */
[data-scope="talents"] table {
  min-width: 980px;
}
/* 1280 宽屏内容区只有约 1000px，1150 还是要横向拖（10-10）：地址再收窄一点，980 放得下 */
[data-scope="talents"] td.tl-recv,
[data-scope="talents"] .tl-addr {
  max-width: 168px;
}
[data-scope="talents"] td .cell-sub.tl-addr {
  white-space: nowrap;
}
/* 达人端稿费合作（10-10）：可点、带状态 */
.t5-chip.warn {
  background: #fff3e0;
  color: #a8611b;
}
/* 投流按月汇总（10-10） */
.ad-sum-card {
  margin-top: 16px;
}
.ad-sum-table tr.ad-sum-now td {
  background: #fbfaf6;
}
.ad-sum-table td.ad-sum-behind {
  max-width: 280px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: #8a5a1b;
}

/* ---------- 投流月报（月度汇总穿透页，10-10）：所有选择器都挂在 .sum-page 下，避免和结算拆分的 .sf-* 撞名 ---------- */
.ad-sum-table .sum-link {
  cursor: pointer;
  text-decoration: underline dotted var(--line);
  text-underline-offset: 3px;
}
.ad-sum-table .sum-link:hover {
  color: var(--chart-1);
  text-decoration-color: currentColor;
}
.sum-page .ad-kpi .sum-sub {
  color: var(--muted);
  font-size: 12px;
}
.sum-page .sum-grid {
  display: grid;
  grid-template-columns: 1.2fr 1fr 1fr;
  gap: 14px;
  margin-bottom: 16px;
}
.sum-page .sum-grid > .card {
  margin: 0;
  min-width: 0;
}
.sum-page .sum-grid .padded {
  padding: 14px 18px 18px;
}
.sum-page .sum-none {
  margin: 18px 0;
  text-align: center;
}
/* 漏斗：单一序列，同一色相由浅到深 */
.sum-page .sum-funnel {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.sum-page .sum-funnel .sf-row {
  display: grid;
  grid-template-columns: 44px 1fr 34px 40px;
  align-items: center;
  gap: 10px;
  font-size: 13px;
}
.sum-page .sum-funnel .sf-k {
  color: var(--muted);
}
.sum-page .sum-funnel .sf-track {
  height: 14px;
  background: #f1efe9;
  border-radius: 4px;
  overflow: hidden;
}
.sum-page .sum-funnel .sf-bar {
  display: block;
  height: 100%;
  padding: 0;
  border: 0;
  border-radius: 0 4px 4px 0;
  background: var(--chart-1);
}
.sum-page .sum-funnel .sf-bar.s0 { opacity: 0.35; }
.sum-page .sum-funnel .sf-bar.s1 { opacity: 0.6; }
.sum-page .sum-funnel .sf-bar.s2 { opacity: 0.8; }
.sum-page .sum-funnel .sf-bar.s3 { opacity: 1; }
.sum-page .sum-funnel b {
  text-align: right;
  font-variant-numeric: tabular-nums;
}
.sum-page .sum-funnel em {
  font-style: normal;
  color: var(--muted);
  font-size: 12px;
  text-align: right;
}
/* 状态：已投=绿 待投放=蓝 卡审=橙 不投=灰，图例带文字和数，颜色不单独表意 */
.sum-page .st-ok { background: var(--green, #1f784a); }
.sum-page .st-wait { background: var(--chart-1, #365596); }
.sum-page .st-warn { background: var(--orange, #97590c); }
.sum-page .st-off { background: #b9b5ab; }
.sum-page .sum-stack {
  display: flex;
  gap: 2px;
  height: 18px;
  margin: 6px 0 14px;
}
.sum-page .sum-stack i {
  min-width: 4px;
}
.sum-page .sum-stack i:first-child { border-radius: 4px 0 0 4px; }
.sum-page .sum-stack i:last-child { border-radius: 0 4px 4px 0; }
.sum-page .sum-stack i:only-child { border-radius: 4px; }
.sum-page .sum-legend {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 6px;
}
.sum-page .sum-legend button {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 7px 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fff;
  color: inherit;
  font-size: 13px;
  text-align: left;
}
.sum-page .sum-legend button i {
  width: 10px;
  height: 10px;
  border-radius: 3px;
  flex: none;
}
.sum-page .sum-legend button b {
  margin-left: auto;
  font-variant-numeric: tabular-nums;
}
.sum-page .sum-legend button small {
  color: var(--muted);
  width: 34px;
  text-align: right;
}
.sum-page .sum-legend button.on {
  border-color: var(--ink, #1f1d1a);
  box-shadow: inset 0 0 0 1px var(--ink, #1f1d1a);
}
.sum-page .sum-legend button:disabled {
  opacity: 0.45;
  cursor: default;
}
/* 各月交付率：一个月一根柱，选中的月实色，其它浅色 */
.sum-page .sum-trend {
  display: flex;
  align-items: stretch;
  gap: 6px;
  height: 150px;
  overflow-x: auto;
}
.sum-page .sum-trend .st-col {
  flex: 1 0 34px;
  max-width: 64px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  padding: 0;
  border: 0;
  background: none;
  color: inherit;
  cursor: pointer;
}
.sum-page .sum-trend .st-val {
  font-size: 11px;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
}
.sum-page .sum-trend .st-bar {
  flex: 1;
  width: 60%;
  display: flex;
  align-items: flex-end;
  border-bottom: 1px solid var(--line);
}
.sum-page .sum-trend .st-bar i {
  display: block;
  width: 100%;
  border-radius: 4px 4px 0 0;
  background: var(--chart-1);
  opacity: 0.3;
}
.sum-page .sum-trend .st-m {
  font-size: 12px;
  color: var(--muted);
}
.sum-page .sum-trend .st-col:hover .st-bar i { opacity: 0.55; }
.sum-page .sum-trend .st-col.on .st-bar i { opacity: 1; }
.sum-page .sum-trend .st-col.on .st-val,
.sum-page .sum-trend .st-col.on .st-m {
  color: var(--ink, #1f1d1a);
  font-weight: 600;
}
/* 表格里的小进度条和状态点 */
.sum-page .sum-mini {
  display: inline-block;
  width: 90px;
  height: 6px;
  background: #f1efe9;
  border-radius: 4px;
  overflow: hidden;
  vertical-align: middle;
}
.sum-page .sum-mini i {
  display: block;
  height: 100%;
  border-radius: 4px;
  background: var(--green, #1f784a);
}
.sum-page .sum-mini i.short {
  background: var(--orange, #97590c);
}
.sum-page .sum-st {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: none !important;
}
.sum-page .sum-st i {
  width: 8px;
  height: 8px;
  border-radius: 50%;
}
.sum-page .sum-st.st-ok i { background: var(--green, #1f784a); }
.sum-page .sum-st.st-wait i { background: var(--chart-1, #365596); }
.sum-page .sum-st.st-warn i { background: var(--orange, #97590c); }
.sum-page .sum-st.st-off i { background: #b9b5ab; }
@media (max-width: 1100px) {
  .sum-page .sum-grid { grid-template-columns: 1fr 1fr; }
  .sum-page .sum-grid > .card:first-child { grid-column: 1 / -1; }
}
@media (max-width: 720px) {
  .sum-page .sum-grid { grid-template-columns: 1fr; }
  .sum-page .ad-kpis { grid-template-columns: 1fr 1fr; }
}
/* 达人库操作列（运营 / 超管有三个按钮）折成两行，不再把表格撑出横向滚动（10-10） */
[data-scope="talents"] td.row-actions {
  white-space: normal;
  width: 84px;
}
[data-scope="talents"] td.row-actions .tiny {
  display: block;
  width: 100%;
  margin: 3px 0;
  white-space: nowrap;
}


/* ===== web/src/css/35-login.css ===== */
/* ===================== 登录页（2026-10-08，参照巨量星图首页；第三版收简） =====================
   结构见 260-login.js 的 loginShell()：整屏背景片 + 遮罩 + 左下大标题 + 右侧登录卡 + 左下角镜头字幕。
   动效只有一次进场（视频淡入 → 标题两行升起 → 登录卡浮上，1.2 秒内收住）和一行镜头字幕；
   没有视差、鼠标跟随、无限循环的装饰。退场 0.28 秒，只在登录成功后走。
   卡片内部（账号列表、开发入口）沿用原来的样式，这里只改外壳、卡片底色和密码表单。 */

.login-stage {
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --ease-in: cubic-bezier(0.7, 0, 0.84, 0);
  --login-ink: #ffffff;
  --login-ink-2: rgba(255, 255, 255, 0.78);
  --login-ink-3: rgba(255, 255, 255, 0.5);
  --login-night: rgba(6, 10, 22, 1);
  position: relative;
  min-height: 100vh;
  min-height: 100dvh;
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(360px, 420px);
  grid-template-rows: auto 1fr;
  gap: 0 64px;
  padding: 0 clamp(20px, 6vw, 96px) 64px;
  overflow: hidden;
  color: var(--login-ink);
  background: #0b1020 url("media/login-bg-v2.jpg") center / cover no-repeat;
  isolation: isolate;
}

/* ---------- 背景 ---------- */
.login-video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  z-index: -2;
  animation: login-video-in 1.2s var(--ease-out) backwards;
}
.login-veil {
  position: absolute;
  inset: 0;
  z-index: -1;
  background:
    linear-gradient(90deg, rgba(6, 10, 22, 0.78) 0%, rgba(6, 10, 22, 0.4) 42%, rgba(6, 10, 22, 0.12) 68%, rgba(6, 10, 22, 0.36) 100%),
    linear-gradient(0deg, rgba(6, 10, 22, 0.72) 0%, transparent 40%);
}

/* ---------- 品牌 ---------- */
.login-top {
  grid-column: 1 / -1;
  display: flex;
  align-items: center;
  gap: 12px;
  height: 84px;
}
html.pro .login-top .brandmark {
  width: 36px;
  height: 36px;
  border-radius: 10px;
  font-size: 18px;
}
.login-top b {
  font-size: 17px;
  letter-spacing: 0.04em;
}

/* ---------- 标题：两行各自从遮罩里升起 ---------- */
.login-hero {
  align-self: end;
  padding-bottom: 9vh;
  max-width: 680px;
}
.login-hero h1 {
  margin: 0;
  font-size: clamp(38px, 4.8vw, 68px);
  line-height: 1.14;
  font-weight: 800;
  letter-spacing: 0.01em;
}
.login-hero h1 span {
  display: block;
  overflow: hidden;
  padding-bottom: 0.08em;
}
.login-hero h1 b {
  display: block;
  font-weight: inherit;
  animation: login-line 0.9s var(--ease-out) backwards;
  animation-delay: 0.15s;
}
.login-hero h1 span + span b {
  animation-delay: 0.27s;
}
.login-hero p {
  margin: 20px 0 0;
  max-width: 34em;
  font-size: clamp(15px, 1.25vw, 18px);
  line-height: 1.6;
  color: var(--login-ink-2);
  animation: login-fade 0.8s 0.5s var(--ease-out) backwards;
}

/* ---------- 登录卡 ---------- */
.login-panel {
  min-width: 0;
  align-self: center;
  color: var(--pro-ink, #151b26);
}
html.pro .login-stage .login-card {
  width: 100%;
  padding: 32px 30px 28px;
  border-radius: 20px;
  background: rgba(255, 255, 255, 0.94);
  border: 1px solid rgba(255, 255, 255, 0.7);
  box-shadow: 0 30px 80px rgba(0, 0, 0, 0.35);
  -webkit-backdrop-filter: blur(20px) saturate(1.3);
  backdrop-filter: blur(20px) saturate(1.3);
  animation: login-card-in 0.8s 0.35s var(--ease-out) backwards;
}
html.pro .login-stage .login-card.shake {
  animation: login-shake 0.36s var(--ease-out);
}
html.pro .login-stage .login-brand {
  margin-bottom: 0;
}
html.pro .login-stage .login-brand b {
  font-family: var(--pro-sans, inherit);
  font-size: 22px;
  font-weight: 700;
}
html.pro .login-stage .login-brand small {
  display: block;
  margin-top: 4px;
}
.login-stage .login-list {
  max-height: 56vh;
  overflow-y: auto;
  margin-top: 18px;
}
html.pro .login-stage .login-item {
  transition:
    border-color 0.22s var(--ease-out),
    background 0.22s var(--ease-out),
    transform 0.22s var(--ease-out);
}
html.pro .login-stage .login-item:hover {
  transform: translateY(-1px);
}
html.pro .login-stage .login-item:active {
  transform: translateY(0);
}

/* 密码表单 */
.login-stage .login-form {
  gap: 16px;
  margin: 22px 0 6px;
}
.login-stage .login-form input {
  height: 46px;
  width: 100%;
  box-sizing: border-box;
}
.login-pwd {
  position: relative;
  display: block;
}
.login-pwd input {
  padding-right: 64px;
}
html.pro .login-stage .login-eye {
  position: absolute;
  top: 50%;
  right: 6px;
  height: 32px;
  padding: 0 10px;
  transform: translateY(-50%);
  border: 0;
  border-radius: 8px;
  background: transparent;
  color: var(--pro-muted, #5f6a7c);
  font-size: 13px;
  font-weight: 500;
}
html.pro .login-stage .login-eye:hover {
  background: var(--pro-bg-sunk, #eef1f5);
  color: var(--pro-ink, #151b26);
}
.login-err {
  min-height: 18px;
  margin: -6px 0 -4px;
  font-size: 13px;
  color: var(--pro-red, #c93a2e);
}
.login-err[data-kind="caps"] {
  color: var(--pro-amber, #a35a00);
}
.login-stage .login-form button.primary {
  height: 46px;
  transition:
    background 0.18s var(--ease-out),
    transform 0.12s var(--ease-out);
}
.login-stage .login-form button.primary:active {
  transform: scale(0.99);
}
html.pro .login-stage .login-foot {
  margin-top: 16px;
}

/* ---------- 镜头字幕（左下角，唯一的常驻动态） ---------- */
.login-scene {
  position: absolute;
  left: clamp(20px, 6vw, 96px);
  bottom: 28px;
  display: flex;
  align-items: baseline;
  gap: 10px;
  font-size: 13px;
  letter-spacing: 0.08em;
  color: var(--login-ink-3);
  font-variant-numeric: tabular-nums;
  animation: login-fade 0.8s 0.9s var(--ease-out) backwards;
}
.login-scene em {
  align-self: center;
  width: 56px;
  height: 2px;
  margin-right: 4px;
  overflow: hidden;
  border-radius: 2px;
  background: rgba(255, 255, 255, 0.2);
}
.login-scene u {
  display: block;
  height: 100%;
  background: var(--login-ink);
  transform-origin: left;
  transform: scaleX(0);
}
.login-scene span,
.login-scene b {
  color: var(--login-ink);
  font-weight: 600;
  transition:
    opacity 0.18s var(--ease-out),
    transform 0.18s var(--ease-out);
}
.login-scene.swap span,
.login-scene.swap b {
  opacity: 0;
  transform: translateY(4px);
}

.login-scene {
  left: calc(clamp(20px, 6vw, 96px) + 40px);
}
.login-pause {
  position: absolute;
  left: clamp(20px, 6vw, 96px);
  bottom: 20px;
  width: 30px;
  height: 30px;
  padding: 0;
  border: 1px solid rgba(255, 255, 255, 0.28);
  border-radius: 50%;
  background: rgba(6, 10, 22, 0.3);
  display: grid;
  place-items: center;
  cursor: pointer;
  animation: login-fade 0.8s 0.9s var(--ease-out) backwards;
  transition: background 0.18s var(--ease-out), border-color 0.18s var(--ease-out);
}
.login-pause:hover {
  background: rgba(255, 255, 255, 0.16);
  border-color: rgba(255, 255, 255, 0.5);
}
.login-pause:focus-visible {
  outline: 2px solid var(--login-ink);
  outline-offset: 2px;
}
/* 两竖 = 暂停；暂停后变三角 = 播放 */
.login-pause i {
  width: 8px;
  height: 10px;
  border-left: 2.5px solid var(--login-ink);
  border-right: 2.5px solid var(--login-ink);
  box-sizing: border-box;
}
.login-pause.paused i {
  width: 0;
  height: 0;
  margin-left: 2px;
  border-style: solid;
  border-width: 5px 0 5px 8px;
  border-color: transparent transparent transparent var(--login-ink);
}
.login-stage.leaving .login-pause {
  opacity: 0;
  transition: opacity 0.22s var(--ease-in);
}

/* ---------- 退场：只在登录成功后 ---------- */
.login-stage.leaving .login-video {
  transform: scale(1.06);
  opacity: 0.4;
  transition:
    transform 0.28s var(--ease-in),
    opacity 0.28s var(--ease-in);
}
.login-stage.leaving .login-hero,
.login-stage.leaving .login-panel,
.login-stage.leaving .login-top,
.login-stage.leaving .login-scene {
  opacity: 0;
  transition: opacity 0.22s var(--ease-in);
}

/* ---------- 开发入口：身份卡片多，卡片铺宽放到标题下面 ---------- */
.login-stage.wide {
  grid-template-columns: minmax(0, 1fr);
  grid-template-rows: auto auto auto;
  overflow-y: auto;
}
.login-stage.wide .login-hero {
  align-self: start;
  padding: 2vh 0 28px;
}
.login-stage.wide .login-panel {
  align-self: start;
  justify-self: center;
  width: min(900px, 100%);
}
html.pro .login-stage.wide .login-card {
  max-width: none;
  width: 100%;
}
.login-stage.wide .login-video,
.login-stage.wide .login-veil,
.login-stage.wide .login-scene,
.login-stage.wide .login-pause {
  position: fixed;
}

/* ---------- 关键帧 ---------- */
@keyframes login-video-in {
  from {
    opacity: 0;
    transform: scale(1.04);
  }
}
@keyframes login-line {
  from {
    transform: translateY(105%);
  }
}
@keyframes login-fade {
  from {
    opacity: 0;
  }
}
@keyframes login-card-in {
  from {
    opacity: 0;
    transform: translateY(16px);
  }
}
@keyframes login-shake {
  20% { transform: translateX(-6px); }
  45% { transform: translateX(5px); }
  70% { transform: translateX(-3px); }
  90% { transform: translateX(1px); }
}

/* ---------- 手机：标题在上、卡片在下，背景只铺封面帧（视频不加载） ---------- */
@media (max-width: 767px) {
  .login-stage {
    grid-template-columns: minmax(0, 1fr);
    grid-template-rows: auto auto auto;
    gap: 0;
    padding: 0 16px 32px;
    overflow: visible;
  }
  .login-top {
    height: 64px;
  }
  .login-hero {
    align-self: start;
    padding: 4vh 0 24px;
  }
  .login-hero h1 {
    font-size: 32px;
  }
  .login-hero p {
    margin-top: 12px;
    font-size: 14px;
  }
  html.pro .login-stage .login-card {
    padding: 24px 20px 20px;
  }
  .login-stage .login-list {
    max-height: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .login-stage *,
  .login-stage *::before,
  .login-stage *::after {
    animation: none !important;
    transition-duration: 0.15s !important;
  }
}


/* ===== web/src/css/36-intro.css ===== */
/* ===================== 宣传首屏（2026-10-08，登录的第一步，「引擎点火」版，背景按 D 融合方案定稿） =====================
   结构见 262-intro.js。全屏原色背景片 → 往下滑收成右侧画框、宣言在左、粒子齿轮在画框角上组装 → 品牌墙、价值卡、收尾；右下角转速表。
   脚本写在 .intro 上的变量：--hero（首屏滚过多少，0～1）、--after（之后又滚了多少，0～1）、--power（转速，0～1）。
   点「登录 / 进入系统」走跃迁过场。 */

.intro {
  --night: #050914;
  --night-2: #0a1226;
  --cyan: #7fd4ff;
  --cyan-dim: rgba(127, 212, 255, 0.35);
  --blue: #3d6bff;
  --ink: #ffffff;
  --ink-2: rgba(255, 255, 255, 0.72);
  --ink-3: rgba(255, 255, 255, 0.45);
  --line: rgba(127, 212, 255, 0.16);
  --amber: #ffb547;
  --green: #3ddc97;
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --ease-in: cubic-bezier(0.7, 0, 0.84, 0);
  position: fixed;
  inset: 0;
  overflow-x: clip;
  overflow-y: auto;
  color: var(--ink);
  background:
    radial-gradient(1px 1px at 12% 22%, rgba(255, 255, 255, 0.5), transparent 60%),
    radial-gradient(1px 1px at 68% 38%, rgba(255, 255, 255, 0.35), transparent 60%),
    radial-gradient(1.5px 1.5px at 38% 74%, rgba(127, 212, 255, 0.5), transparent 60%),
    radial-gradient(1px 1px at 86% 82%, rgba(255, 255, 255, 0.4), transparent 60%),
    radial-gradient(1px 1px at 24% 56%, rgba(255, 255, 255, 0.3), transparent 60%),
    radial-gradient(1.5px 1.5px at 92% 14%, rgba(127, 212, 255, 0.45), transparent 60%),
    radial-gradient(900px 600px at 50% 120%, rgba(61, 107, 255, 0.12), transparent 70%),
    var(--night);
  background-size: 420px 420px, 380px 380px, 520px 520px, 460px 460px, 300px 300px, 560px 560px, 100% 100%, 100% 100%;
  background-attachment: local;
  isolation: isolate;
  scrollbar-width: none;
}
.intro::-webkit-scrollbar {
  display: none;
}

/* ---------- 背景层：原色片子（固定在画面上）+ 文字区压暗 ----------
   片子是主角：不调色、不加网格扫描线。桌面上往下滑，片子按 --hero 收成右侧画框（右 5vw、宽 36vw、上下 14vh～86vh），
   宣言收窄到左半边，再按 --after 淡出；手机上不收画框，只往后退暗。 */
.intro-video {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100vh;
  object-fit: cover;
  z-index: -3;
  opacity: calc(1 - var(--after, 0) * 0.7);
  filter: contrast(1.04) brightness(calc(0.95 - var(--hero, 0) * 0.45));
  transform: scale(calc(1 + var(--hero, 0) * 0.08));
  animation: intro-in 1.4s var(--ease-out) backwards;
}
.intro-fx {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  height: 100vh;
  z-index: -2;
  overflow: hidden;
  pointer-events: none;
  background:
    linear-gradient(90deg, rgba(5, 9, 20, 0.8) 0%, rgba(5, 9, 20, 0.4) 36%, rgba(5, 9, 20, 0) 60%),
    linear-gradient(0deg, rgba(5, 9, 20, 0.75) 0%, rgba(5, 9, 20, 0) 32%);
}
@media (min-width: 901px) {
  .intro-video {
    top: calc(14vh * var(--hero, 0));
    left: auto;
    right: calc(5vw * var(--hero, 0));
    width: calc(100vw - 64vw * var(--hero, 0));
    height: calc(100vh - 28vh * var(--hero, 0));
    border-radius: calc(24px * var(--hero, 0));
    opacity: calc(1 - var(--after, 0) * 1.7);
    filter: contrast(1.04) brightness(0.95);
    transform: none;
    box-shadow: 0 40px 120px rgba(0, 0, 0, calc(0.55 * var(--hero, 0))), 0 0 0 1px rgba(255, 255, 255, calc(0.1 * var(--hero, 0)));
  }
  .intro-fx {
    opacity: calc(1 - var(--hero, 0));
  }
  .mani {
    max-width: 50vw;
  }
  .intro .mani p {
    font-size: clamp(26px, 2.9vw, 44px);
  }
}
@media (max-width: 900px) {
  /* 手机文字在下半屏，压暗改成从下往上 */
  .intro-fx {
    background: linear-gradient(0deg, rgba(5, 9, 20, 0.94) 0%, rgba(5, 9, 20, 0.6) 42%, rgba(5, 9, 20, 0) 72%);
  }
}
.intro-warp {
  position: absolute;
  inset: -50%;
  opacity: 0;
  background: repeating-conic-gradient(from 0deg at 50% 50%, rgba(127, 212, 255, 0.55) 0deg 0.6deg, transparent 0.6deg 5deg);
  -webkit-mask-image: radial-gradient(circle at 50% 50%, transparent 6%, #000 24%, rgba(0, 0, 0, 0.6) 42%, transparent 62%);
  mask-image: radial-gradient(circle at 50% 50%, transparent 6%, #000 24%, rgba(0, 0, 0, 0.6) 42%, transparent 62%);
}

/* ---------- 顶栏 ---------- */
.intro-nav {
  position: sticky;
  top: 0;
  z-index: 5;
  display: flex;
  align-items: center;
  gap: 32px;
  height: 76px;
  padding: 0 clamp(20px, 5vw, 80px);
  background: rgba(5, 9, 20, 0.55);
  border-bottom: 1px solid rgba(127, 212, 255, 0.08);
  -webkit-backdrop-filter: blur(14px);
  backdrop-filter: blur(14px);
  animation: intro-in 0.8s 0.1s var(--ease-out) backwards;
}
.intro-brand {
  display: flex;
  align-items: center;
  gap: 12px;
}
html.pro .intro-brand .brandmark {
  width: 34px;
  height: 34px;
  border-radius: 10px;
  font-size: 17px;
  box-shadow: 0 0 24px rgba(61, 107, 255, 0.6);
}
.intro-brand b {
  font-size: 17px;
  letter-spacing: 0.04em;
}
html.pro .intro-login {
  margin-left: auto;
  height: 38px;
  padding: 0 22px;
  border-radius: 10px;
  border: 1px solid rgba(255, 255, 255, 0.85);
  background: #ffffff;
  color: var(--night);
  font-size: 14px;
  font-weight: 600;
  transition: transform 0.15s var(--ease-out), box-shadow 0.2s var(--ease-out);
}
html.pro .intro-login:hover {
  transform: translateY(-1px);
  box-shadow: 0 0 0 4px rgba(127, 212, 255, 0.25);
}

/* ---------- 首屏 ---------- */
.intro-hero {
  position: relative;
  min-height: calc(100vh - 76px);
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr);
  align-items: center;
  gap: 40px;
  padding: 0 clamp(20px, 5vw, 80px) 80px;
}
.intro-hero h1 {
  margin: 0;
  font-size: clamp(40px, 5.2vw, 76px);
  line-height: 1.12;
  font-weight: 800;
  letter-spacing: 0.01em;
  text-shadow: 0 2px 30px rgba(0, 0, 0, 0.45);
}
.intro-hero h1 span {
  display: block;
  animation: intro-rise 1s 0.25s var(--ease-out) backwards;
}
.intro-hero h1 span + span {
  animation-delay: 0.4s;
}
.intro-hero h1 span + span {
  background: linear-gradient(90deg, #ffffff 0%, #ffffff 40%, var(--cyan) 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}
.intro-lede {
  max-width: 30em;
  margin: 24px 0 0;
  font-size: clamp(15px, 1.25vw, 18px);
  line-height: 1.7;
  color: rgba(255, 255, 255, 0.86);
  text-shadow: 0 1px 12px rgba(0, 0, 0, 0.6);
  animation: intro-rise 0.9s 0.9s var(--ease-out) backwards;
}
.intro-cta {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 24px;
  margin-top: 40px;
  animation: intro-rise 0.9s 1.05s var(--ease-out) backwards;
}
/* 主按钮：一圈流光描边 */
html.pro .intro-go {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 12px;
  height: 52px;
  padding: 0 28px;
  border: 0;
  border-radius: 14px;
  background: var(--night-2);
  color: var(--ink);
  font-size: 16px;
  font-weight: 600;
  isolation: isolate;
  overflow: hidden;
  transition: transform 0.2s var(--ease-out);
}
html.pro .intro-go::before {
  content: "";
  position: absolute;
  inset: -150%;
  z-index: -2;
  background: conic-gradient(from 0deg, transparent 0deg, var(--cyan) 60deg, var(--blue) 120deg, transparent 180deg, transparent 360deg);
  animation: intro-spin 3.2s linear infinite;
}
html.pro .intro-go::after {
  content: "";
  position: absolute;
  inset: 1.5px;
  z-index: -1;
  border-radius: 12.5px;
  background: linear-gradient(180deg, #13204a, #0b1430);
}
html.pro .intro-go:hover {
  transform: translateY(-2px);
}
html.pro .intro-go:active {
  transform: translateY(0);
}
.intro-go i {
  width: 18px;
  height: 2px;
  background: currentColor;
  position: relative;
  transition: transform 0.25s var(--ease-out);
}
.intro-go i::after {
  content: "";
  position: absolute;
  right: 0;
  top: -4px;
  width: 8px;
  height: 8px;
  border-top: 2px solid currentColor;
  border-right: 2px solid currentColor;
  transform: rotate(45deg);
}
.intro-go:hover i {
  transform: translateX(4px);
}
.intro-more {
  color: var(--ink-2);
  font-size: 14px;
  text-decoration: none;
  border-bottom: 1px solid var(--ink-3);
  padding-bottom: 2px;
}
.intro-more:hover {
  color: var(--ink);
}

/* ---------- 立体粒子引擎：画布固定在顶栏下面，首屏时透明，往下滑才组装出来 ---------- */
.intro-engine {
  position: fixed;
  inset: 76px 0 0 0;
  z-index: 0;
  pointer-events: none;
}
/* 往下的各段压在齿轮画布上面 */
.intro-sec,
.brand-wall {
  position: relative;
  z-index: 1;
}
.intro-copy {
  position: relative;
  z-index: 1;
  pointer-events: none;
}
.intro-copy .intro-cta {
  pointer-events: auto;
}
/* 阶段标签：STAGE 02 · ACCELERATE 加速；首屏那条是品牌名 */
.stage-tag {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  margin: 0 0 22px;
  font-size: 12px;
  letter-spacing: 0.24em;
  color: var(--cyan);
  animation: intro-rise 0.8s 0.15s var(--ease-out) backwards;
}
.stage-tag i {
  width: 28px;
  height: 1.5px;
  background: var(--cyan);
  box-shadow: 0 0 10px var(--cyan);
}
.brand-tag {
  font-weight: 600;
}
.intro-sec > .stage-tag,
.intro-end > .stage-tag {
  margin-bottom: 36px;
}

.intro-scroll {
  position: absolute;
  left: 50%;
  bottom: 28px;
  z-index: 1;
  width: 22px;
  height: 34px;
  margin-left: -11px;
  border: 1.5px solid var(--ink-3);
  border-radius: 12px;
  animation: intro-in 1s 1.6s var(--ease-out) backwards;
}
.intro-scroll i {
  position: absolute;
  left: 50%;
  top: 7px;
  width: 3px;
  height: 7px;
  margin-left: -1.5px;
  border-radius: 2px;
  background: var(--ink-2);
  animation: intro-wheel 1.8s ease-in-out infinite;
}

/* ---------- 往下滑：宣言 + 价值 ---------- */
.intro-sec {
  max-width: 1240px;
  margin: 0 auto;
  padding: 140px clamp(20px, 5vw, 80px);
}
/* 宣言：一句一句被点亮，像信号逐行接收 */
.mani p {
  margin: 0;
  font-size: clamp(28px, 4vw, 56px);
  line-height: 1.35;
  font-weight: 800;
  color: rgba(255, 255, 255, 0.12);
  transition:
    color 0.9s calc(var(--i) * 0.14s) var(--ease-out),
    text-shadow 0.9s calc(var(--i) * 0.14s) var(--ease-out);
}
.mani p.lit {
  color: var(--ink);
  text-shadow: 0 0 30px rgba(61, 107, 255, 0.45);
  animation: intro-print 0.9s calc(var(--i) * 0.14s) var(--ease-out) backwards;
}
/* 全息打印：一道扫描线从上往下把这句「印」出来，带一点红蓝错位，印完收住 */
@keyframes intro-print {
  0% {
    clip-path: inset(0 0 100% 0);
    text-shadow: -3px 0 rgba(255, 60, 90, 0.7), 3px 0 rgba(60, 200, 255, 0.7);
  }
  60% {
    clip-path: inset(0 0 0 0);
    text-shadow: -1.5px 0 rgba(255, 60, 90, 0.5), 1.5px 0 rgba(60, 200, 255, 0.5);
  }
  70% { opacity: 0.6; }
  80% { opacity: 1; }
}
.mani p:nth-child(3).lit,
.mani p:nth-child(6).lit {
  background: linear-gradient(90deg, #ffffff 0%, var(--cyan) 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}
/* ---------- 合作品牌墙：按行业分行，奇偶行反向滚，速度跟转速走（脚本推） ---------- */
.intro-brands {
  padding-bottom: 48px;
}
.intro-brands h2 {
  margin: 0;
  font-size: clamp(32px, 4.4vw, 64px);
  line-height: 1.2;
  font-weight: 800;
}
.intro-brands h2 span {
  display: block;
}
.intro-brands h2 span + span {
  background: linear-gradient(90deg, #ffffff 0%, var(--cyan) 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}
.intro-brands header p {
  max-width: 34em;
  margin: 20px 0 0;
  font-size: clamp(15px, 1.2vw, 17px);
  line-height: 1.7;
  color: var(--ink-2);
}
.brand-wall {
  display: grid;
  gap: 14px;
  padding: 8px 0 40px;
  overflow: hidden;
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 12%, #000 88%, transparent);
  mask-image: linear-gradient(90deg, transparent, #000 12%, #000 88%, transparent);
}
.brand-row {
  overflow: hidden;
}
.brand-track {
  display: flex;
  align-items: center;
  gap: 14px;
  width: max-content;
  will-change: transform;
}
.bw-name {
  flex: none;
  padding: 14px 28px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(127, 212, 255, 0.07), rgba(127, 212, 255, 0.015));
  font-size: clamp(17px, 1.6vw, 22px);
  font-weight: 700;
  letter-spacing: 0.04em;
  color: rgba(255, 255, 255, calc(0.62 + var(--power, 0) * 0.38));
  white-space: nowrap;
  transition: border-color 0.2s var(--ease-out), color 0.2s var(--ease-out), box-shadow 0.2s var(--ease-out);
}
.bw-name:hover {
  color: var(--ink);
  border-color: var(--cyan-dim);
  box-shadow: 0 0 24px rgba(61, 107, 255, 0.35);
}
.brand-cat {
  flex: none;
  padding: 0 10px 0 22px;
  font-size: 12px;
  letter-spacing: 0.24em;
  color: var(--cyan);
  white-space: nowrap;
}
.brand-cat::before {
  content: "";
  display: inline-block;
  width: 6px;
  height: 6px;
  margin-right: 10px;
  border-radius: 50%;
  background: var(--cyan);
  box-shadow: 0 0 10px var(--cyan);
  vertical-align: middle;
}

/* ---------- 转速表：右下角固定，读数跟滚动走 ---------- */
.rpm {
  position: fixed;
  right: clamp(16px, 3vw, 40px);
  bottom: clamp(16px, 3vw, 36px);
  z-index: 6;
  width: 116px;
  height: 116px;
  display: grid;
  place-items: center;
  align-content: center;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(10, 18, 38, 0.85) 55%, rgba(10, 18, 38, 0.4) 72%, transparent 73%);
  font-variant-numeric: tabular-nums;
  pointer-events: none;
  animation: intro-in 1s 1.6s var(--ease-out) backwards;
}
.rpm svg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  fill: none;
  stroke-linecap: round;
}
.rpm-track {
  stroke: rgba(127, 212, 255, 0.14);
  stroke-width: 5;
}
.rpm-fill {
  stroke: var(--cyan);
  stroke-width: 5;
  stroke-dasharray: 100;
  stroke-dashoffset: 100;
  filter: drop-shadow(0 0 6px var(--cyan));
}
.rpm b {
  font-size: 30px;
  line-height: 1;
  font-weight: 800;
}
.rpm small {
  margin-top: 2px;
  font-size: 9px;
  letter-spacing: 0.2em;
  color: var(--ink-3);
}
.rpm em {
  position: absolute;
  bottom: 6px;
  font-style: normal;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.3em;
  color: var(--cyan);
}

/* 价值卡：每张一个小型全息装置 */
.value-cards {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 20px;
}
.value-cards article {
  position: relative;
  padding: 40px 32px 36px;
  border-radius: 20px;
  background: linear-gradient(180deg, rgba(127, 212, 255, 0.08), rgba(127, 212, 255, 0.01));
  border: 1px solid var(--line);
  overflow: hidden;
  opacity: 0;
  transform: translateY(40px);
  transition:
    opacity 0.9s calc(var(--i) * 0.14s) var(--ease-out),
    transform 0.9s calc(var(--i) * 0.14s) var(--ease-out),
    border-color 0.3s var(--ease-out);
}
.value-cards article::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(115deg, transparent 40%, rgba(127, 212, 255, 0.12) 50%, transparent 60%);
  transform: translateX(-100%);
  transition: transform 1.2s var(--ease-out);
  pointer-events: none;
}
.value-cards article:hover {
  border-color: var(--cyan-dim);
}
.value-cards article:hover::after {
  transform: translateX(100%);
}
.intro-values.lit .value-cards article {
  opacity: 1;
  transform: none;
}
.value-cards small {
  display: block;
  font-size: 12px;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: var(--cyan);
}
.value-cards h3 {
  margin: 8px 0 14px;
  font-size: 30px;
  font-weight: 800;
}
.value-cards p {
  margin: 0;
  font-size: 15px;
  line-height: 1.8;
  color: var(--ink-2);
}
/* 三个小装置：轨道 / 天平刻度 / 上升的光柱 */
.v-orb {
  position: relative;
  width: 88px;
  height: 88px;
  margin-bottom: 28px;
}
.v-orb i {
  position: absolute;
  inset: 0;
  border-radius: 50%;
  border: 1px solid var(--cyan-dim);
}
.v0 i:nth-child(1) { inset: 30px; background: var(--cyan); box-shadow: 0 0 24px var(--cyan); border: 0; }
.v0 i:nth-child(2) { transform: rotateX(70deg); animation: intro-spin 6s linear infinite; border-top-color: var(--cyan); }
.v0 i:nth-child(3) { transform: rotateY(70deg); animation: intro-spin 9s linear infinite reverse; border-left-color: var(--cyan); }
.v1 i { border-radius: 4px; inset: auto 0; height: 2px; background: var(--cyan-dim); border: 0; }
.v1 i:nth-child(1) { top: 24px; animation: intro-level 3s ease-in-out infinite; }
.v1 i:nth-child(2) { top: 43px; background: var(--cyan); box-shadow: 0 0 12px var(--cyan); }
.v1 i:nth-child(3) { top: 62px; animation: intro-level 3s 1.5s ease-in-out infinite; }
.v2 i { border-radius: 3px; border: 0; top: auto; bottom: 0; width: 14px; background: linear-gradient(180deg, var(--cyan), rgba(127, 212, 255, 0.1)); transform-origin: bottom; }
.v2 i:nth-child(1) { left: 14px; height: 36px; animation: intro-grow 2.4s ease-in-out infinite; }
.v2 i:nth-child(2) { left: 37px; height: 58px; animation: intro-grow 2.4s 0.3s ease-in-out infinite; }
.v2 i:nth-child(3) { left: 60px; height: 84px; animation: intro-grow 2.4s 0.6s ease-in-out infinite; }

/* 背书数据（有真实数字才显示） */
.proof-row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 32px;
  text-align: center;
}
.proof-row b {
  display: block;
  font-size: clamp(40px, 5vw, 64px);
  font-weight: 800;
  font-variant-numeric: tabular-nums;
  color: var(--cyan);
}
.proof-row small {
  font-size: 0.4em;
  margin-left: 4px;
}
.proof-row span {
  color: var(--ink-2);
  font-size: 14px;
}

/* 收尾 */
.intro-end {
  display: grid;
  justify-items: center;
  gap: 28px;
  padding: 140px 20px 160px;
  text-align: center;
  background: radial-gradient(700px 300px at 50% 60%, rgba(61, 107, 255, 0.25), transparent 70%);
}
.intro-end h2 {
  margin: 0;
  font-size: clamp(34px, 4.6vw, 68px);
  line-height: 1.2;
}
.intro-end h2 span {
  display: block;
}
.intro-end h2 span + span {
  background: linear-gradient(90deg, #ffffff 0%, var(--cyan) 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}
.intro-end p {
  margin: 0;
  color: var(--ink-3);
  font-size: 13px;
}
html.pro .intro-go.big {
  height: 60px;
  padding: 0 40px;
  font-size: 18px;
}

/* ---------- 跃迁过场：星线冲出来，画面往里冲 ---------- */
.intro.warping {
  overflow: hidden;
}
.intro.warping .intro-warp {
  animation: intro-warp 0.62s var(--ease-in) forwards;
}
.intro.warping .intro-nav,
.intro.warping .intro-hero,
.intro.warping .intro-sec,
.intro.warping .intro-engine,
.intro.warping .brand-wall,
.intro.warping .rpm,
.intro.warping .intro-end {
  transform: scale(1.18);
  opacity: 0;
  filter: blur(6px);
  transition:
    transform 0.6s var(--ease-in),
    opacity 0.45s var(--ease-in),
    filter 0.6s var(--ease-in);
}
.intro.warping .intro-video {
  transform: scale(1.3);
  filter: brightness(1.8) saturate(0.4) blur(4px);
  transition:
    transform 0.62s var(--ease-in),
    filter 0.62s var(--ease-in);
}

/* ---------- 关键帧 ---------- */
@keyframes intro-in { from { opacity: 0; } }
@keyframes intro-rise { from { opacity: 0; transform: translateY(18px); } }
@keyframes intro-floor { to { background-position: 0 64px; } }
@keyframes intro-pulse { 50% { opacity: 0.3; } }
@keyframes intro-spin { to { transform: rotate(360deg); } }
@keyframes intro-dash { to { stroke-dashoffset: -240; } }
@keyframes intro-beam { 50% { opacity: 0.2; } }
@keyframes intro-orbit { from { offset-distance: 0%; } to { offset-distance: 100%; } }
@keyframes intro-halo { from { opacity: 0.9; transform: scale(0.6); } to { opacity: 0; transform: scale(1.8); } }
@keyframes intro-blip { from { opacity: 0; transform: translateY(6px); filter: blur(4px); } }
@keyframes intro-level { 50% { transform: translateY(6px); opacity: 0.5; } }
@keyframes intro-grow { 50% { transform: scaleY(0.6); } }
@keyframes intro-wheel { 0% { opacity: 1; transform: translateY(0); } 70%, 100% { opacity: 0; transform: translateY(10px); } }
@keyframes intro-warp {
  from { opacity: 0; transform: scale(0.3) rotate(0deg); }
  40% { opacity: 1; }
  to { opacity: 1; transform: scale(2.4) rotate(8deg); }
}

/* ---------- 手机 ---------- */
@media (max-width: 900px) {
  .intro-hero {
    grid-template-columns: minmax(0, 1fr);
    padding-top: 24px;
    gap: 24px;
  }
  .intro-scroll {
    display: none;
  }
  .rpm {
    width: 84px;
    height: 84px;
  }
  .rpm b {
    font-size: 22px;
  }
  .rpm small {
    display: none;
  }
  .rpm em {
    bottom: 2px;
    font-size: 10px;
  }
  .bw-name {
    padding: 10px 18px;
  }
  .intro-hero {
    align-items: end;
    padding-bottom: 64px;
  }
  .intro-sec {
    padding: 88px 20px;
  }
  .value-cards {
    grid-template-columns: minmax(0, 1fr);
  }
}

@media (prefers-reduced-motion: reduce) {
  .intro *,
  .intro *::before,
  .intro *::after {
    animation: none !important;
    transition-duration: 0.01s !important;
    transition-delay: 0s !important;
  }
}

/* 登录页左上角品牌：点了回首屏 */
html.pro .login-home {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 0;
  border: 0;
  background: none;
  color: inherit;
  cursor: pointer;
}

/* ---------- 登录页（第二步）跟首屏同一套夜色：压暗的片子 + 网格地面 + 蓝光 ---------- */
.login-stage:not(.wide) {
  background-color: #050914;
}
.login-stage:not(.wide) .login-video {
  opacity: 0.5;
  filter: saturate(0.75) contrast(1.05);
}
.login-stage:not(.wide) .login-veil {
  background:
    radial-gradient(900px 520px at 78% 50%, rgba(61, 107, 255, 0.28), transparent 70%),
    linear-gradient(90deg, rgba(5, 9, 20, 0.9) 0%, rgba(5, 9, 20, 0.5) 50%, rgba(5, 9, 20, 0.45) 100%),
    linear-gradient(0deg, rgba(5, 9, 20, 0.85) 0%, transparent 45%);
}
.login-stage:not(.wide)::after {
  content: "";
  position: absolute;
  left: -50%;
  right: -50%;
  bottom: -34%;
  height: 62%;
  z-index: -1;
  pointer-events: none;
  background-image:
    linear-gradient(rgba(127, 212, 255, 0.14) 1px, transparent 1px),
    linear-gradient(90deg, rgba(127, 212, 255, 0.14) 1px, transparent 1px);
  background-size: 64px 64px;
  transform: perspective(520px) rotateX(68deg);
  transform-origin: top center;
  -webkit-mask-image: linear-gradient(180deg, transparent 18%, #000 60%);
  mask-image: linear-gradient(180deg, transparent 18%, #000 60%);
  opacity: 0.8;
  animation: intro-floor 2.4s linear infinite;
}
html.pro .login-stage:not(.wide) .login-card {
  box-shadow:
    0 0 0 1px rgba(127, 212, 255, 0.25),
    0 0 60px rgba(61, 107, 255, 0.35),
    0 30px 80px rgba(0, 0, 0, 0.5);
}
.login-stage:not(.wide) .login-hero h1 span + span b {
  background: linear-gradient(90deg, #ffffff 0%, #ffffff 40%, #7fd4ff 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}
@media (prefers-reduced-motion: reduce) {
  .login-stage:not(.wide)::after {
    animation: none;
  }
}

/* ---------- 公司 logo（蓝色引擎）：齿轮慢转 + 白色字标，首屏顶栏和登录页共用 ---------- */
.be-logo {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  height: 40px;
}
.be-gear {
  height: 100%;
  width: auto;
  filter: drop-shadow(0 0 10px rgba(61, 107, 255, 0.55));
  animation: be-spin 14s linear infinite;
}
.be-word {
  height: 72%;
  width: auto;
}
.login-top .be-logo {
  height: 40px;
}
/* 收尾段背后一只大齿轮，慢慢转 */
.intro-end {
  position: relative;
  overflow: hidden;
}
.end-gear {
  position: absolute;
  left: 50%;
  top: 50%;
  width: min(560px, 80vw);
  margin: calc(min(560px, 80vw) / -2) 0 0 calc(min(560px, 80vw) / -2);
  opacity: calc(0.06 + var(--power, 0) * 0.08);
  filter: blur(1px) drop-shadow(0 0 40px rgba(61, 107, 255, 0.8));
  pointer-events: none;
  z-index: -1;
}
@keyframes be-spin {
  to {
    rotate: 360deg;
  }
}
@media (max-width: 767px) {
  .be-logo {
    height: 32px;
  }
}
@media (prefers-reduced-motion: reduce) {
  .be-gear,
  .end-gear {
    animation: none;
  }
}


/* ===== web/src/css/40-talent.css ===== */
/* ===== 达人端 H5 改版（2026-09-28）=====
   结构照协作台达人端（首页 / 工作台 / 收益 / 我的 + 二级详情页），样式在这里统一收口。
   全部挂在 .phone.t5.tv 下面，压过 20-components 和 30-theme 里零散的 t5 规则，不影响 PC 端。
   字体统一无衬线（主题层给部分标题上了衬线，在手机上和数字混排很乱）。 */
html .phone.t5.tv {
  --t5-bg: #f6f4f0;
  --t5-card: #ffffff;
  --t5-line: #eeeae4;
  --t5-ink: #1f1c19;
  --t5-sub: #8b867e;
  --t5-accent: #b4532f;
  --t5-accent-soft: #f7ebe5;
  --t5-grad: linear-gradient(135deg, #a9482a, #c2623d);
  --t5-warn: #b8403c;
  --t5-warn-soft: #f9e6e4;
  --t5-ok: #3f7d5e;
  --t5-ok-soft: #e5f1ea;
  --tv-r: 18px;
  --tv-shadow: 0 1px 2px rgba(40, 28, 16, 0.04), 0 4px 14px -8px rgba(40, 28, 16, 0.12);
  background: var(--t5-bg);
  color: var(--t5-ink);
  font-family: -apple-system, "PingFang SC", "Hiragino Sans GB", "Noto Sans SC", "Microsoft YaHei", sans-serif;
  font-size: 14px;
  line-height: 1.5;
}
html .phone.t5.tv * {
  font-family: inherit;
}
html .phone.t5.tv .mono {
  font-family: "SF Mono", Menlo, monospace;
  font-style: normal;
}
html .phone.t5.tv .h5page {
  padding: 0 16px;
}

/* ---------- 通用：分区标题、卡片、标签 ---------- */
html .phone.t5.tv .t5-link {
  color: var(--t5-accent);
  font-size: 12.5px;
  font-weight: 500;
}
html .phone.t5.tv .t5-card {
  background: var(--t5-card);
  border: 1px solid var(--t5-line);
  border-radius: var(--tv-r);
  box-shadow: var(--tv-shadow);
  padding: 14px 16px;
  margin: 0 0 12px;
}
html .phone.t5.tv .t5-chip {
  display: inline-flex;
  align-items: center;
  height: 21px;
  padding: 0 8px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 600;
  background: #f1eeea;
  color: #6f6a62;
  white-space: nowrap;
  border: 0;
}
html .phone.t5.tv .t5-chip.warn,
html .phone.t5.tv .t5-chip.brand {
  background: var(--t5-accent-soft);
  color: var(--t5-accent);
}
html .phone.t5.tv .t5-chip.red {
  background: var(--t5-warn-soft);
  color: var(--t5-warn);
}
html .phone.t5.tv .t5-chip.ok {
  background: var(--t5-ok-soft);
  color: var(--t5-ok);
}
html .phone.t5.tv .t5-empty {
  background: var(--t5-card);
  border: 1px dashed #e2ddd5;
  border-radius: var(--tv-r);
  padding: 26px 16px;
  text-align: center;
  color: var(--t5-sub);
  font-size: 13px;
}
html .phone.t5.tv .t5-foot {
  color: var(--t5-sub);
  font-size: 11.5px;
  line-height: 1.6;
  margin: 14px 4px 0;
}
html .phone.t5.tv .t5-logo {
  width: 36px;
  height: 36px;
  border-radius: 11px;
  font-size: 15px;
  font-weight: 700;
  flex: none;
}
html .phone.t5.tv .t5-track {
  height: 6px;
  border-radius: 3px;
  background: #f0ebe5;
  overflow: hidden;
}
html .phone.t5.tv .t5-track i {
  display: block;
  height: 100%;
  border-radius: 3px;
  background: var(--t5-accent);
}

/* ---------- 底栏 4 格、发布按钮 ---------- */
html .phone.t5.tv .t5-nav.bottomnav {
  grid-template-columns: repeat(4, 1fr);
  height: 64px;
  background: rgba(255, 255, 255, 0.96);
  border-top: 1px solid var(--t5-line);
}
html .phone.t5.tv .t5-nav button {
  font-size: 11px;
  color: #a19c94;
  gap: 3px;
}
html .phone.t5.tv .t5-nav button svg {
  width: 23px;
  height: 23px;
}
html .phone.t5.tv .t5-nav button.active {
  color: var(--t5-accent);
  font-weight: 600;
}
html .phone.t5.tv .t5-dot {
  top: 9px;
  left: calc(50% + 7px);
  background: var(--t5-warn);
  box-shadow: 0 0 0 2px #fff;
}

/* ---------- 首页：轮播 ---------- */
/* 1 工作台 */
/* 2 结算 */
/* 3 交作品 */
/* 4 激励 + 本月进度 */
html .phone.t5.tv .t5-dots {
  margin-top: 8px;
}
html .phone.t5.tv .t5-dots i {
  background: #e3dad2;
}
html .phone.t5.tv .t5-dots i.on {
  background: var(--t5-accent);
}

/* ---------- 首页：打招呼、两格、下一步 ---------- */
html .phone.t5.tv .t5-avatar {
  width: 42px;
  height: 42px;
  border-radius: 50%;
  background: var(--t5-grad);
  color: #fff;
  font-weight: 700;
  font-size: 17px;
  display: grid;
  place-items: center;
  flex: none;
}
html .phone.t5.tv .t5-bell {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: #fff;
  border: 1px solid var(--t5-line);
  box-shadow: var(--tv-shadow);
}
/* 下一步卡片（layout.js 插进来的） */

/* 重点项目卡 */

/* ---------- 工作台 ---------- */
html .phone.t5.tv .t5-seg {
  display: flex;
  gap: 4px;
  margin: 16px 0 10px;
  padding: 4px;
  border-radius: 13px;
  background: #ece8e2;
}
html .phone.t5.tv .t5-seg button {
  flex: 1;
  border: 0;
  border-radius: 10px;
  padding: 7px 0;
  font-size: 13.5px;
  background: none;
  color: #6f6a62;
  box-shadow: none;
}
html .phone.t5.tv .t5-seg button.on {
  background: #fff;
  color: var(--t5-ink);
  font-weight: 600;
  box-shadow: 0 1px 3px rgba(40, 28, 16, 0.08);
}
html .phone.t5.tv .t5-seg small {
  margin-left: 4px;
  font-size: 11px;
  color: var(--t5-accent);
  font-weight: 700;
}
html .phone.t5.tv .t5-search {
  display: flex;
  align-items: center;
  gap: 8px;
  background: #fff;
  border: 1px solid var(--t5-line);
  border-radius: 12px;
  padding: 0 12px;
  height: 38px;
}
html .phone.t5.tv .t5-search svg {
  width: 17px;
  height: 17px;
  color: var(--t5-sub);
}
html .phone.t5.tv .t5-search input {
  border: 0;
  outline: 0;
  background: none;
  flex: 1;
  font-size: 13px;
  padding: 0;
}
html .phone.t5.tv .t5-filters {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 6px;
  margin: 8px 0 12px;
}
html .phone.t5.tv .t5-filters select {
  height: 34px;
  border: 1px solid var(--t5-line);
  border-radius: 10px;
  background: #fff;
  font-size: 12.5px;
  padding: 0 8px;
  color: #4f4a43;
}
html .phone.t5.tv .t5-pcard {
  display: grid;
  gap: 8px;
}
/* 列表行（寄样、我的、弹层） */
html .phone.t5.tv .t5-list {
  padding: 2px 16px;
}
html .phone.t5.tv .t5-row {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  min-height: 48px;
  padding: 10px 0;
  border: 0;
  border-top: 1px solid var(--t5-line);
  background: none;
  text-align: left;
  font-size: 14px;
  color: var(--t5-ink);
}
html .phone.t5.tv .t5-list > .t5-row:first-child,
html .phone.t5.tv .t5-list > :first-child .t5-row {
  border-top: 0;
}
html .phone.t5.tv .t5-row > span {
  flex: 1;
  min-width: 0;
}
html .phone.t5.tv .t5-row > span small {
  display: block;
  color: var(--t5-sub);
  font-size: 12px;
}
html .phone.t5.tv .t5-row > em {
  margin-left: auto;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-style: normal;
  color: var(--t5-sub);
  font-size: 13px;
  text-align: right;
}
html .phone.t5.tv .t5-row > em svg {
  width: 16px;
  height: 16px;
}
html .phone.t5.tv .t5-count {
  font-style: normal;
  font-size: 11px;
  font-weight: 700;
  color: #fff;
  background: var(--t5-warn);
  border-radius: 999px;
  padding: 1px 7px;
}

/* ---------- 二级详情页（投流项目 / 商单） ---------- */
html .phone.t5.tv .h5ad {
  padding-top: 6px;
}
html .phone.t5.tv .t5-back-link {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  border: 0;
  background: none;
  padding: 12px 0 6px;
  font-size: 14px;
  color: var(--t5-ink);
}
html .phone.t5.tv .t5-back-link svg {
  width: 20px;
  height: 20px;
}
html .phone.t5.tv .h5ad-brand {
  color: var(--t5-sub);
  font-size: 12.5px;
}
html .phone.t5.tv .h5ad-title {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 2px 0;
}
html .phone.t5.tv .h5ad-title h3 {
  margin: 0;
  font-size: 22px;
  font-weight: 800;
}
html .phone.t5.tv .h5ad-sub {
  margin: 0 0 12px;
  font-size: 12.5px;
  color: var(--t5-sub);
}
html .phone.t5.tv .h5ad-sec {
  padding: 14px 16px;
}
html .phone.t5.tv .h5ad-h {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  margin-bottom: 8px;
}
html .phone.t5.tv .h5ad-h b {
  font-size: 15px;
  font-weight: 700;
}
html .phone.t5.tv .h5ad-h small {
  color: var(--t5-sub);
  font-size: 12px;
}
html .phone.t5.tv .h5ad-req,
html .phone.t5.tv .h5ad-hl {
  margin: 0 0 8px;
  font-size: 13px;
  line-height: 1.65;
  color: #4f4a43;
}
html .phone.t5.tv .h5ad-months {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
  margin-top: 12px;
}
html .phone.t5.tv .h5ad-months > div {
  border-radius: 12px;
  background: #f6f3ef;
  padding: 8px 10px;
}
html .phone.t5.tv .h5ad-months > div.on {
  background: var(--t5-accent-soft);
  color: var(--t5-accent);
}
html .phone.t5.tv .h5ad-months small {
  display: block;
  font-size: 11px;
  color: inherit;
  opacity: 0.8;
}
html .phone.t5.tv .h5ad-months b {
  font-size: 15px;
  font-variant-numeric: tabular-nums;
}

/* ---------- 收益 ---------- */
html .phone.t5.tv .tv-top {
  padding: 18px 2px 12px;
}
html .phone.t5.tv .tv-top b {
  font-size: 20px;
  font-weight: 800;
}
html .phone.t5.tv .t5-hero.h5-wd {
  border-radius: 22px;
  padding: 18px 18px 16px;
  background: radial-gradient(240px 160px at 100% 0%, rgba(255, 190, 150, 0.35), transparent 70%), var(--t5-grad);
  color: #fff;
  box-shadow: 0 16px 30px -18px rgba(169, 72, 42, 0.8);
}
html .phone.t5.tv .h5-wd > small {
  font-size: 12px;
  opacity: 0.85;
}
html .phone.t5.tv .h5-wd > strong {
  display: block;
  font-size: 32px;
  font-weight: 800;
  margin: 4px 0 12px;
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.5px;
}
html .phone.t5.tv .h5-wd-btn {
  border: 0;
  border-radius: 999px;
  padding: 8px 20px;
  font-size: 14px;
  font-weight: 700;
  background: #fff;
  color: var(--t5-accent);
}
html .phone.t5.tv .h5-wd-btn:disabled {
  background: rgba(255, 255, 255, 0.35);
  color: rgba(255, 255, 255, 0.85);
}
html .phone.t5.tv .h5-wd-kpis {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  margin-top: 16px;
  padding-top: 12px;
  border-top: 1px solid rgba(255, 255, 255, 0.25);
}
html .phone.t5.tv .h5-wd-kpis small {
  display: block;
  font-size: 11.5px;
  opacity: 0.85;
}
html .phone.t5.tv .h5-wd-kpis b {
  font-size: 14px;
  font-variant-numeric: tabular-nums;
}
html .phone.t5.tv #hp-income .h5section {
  padding: 0;
  margin-top: 14px;
}
html .phone.t5.tv .h5-tracks {
  display: grid;
  gap: 0;
  background: #fff;
  border: 1px solid var(--t5-line);
  border-radius: var(--tv-r);
  box-shadow: var(--tv-shadow);
  padding: 4px 16px;
}
html .phone.t5.tv .h5-track {
  padding: 12px 0;
  border: 0;
  border-top: 1px solid var(--t5-line);
  background: none;
  box-shadow: none;
  border-radius: 0;
  margin: 0;
}
html .phone.t5.tv .h5-track:first-child {
  border-top: 0;
}
html .phone.t5.tv .h5-track .row {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
}
html .phone.t5.tv .h5-track b {
  font-size: 14.5px;
  font-weight: 600;
}
html .phone.t5.tv .h5-track strong {
  font-size: 15px;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}
html .phone.t5.tv .h5-track small {
  display: block;
  color: var(--t5-sub);
  font-size: 12px;
  margin-top: 2px;
}
html .phone.t5.tv .h5-cur,
html .phone.t5.tv .h5-bills {
  margin-top: 12px;
  background: #fff;
  border: 1px solid var(--t5-line);
  border-radius: var(--tv-r);
  box-shadow: var(--tv-shadow);
  padding: 14px 16px;
}
html .phone.t5.tv .h5-bills-head b {
  font-size: 15px;
  font-weight: 700;
}
html .phone.t5.tv .h5-bills-head small {
  display: block;
  color: var(--t5-sub);
  font-size: 12px;
}

/* ---------- 我的 ---------- */
html .phone.t5.tv .tv-me {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 22px 2px 4px;
}
html .phone.t5.tv .tv-me .t5-avatar.big {
  width: 60px;
  height: 60px;
  font-size: 24px;
  margin: 0;
}
html .phone.t5.tv .tv-me-t {
  display: grid;
  gap: 1px;
  min-width: 0;
}
html .phone.t5.tv .tv-me-t b {
  font-size: 20px;
  font-weight: 800;
  display: flex;
  align-items: center;
  gap: 8px;
}
html .phone.t5.tv .tv-me-t small {
  color: var(--t5-sub);
  font-size: 12px;
}
html .phone.t5.tv .tv-faq {
  border-top: 1px solid var(--t5-line);
  padding: 11px 0;
}
html .phone.t5.tv .tv-faq:first-of-type {
  border-top: 0;
}
html .phone.t5.tv .tv-faq summary {
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
}
html .phone.t5.tv .tv-faq p {
  margin: 6px 0 0;
  font-size: 13px;
  line-height: 1.65;
  color: #5d5850;
}
html .phone.t5.tv .t5-sheet-box {
  border-radius: 22px 22px 0 0;
  max-height: 82%;
  overflow-y: auto;
}

/* ---------- 修补：压过旧的 #hp-work 页签、详情页、收样地址 ---------- */
html .phone.t5.tv #hp-work .t5-seg button {
  background: none;
  color: #6f6a62;
  box-shadow: none;
  border-radius: 10px;
}
html .phone.t5.tv #hp-work .t5-seg button.on {
  background: #fff;
  color: var(--t5-ink);
  box-shadow: 0 1px 3px rgba(40, 28, 16, 0.08);
}
html .phone.t5.tv #hp-work .t5-seg button.on small {
  color: var(--t5-accent);
}
html .phone.t5.tv .t5-nav.bottomnav {
  background: #fff;
}
/* 二级页不要底栏：左上角有返回，底部留给「提交新作品」 */
html .phone.t5.tv.tab-addetail .t5-nav,
html .phone.t5.tv.tab-orderdetail .t5-nav {
  display: none;
}
html .phone.t5.tv.tab-addetail .h5ad-submit {
  bottom: 16px;
  left: 16px;
  right: 16px;
}
html .phone.t5.tv .h5ad-submit button {
  border-radius: 14px;
  background: var(--t5-grad);
}
html .phone.t5.tv .h5ad-h {
  padding: 0;
  border: 0;
  margin-bottom: 10px;
}
html .phone.t5.tv .h5ad-sec .h5-links,
html .phone.t5.tv .h5ad-sec .h5-review {
  padding: 0;
  margin: 0;
  border: 0;
  background: none;
  box-shadow: none;
}
html .phone.t5.tv .t5-addr {
  align-items: flex-start;
}
html .phone.t5.tv .t5-addr em {
  flex-direction: column;
  align-items: flex-end;
  gap: 2px;
  max-width: 64%;
}
html .phone.t5.tv .t5-addr em b {
  font-size: 13px;
  font-weight: 600;
  color: var(--t5-ink);
}
html .phone.t5.tv .t5-addr em small {
  font-size: 12px;
  line-height: 1.5;
}

/* ---------- 09-28 二改：首页以投流为主 ---------- */
/* 本月投流任务：一张深色主卡，替掉原来两格 KPI + 下一步 */
/* 投流项目卡 */
/* 稿费合作：只读列表 */

/* ---------- 09-28 三改：首屏 = 名字 + 本月任务，轮播放中间，稿费折叠 ---------- */
/* 首页稿费合作只显示一行，不能点（10-08） */

/* ---------- 09-28 三改：在原结构上换一套清爽外观（浅灰底 + 白卡 + 一个橙红主色），项目卡按条数画空位 ---------- */
html .phone.t5.tv {
  --t5-bg: #f5f5f2;
  --t5-line: #efefea;
  --t5-ink: #16181d;
  --t5-sub: #7a7d84;
  --t5-accent: #e5482a;
  --t5-accent-soft: #fdece6;
  --t5-grad: linear-gradient(0deg, #e5482a, #e5482a);
  --tv-r: 16px;
  --tv-shadow: none;
  background: var(--t5-bg);
}
html .phone.t5.tv .t5-avatar {
  background: var(--t5-accent-soft);
  color: var(--t5-accent);
}
html .phone.t5.tv .t5-bell {
  box-shadow: none;
}
/* 本月投流任务：白卡 */
/* 轮播：细横幅 */
/* 投流项目卡 + 空位 */
/* 收益页大卡跟首页横幅同一个深色，不再用整块橙红 */
html .phone.t5.tv .t5-hero.h5-wd {
  background: #1d2433;
  box-shadow: none;
}

/* ---------- 09-28 四改：照老板给的参考图（紫色主色、大横幅、空位 + 交作品大按钮、三格带图标、合作机会） ---------- */
html .phone.t5.tv {
  --t5-bg: #f6f6fb;
  --t5-line: #eeeef4;
  --t5-ink: #17172a;
  --t5-sub: #7c7c92;
  --t5-accent: #6b4df5;
  --t5-accent-soft: #efebff;
  --t5-grad: linear-gradient(135deg, #7b5cff, #5b3ff0);
  --tv-r: 18px;
}
html .phone.t5.tv .t5-avatar {
  background: linear-gradient(135deg, #8d6bff, #5b3ff0);
  color: #fff;
  width: 46px;
  height: 46px;
}
html .phone.t5.tv .t5-bell {
  background: transparent;
}
/* 大横幅 */
/* 后台配置的卡片（10-10）：有图铺满、底部压暗让字看得清；没图用第一张的紫色底 */
/* 意见反馈条 */
/* 本月投流任务 */
/* 三格：待结算 / 待收样品 / 下次打款 */
/* 合作机会 */
html .phone.t5.tv .t5-nav.bottomnav {
  grid-template-columns: repeat(5, minmax(0, 1fr));
}
html .phone.t5.tv .t5-row > .t5-logo {
  flex: none;
}
html .phone.t5.tv .t5-nav .tv-navplus {
  align-self: center;
  justify-self: center;
  width: 52px;
  height: 38px;
  border-radius: 12px;
  background: #17172a;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0;
}
html .phone.t5.tv .t5-nav .tv-navplus svg {
  width: 20px;
  height: 20px;
  stroke: #fff;
  stroke-width: 2.4;
}
html .phone.t5.tv .t5-hero.h5-wd {
  background: var(--t5-grad);
}

/* 作品旁的反馈闭环，PC 抽屉和 H5 共用。 */
.work-feedback{margin:12px 0;padding:12px;border:1px solid #e5e7eb;border-radius:10px;background:#fafbfc;font-size:13px;line-height:1.6;overflow-wrap:anywhere}
.work-feedback.pending{border-color:#e6d6b5;background:#fffcf5}.work-feedback-head{display:flex;justify-content:space-between;gap:12px}.work-feedback-head span{color:#866021;font-size:12px}.work-feedback p{margin:8px 0;white-space:pre-wrap}.work-feedback p small{display:block;color:#777;font-size:11px}.work-feedback-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.work-feedback-actions:empty{display:none}.work-feedback summary{cursor:pointer;color:#666}.work-feedback .field-hint{font-size:12px}

/* 收样地址簿 / 收款账户弹层（10-08） */
.h5-addrs {
  display: grid;
  gap: 10px;
  max-height: 56vh;
  overflow-y: auto;
  padding: 2px 0 8px;
}
.h5-addr-card {
  display: grid;
  gap: 8px;
  padding: 12px;
  border: 1px solid var(--t5-line, #e6e8ef);
  border-radius: 12px;
  background: #fff;
}
.h5-addr-card.on {
  border-color: var(--t5-brand, #6c4cf5);
}
.h5-addr-top {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
}
.h5-addr-top label {
  display: flex;
  align-items: center;
  gap: 4px;
  white-space: nowrap;
}
.h5-addr-card input,
.h5-addr-card textarea {
  width: 100%;
  box-sizing: border-box;
  padding: 9px 10px;
  border: 1px solid var(--t5-line, #e6e8ef);
  border-radius: 8px;
  font: inherit;
  font-size: 14px;
  background: #fff;
}
.h5-addr-top .h5-addr-label {
  flex: 1;
  min-width: 0;
  padding: 6px 8px;
  font-size: 13px;
}
.h5-addr-top input[type="radio"] {
  width: auto;
}
.h5-addr-add {
  width: 100%;
  margin: 4px 0 10px;
}

/* 「我的」资料行（10-08 走查）：左边标签不折行，右边值过长时省略；地址数量跟在标签后面不掉行 */
html .phone.t5.tv .t5-kvrow > span {
  flex: 0 0 auto;
  white-space: nowrap;
}
html .phone.t5.tv .t5-kvrow > em {
  min-width: 0;
  white-space: nowrap;
}
html .phone.t5.tv .t5-addr.t5-kvrow > em {
  white-space: normal;
}
html .phone.t5.tv .t5-row > span small.t5-cnt {
  display: inline;
}

/* ---------- 10-08 小程序走查 ---------- */
/* 达人端弹层（发起结算、收样地址、收款账户）和小程序里的弹窗用达人端紫色，不用电脑端的墨蓝 */
html .phone.t5.tv button.primary,
html.in-mp .modal button.primary,
html.in-mp #adModal button.primary {
  background: var(--t5-accent, #6b4df5);
  border-color: var(--t5-accent, #6b4df5);
  color: #fff;
}
html .phone.t5.tv input[type="radio"],
html .phone.t5.tv input[type="checkbox"],
html.in-mp #adModal input {
  accent-color: #6b4df5;
}
/* 表单字段带 hidden 时真的藏起来（达人交作品时不该看到「达人」下拉） */
.field[hidden] {
  display: none !important;
}
/* 工作台「作品」墙：格子原来写死 88px，带反馈的那格文字被挤成一字一行；改成三等分网格 */
html .phone.t5.tv .h5-wall {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  align-items: start;
}
html .phone.t5.tv .h5-wall .wk-tile,
html .phone.t5.tv .h5-wall .wk-cover {
  width: auto;
  min-width: 0;
}
html .phone.t5.tv .h5-wall .wk-cover {
  height: auto;
  aspect-ratio: 3 / 4;
  text-decoration: none;
}
html .phone.t5.tv .h5-wall .work-feedback {
  margin: 6px 0;
  padding: 8px;
  font-size: 11.5px;
  line-height: 1.5;
}
html .phone.t5.tv .h5-wall .work-feedback-head {
  flex-wrap: wrap;
  gap: 0 6px;
}
html .phone.t5.tv .h5-wall .work-feedback-actions .tiny {
  width: 100%;
  padding: 4px 2px;
  font-size: 11px;
  white-space: nowrap;
}
/* 首页投流空位：交了但出问题的标红，下面一行直达作品页 */
/* 小程序里网页铺到屏幕最底下，底栏要让出 iPhone 底部横条的位置 */
html.in-mp .phone.t5.tv .t5-nav.bottomnav {
  padding-bottom: calc(6px + env(safe-area-inset-bottom));
}

.h5-wd-off { display: block; margin: 2px 0 6px; }

/* ---- 10-08 晚精简（达人端）---- */
/* 合作码一键复制 */
html .phone.t5.tv .tv-code {
  all: unset;
  margin-top: 4px;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  color: var(--t5-sub);
  cursor: pointer;
}
html .phone.t5.tv .tv-code span {
  padding: 1px 8px;
  border-radius: 999px;
  background: #eef0ff;
  color: var(--t5-accent);
  font-weight: 600;
}
/* 收样地址：省 / 市 / 区三个下拉一排 */
.h5-pca {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 6px;
}
.h5-pca select {
  width: 100%;
  min-width: 0;
  box-sizing: border-box;
  padding: 9px 6px;
  border: 1px solid var(--t5-line, #e6e8ef);
  border-radius: 8px;
  font: inherit;
  font-size: 14px;
  background: #fff;
}
/* 达人交作品：选填项折叠 */
.aw-more {
  margin-top: 10px;
  border-top: 1px solid var(--line, #e6e8ef);
  padding-top: 10px;
}
.aw-more > summary {
  cursor: pointer;
  font-size: 13px;
  color: var(--muted, #6b7280);
}
.aw-more[open] > summary {
  margin-bottom: 8px;
}
/* 收款信息：照公司模板一行一项，左边项名 */
.h5-form-row {
  display: grid;
  grid-template-columns: 88px minmax(0, 1fr);
  align-items: center;
  gap: 8px;
  font-size: 13px;
}
.h5-form-row > span {
  color: var(--t5-sub, #6b7280);
}
.h5-form-row > b {
  font-weight: 600;
  font-size: 14px;
  padding: 9px 0;
}
/* 星图返款穿透：顶上四格汇总 */
.h5-xt-sum {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  margin: 4px 0 10px;
}
.h5-xt-sum > div {
  padding: 10px 12px;
  border-radius: 12px;
  background: #f5f6fb;
  display: grid;
  gap: 2px;
}
.h5-xt-sum small {
  font-size: 12px;
  color: var(--t5-sub, #6b7280);
}
.h5-xt-sum b {
  font-size: 16px;
}
.h5-xt-sum .neg,
.t5-kv .neg {
  color: #c2410c;
}
.h5-xt-all {
  display: block;
  margin: 10px auto 0;
}

/* ---------- 10-08 达人端 UI 细修（不动结构） ---------- */
/* 1 首页任务格：状态字不折行、图标统一大小 */
/* 2 近六个月产出：柱顶标数字、提交色加深、0 画成细灰线 */
/* 3 收益顶部：0 元变淡 */
html .phone.t5.tv .h5-wd-kpis b.zero {
  opacity: 0.45;
}
/* 4 星图比例条：平台到手 = 你的 + 公司的 */
.h5-xt-bar {
  margin: 4px 0 12px;
}
.h5-xt-bar > div {
  display: flex;
  height: 10px;
  border-radius: 5px;
  overflow: hidden;
  background: #eee;
}
.h5-xt-bar i {
  display: block;
  background: var(--t5-accent, #6b4df5);
}
.h5-xt-bar i.c {
  background: #e0a020;
}
.h5-xt-bar p {
  display: flex;
  justify-content: space-between;
  margin: 6px 0 0;
  font-size: 12px;
  color: var(--t5-sub, #73716b);
}
.h5-xt-bar em {
  display: inline-block;
  width: 8px;
  height: 8px;
  border-radius: 2px;
  margin-right: 4px;
  background: var(--t5-accent, #6b4df5);
}
.h5-xt-bar em.c {
  background: #e0a020;
}
/* 5 达人端交作品弹窗：浏览器里也用紫色主按钮 */
.main:has(.phone.t5.tv) #adModal button.primary {
  background: var(--t5-accent, #6b4df5);
  border-color: var(--t5-accent, #6b4df5);
  color: #fff;
}
/* 6 底栏「+」用主色 */
html .phone.t5.tv .t5-nav .tv-navplus {
  background: var(--t5-accent, #6b4df5);
}
/* 7 空状态：图标 + 下一步说明 */
html .phone.t5.tv .h5-empty,
html .phone.t5.tv .t5-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
}
html .phone.t5.tv .h5-empty {
  padding: 14px 0 10px;
}
html .phone.t5.tv .h5-empty-ico svg {
  width: 26px;
  height: 26px;
  fill: none;
  stroke: #c5c0b8;
  stroke-width: 1.6;
}
html .phone.t5.tv .h5-empty b,
html .phone.t5.tv .t5-empty b {
  font-size: 13px;
  font-weight: 600;
  color: var(--t5-ink);
}
html .phone.t5.tv .h5-empty small,
html .phone.t5.tv .t5-empty small {
  font-size: 11.5px;
  color: var(--t5-sub);
}
/* 8 项目详情月份格：完成绿、差一点黄、没完成红、没开始灰 */
html .phone.t5.tv .h5ad-months > div.ok {
  background: #e8f6ee;
  color: #1f9d63;
}
html .phone.t5.tv .h5ad-months > div.part {
  background: #fdf3df;
  color: #a86f00;
}
html .phone.t5.tv .h5ad-months > div.miss {
  background: #fdecec;
  color: #c0392b;
}
html .phone.t5.tv .h5ad-months > div.todo {
  background: #f6f3ef;
  color: var(--t5-sub);
}
html .phone.t5.tv .h5ad-months > div.on {
  box-shadow: inset 0 0 0 1.5px var(--t5-accent);
}
/* 作品格里的反馈块压成两行，不把整排撑高 */
html .phone.t5.tv .h5-wall .work-feedback {
  padding: 6px 8px;
  margin-top: 6px;
  font-size: 11.5px;
}
html .phone.t5.tv .h5-wall .work-feedback-head b {
  font-size: 12px;
}
html .phone.t5.tv .h5-wall .work-feedback p {
  margin: 2px 0 0;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
/* 首页三格：标签和小注不折成两行 */
/* 项目卡底部「N 条作品」「N 件待收」不折行 */
/* 项目详情月份格改成按钮（点了筛下面的作品） */
html .phone.t5.tv .h5ad-months > button {
  all: unset;
  box-sizing: border-box;
  cursor: pointer;
  border-radius: 12px;
  background: #f6f3ef;
  padding: 8px 10px;
}
html .phone.t5.tv .h5ad-months > button.ok {
  background: #e8f6ee;
  color: #1f9d63;
}
html .phone.t5.tv .h5ad-months > button.part {
  background: #fdf3df;
  color: #a86f00;
}
html .phone.t5.tv .h5ad-months > button.miss {
  background: #fdecec;
  color: #c0392b;
}
html .phone.t5.tv .h5ad-months > button.todo {
  color: var(--t5-sub);
}
html .phone.t5.tv .h5ad-months > button.on {
  box-shadow: inset 0 0 0 1.5px var(--t5-accent);
}
html .phone.t5.tv .h5ad-months > button.pick {
  box-shadow: inset 0 0 0 2px var(--t5-ink);
}
html .phone.t5.tv .h5ad-h small {
  font-size: 11px;
  color: var(--t5-sub);
}
/* 工作台：已结束的项目折叠 */
html .phone.t5.tv .h5-ended > summary {
  list-style: none;
  cursor: pointer;
  padding: 12px 16px;
  font-size: 14px;
  font-weight: 600;
  color: var(--t5-sub);
  display: flex;
  align-items: center;
  gap: 6px;
}
html .phone.t5.tv .h5-ended > summary::-webkit-details-marker {
  display: none;
}
html .phone.t5.tv .h5-ended > summary small {
  font-size: 12px;
  font-weight: 500;
  padding: 0 7px;
  border-radius: 9px;
  background: #f0eee9;
}
html .phone.t5.tv .h5-ended > summary::after {
  content: "›";
  margin-left: auto;
  transition: transform 0.15s;
}
html .phone.t5.tv .h5-ended[open] > summary::after {
  transform: rotate(90deg);
}
html .phone.t5.tv .h5-month-pick {
  margin: 0 0 10px;
}
html .phone.t5.tv .h5-month-pick select {
  width: 100%;
  padding: 9px 12px;
  border: 1px solid #e7e5e0;
  border-radius: 12px;
  background: #fff;
  font-size: 14px;
}
/* 按月往前翻：‹ 月份 › */
html .phone.t5.tv .h5-mstep {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
html .phone.t5.tv .h5-mstep button {
  all: unset;
  cursor: pointer;
  min-width: 26px;
  height: 26px;
  border-radius: 13px;
  text-align: center;
  line-height: 26px;
  font-size: 15px;
  color: var(--t5-accent);
  background: var(--t5-accent-soft, #efeaff);
}
html .phone.t5.tv .h5-mstep button[disabled] {
  color: #c9c6c0;
  background: #f2f0ec;
  cursor: default;
}
html .phone.t5.tv .h5-mstep small {
  font-size: 12px;
  color: var(--t5-sub);
  min-width: 64px;
  text-align: center;
}
html .phone.t5.tv .h5-mlink {
  display: block;
  margin: 8px 2px 0 auto;
  font-size: 12.5px;
}
.h5-mstep-sheet {
  display: flex !important;
  justify-content: space-between;
  margin-bottom: 8px;
}
.h5-mstep-sheet button {
  padding: 0 12px !important;
  font-size: 13px !important;
}
.h5-sheet-sec {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  margin: 14px 0 4px;
  font-size: 14px;
}
.h5-sheet-sec small {
  font-size: 11px;
  color: var(--t5-sub, #8a8780);
}
html .phone.t5.tv .h5-mgroup {
  padding: 8px 16px 2px;
  font-size: 12px;
  color: var(--t5-sub);
  background: #faf9f6;
}

/* ---- 达人库 · 达人详情抽屉：月度等级、变更记录（2026-10-09） ---- */
.tc-row {
  cursor: pointer;
}
.tc-row:hover .tc-name {
  color: var(--pro-clay, #2f4b8c);
  text-decoration: underline;
  text-underline-offset: 3px;
}
.tc-panel .mt-top-act .close {
  margin-left: 4px;
}
.tc-months {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: 6px;
  margin-bottom: 12px;
}
.tc-month {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  padding: 7px 0 8px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fff;
  cursor: pointer;
  position: relative;
  font: inherit;
}
.tc-month:disabled {
  cursor: default;
  opacity: 1;
  color: inherit;
}
.tc-month small {
  font-size: 11px;
  color: var(--muted);
  white-space: nowrap;
}
.tc-month b {
  font-size: 14px;
  font-variant-numeric: tabular-nums;
}
.tc-month.future {
  background: #faf9f6;
}
.tc-month.future b {
  color: var(--muted);
}
.tc-month.now {
  border-color: var(--pro-ink-2, #3d3a35);
}
.tc-month.set::after {
  content: "";
  position: absolute;
  top: 5px;
  right: 5px;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--pro-clay, #2f4b8c);
}
.tc-month.picked {
  background: var(--pro-clay-tint, #eef1f7);
  border-color: var(--pro-clay, #2f4b8c);
}
.tc-set {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.tc-set label {
  font-size: 13px;
  color: var(--muted);
}
.tc-set select,
.tc-set input {
  height: 32px;
  padding: 0 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fff;
  font: inherit;
  font-size: 13px;
}
.tc-set input {
  flex: 1;
  min-width: 180px;
}
.tc-hint {
  margin: 6px 0 10px;
  font-size: 12px;
  color: var(--muted);
}
.tc-recs {
  margin-top: 4px;
}
.tc-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0 24px;
}
.tc-kv {
  display: flex;
  gap: 12px;
  padding: 9px 0;
  border-bottom: 1px solid var(--line);
  font-size: 13px;
}
.tc-kv span {
  width: 64px;
  flex: none;
  color: var(--muted);
}
.tc-kv b {
  font-weight: 500;
  min-width: 0;
  word-break: break-all;
}
.tc-log-row {
  display: grid;
  grid-template-columns: 128px 1fr auto;
  gap: 12px;
  align-items: baseline;
  padding: 9px 0;
  border-bottom: 1px solid var(--line);
  font-size: 13px;
}
.tc-log-at {
  color: var(--muted);
  font-variant-numeric: tabular-nums;
  font-size: 12px;
}
.tc-log-main {
  min-width: 0;
  word-break: break-all;
}
.tc-log-main b {
  margin-right: 10px;
}
.tc-log-main i {
  font-style: normal;
  color: var(--muted);
  margin: 0 6px;
}
.tc-from {
  color: var(--muted);
}
.tc-log-main small {
  display: block;
  margin-top: 2px;
  color: var(--muted);
  font-size: 12px;
}
.tc-log-who {
  text-align: right;
  white-space: nowrap;
}
.tc-log-who small {
  display: block;
  color: var(--muted);
  font-size: 11px;
}
@media (max-width: 760px) {
  .tc-months {
    grid-template-columns: repeat(6, minmax(0, 1fr));
  }
  .tc-grid {
    grid-template-columns: 1fr;
  }
  .tc-log-row {
    grid-template-columns: 1fr auto;
  }
  .tc-log-at {
    grid-column: 1 / -1;
  }
}
/* 稿费接单记录（10-10 晚）：按月折叠，月份行写单数和合计；每单右边是金额，估算的灰色 */


/* ===== web/src/css/50-system.css ===== */
/* ============================================================
   50-system：全站改版的统一规则（2026-09-28）
   放在最后加载，只收"全站都该一样"的几条：顶栏、浮层、数字列、表单、
   角标、宽表提示。页面各自的样式仍在 20 / 30 / 40 里，这里不重复。
   设计依据和逐页清单见 docs/ui-redesign.md。
   ============================================================ */

/* ---------- 顶栏：只说「你在哪」 ----------
   页面 H1 和说明已经在正文里，顶栏再放一遍标题 + 副标题是重复（参照 Linear：
   导航和外壳退后，内容靠前）。现在是「分类 / 页面」一行面包屑。 */
html.pro .top .crumb {
  display: flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
  font-size: 13px;
}
html.pro .top .crumb strong {
  font-size: 13.5px;
  font-weight: 600;
  color: var(--pro-ink);
}
html.pro .top .crumb .crumb-grp {
  color: var(--pro-muted);
  white-space: nowrap;
}
html.pro .top .crumb .crumb-sep {
  color: var(--pro-faint);
}

/* ---------- 侧栏底部：说真话 ----------
   原来写「系统运行正常」，但本地演示模式根本没有服务可检查。
   现在本地模式写明数据在哪，服务端模式不写。 */
html.pro .side-foot {
  display: flex;
  flex-direction: column;
  gap: 4px;
  line-height: 1.5;
}
html.pro .side-foot .side-mode {
  color: var(--pro-amber);
}
html.pro .side-foot .reset-demo {
  align-self: flex-start;
  margin-top: 6px;
}

/* ---------- 浮层：看得见后面的列表 ----------
   参照 Attio 的侧边预览：打开一条记录时列表还在、看得出自己点的是哪条。
   去掉 2px 模糊（模糊后后面的字读不了，只剩"被挡住"的感觉），
   遮罩统一成一个浅度；订单详情从 1040px 收到 820px，1280 屏还能露出左边列表。 */
html.pro .modal,
html.pro :is(.detail-mask, .metric-mask, .peek-mask, .drill-mask) {
  background: rgba(24, 23, 21, 0.32);
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}
html.pro .detail-drawer {
  width: min(820px, 92vw);
}
html.pro .detail-top p {
  color: var(--pro-muted);
  font-size: 12.5px;
}

/* ---------- 数字列靠右 ----------
   列由 layout.js 按内容认出来打 col-num；个位和小数点上下对齐，才能一眼比大小。 */
html.pro :is(th, td).col-num {
  text-align: right;
  font-variant-numeric: tabular-nums;
}
html.pro th.col-num .th-filter {
  margin-left: 4px;
}

/* ---------- 表单：同一行的输入框顶端对齐 ----------
   .field 是 grid，一行里标题短的那格会被拉高，输入框上下错位。 */
html.pro .field {
  align-content: start;
}

/* ---------- 数量角标：0 不是警报 ---------- */
html.pro .count.is-zero,
html.pro .table-tools h3 .count.is-zero {
  background: var(--pro-bg-sunk);
  color: var(--pro-faint);
}
html.pro .st-tabs button:not(.on) b.is-zero {
  color: var(--pro-faint);
}

/* ---------- 宽表：右边还有列时给个提示 ----------
   1280 屏上十列以上的表会被截住，原来没有任何迹象说明右边还有。
   用滚动阴影（背景跟着内容走，滚到头阴影就消失），不加按钮不改结构。 */
html.pro .table-wrap {
  background:
    linear-gradient(to right, var(--pro-card) 30%, rgba(255, 255, 255, 0)) left center / 32px 100% no-repeat local,
    linear-gradient(to left, var(--pro-card) 30%, rgba(255, 255, 255, 0)) right center / 32px 100% no-repeat local,
    linear-gradient(to right, rgba(33, 31, 28, 0.08), rgba(33, 31, 28, 0)) left center / 12px 100% no-repeat scroll,
    linear-gradient(to left, rgba(33, 31, 28, 0.08), rgba(33, 31, 28, 0)) right center / 12px 100% no-repeat scroll;
  background-color: var(--pro-card);
}

/* 抽屉对应的那一行：左边一道主色竖线 + 浅底 */
html.pro #workspace tr.row-open > td {
  background: var(--pro-clay-tint);
}
html.pro #workspace tr.row-open > td:first-child {
  box-shadow: inset 3px 0 0 var(--pro-clay);
}

/* ---------- 筛选栏：标签和按钮不折行 ----------
   1024 屏上「执行状态」「重置」被挤成两行，看着像坏了。宁可让搜索框短一点。 */
html.pro :is(.filterbar, .filter-bar) :is(label, span, button) {
  white-space: nowrap;
}
html.pro :is(.filterbar, .filter-bar) input[type="search"],
html.pro :is(.filterbar, .filter-bar) input:not([type]) {
  min-width: 120px;
}

/* ---------- 手机上的「退出」 ----------
   窄屏规则把顶栏里所有 ghost 按钮都藏了，连「退出」也没了；
   达人端没有别的退出入口，换手机、借手机登录就退不掉。只把它放回来。 */
@media (max-width: 760px) {
  .top-actions .who button.ghost {
    display: inline-flex;
  }
}

/* ---------- 可收起的侧栏 ----------
   收起后只留一列图标（悬停有名称提示），分组标题换成细分隔线，
   收着的分组也全部露出，保证每一页都点得到。手机宽度另有排法，这里只管 761px 以上。 */
html.pro .brand-text {
  flex: 1 1 auto;
  min-width: 0;
  white-space: nowrap;
}
html.pro .side-toggle {
  margin-left: auto;
  flex: none;
  width: 26px;
  height: 26px;
  padding: 0;
  border: 1px solid transparent;
  border-radius: 7px;
  background: transparent;
  color: var(--pro-faint);
  font-size: 15px;
  line-height: 1;
  cursor: pointer;
}
html.pro .side-toggle:hover {
  background: var(--pro-hover);
  border-color: var(--pro-line);
  color: var(--pro-ink);
}
@media (max-width: 760px) {
  html.pro .side-toggle {
    display: none;
  }
}
@media (min-width: 761px) {
  html.pro .shell {
    transition: grid-template-columns 0.18s ease;
  }
  html.pro .shell.side-folded {
    grid-template-columns: 64px minmax(0, 1fr);
  }
  html.pro .side-folded .side {
    padding-left: 10px;
    padding-right: 10px;
    overflow-x: hidden;
  }
  html.pro .side-folded .brand {
    flex-direction: column;
    gap: 8px;
    align-items: center;
  }
  html.pro .side-folded .brand-text,
  html.pro .side-folded .side-foot,
  html.pro .side-folded .nav button.nav-group {
    display: none;
  }
  html.pro .side-folded .side-toggle {
    margin-left: 0;
  }
  html.pro .side-folded .nav .nav-sub,
  html.pro .side-folded .nav .nav-sub.closed {
    display: flex;
    flex-direction: column;
  }
  html.pro .side-folded .nav .nav-grp {
    border-top: 1px solid var(--pro-line);
    margin-top: 6px;
    padding-top: 6px;
  }
  html.pro .side-folded .nav button[data-view] {
    position: relative;
    justify-content: center;
    padding: 9px 0;
    font-size: 0;
    gap: 0;
  }
  html.pro .side-folded .nav button[data-view] .nav-dot {
    position: absolute;
    top: 2px;
    right: 2px;
    font-size: 10px;
    min-width: 15px;
    height: 15px;
  }
}
@media (prefers-reduced-motion: reduce) {
  html.pro .shell {
    transition: none;
  }
}

/* ---------- 深色侧栏（2026-09-29 票据墨蓝） ----------
   导航和内容一眼分开。只管电脑宽度，手机上侧栏变成顶部横条，仍用浅色。 */
@media (min-width: 761px) {
  html.pro .side {
    /* 页面矮时侧栏自己滚，底部说明不会溢出到侧栏外面 */
    overflow-y: auto;
    scrollbar-color: #3a3c43 transparent;
    background: var(--pro-side);
    border-right-color: #2a2c32;
    color: var(--pro-side-ink);
  }
  html.pro .side .brand {
    color: #ffffff;
  }
  html.pro .side .brand small {
    color: var(--pro-side-mute);
  }
  html.pro .side .nav button {
    color: var(--pro-side-ink);
  }
  html.pro .side .nav button .ico {
    color: var(--pro-side-mute);
  }
  html.pro .side .nav button:hover {
    background: rgba(255, 255, 255, 0.05);
    color: #ffffff;
  }
  html.pro .side .nav button:hover .ico {
    color: #ffffff;
  }
  html.pro .side .nav button.active {
    background: var(--pro-side-active);
    color: #ffffff;
    box-shadow: inset 2px 0 0 var(--pro-gold);
  }
  html.pro .side .nav button.active .ico {
    color: var(--pro-gold);
  }
  html.pro .side .nav button.nav-group,
  html.pro .side .nav button.nav-group:hover,
  html.pro .side .nav button.nav-group.here {
    background: transparent;
    color: var(--pro-side-mute);
    box-shadow: none;
  }
  html.pro .side .nav button.nav-group.here {
    color: var(--pro-side-ink);
  }
  html.pro .side .nav-caret {
    color: var(--pro-side-mute);
  }
  html.pro .side .nav-dot {
    background: #c9a24a;
    color: #ffffff;
  }
  html.pro .side .side-foot {
    border-color: #2a2c32;
    color: var(--pro-side-mute);
  }
  html.pro .side .side-foot .side-mode {
    color: var(--pro-gold);
  }
  html.pro .side .reset-demo {
    background: transparent;
    border-color: #3a3c43;
    color: var(--pro-side-ink);
  }
  html.pro .side .reset-demo:hover {
    background: rgba(255, 255, 255, 0.05);
    color: #ffffff;
  }
  html.pro .side .side-toggle {
    color: var(--pro-side-mute);
  }
  html.pro .side .side-toggle:hover {
    background: rgba(255, 255, 255, 0.05);
    border-color: #3a3c43;
    color: #ffffff;
  }
  html.pro .side-folded .side .nav .nav-grp {
    border-top-color: #2d2f36;
  }
  html.pro .side :focus-visible {
    outline-color: #b5c5e7;
  }
}

/* 运行管理沿用系统设置样式，避免信息条内文字与深色背景混淆。 */
.management-panel > .row { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.management-panel button:not(.id-link) { border:1px solid #e6e4e0; background:#ffffff; border-radius:8px; padding:7px 12px; color:#32353d; cursor:pointer; }
.management-panel button:disabled { opacity:.45; cursor:default; }
.management-panel .sys-bar { background:#f7f6f3; color:#3b4355; }
.management-panel .sys-bar b { color:#2c2e35; }
.management-panel h3 { margin-top:24px; }
.management-panel th, .management-panel td { padding:12px; text-align:left; }
.management-panel input { min-width:240px; border:1px solid #e6e4e0; border-radius:8px; padding:8px 12px; }

/* ============================================================
   C 暖白克制版（2026-10-09 用户认可，见 docs/订单页改版对比 画布 C 列）
   只改「长什么样、怎么动」，不改布局、不改文字。达人手机端、登录页不受影响（页面里没有 .shell 时整段不生效）。
   1. 颜色只在有问题时出现：表格里的状态标签改成「小圆点 + 文字」，超期 / 要扣钱才是红字
   2. 主按钮用炭黑，墨蓝只留给链接、选中
   3. 能改的格子平时显示成文字，鼠标移上去 / 聚焦才出现边框
   4. 动效只解释变化：悬停、按下、展开，140ms 快进快出
   ============================================================ */

/* ---- 主按钮：炭黑 ---- */
html.pro body:has(.shell) .primary {
  background: var(--pro-side);
  color: var(--pro-side-ink-strong);
}
html.pro body:has(.shell) .primary:hover:not(:disabled) {
  background: #34363d;
}

/* ---- 表格里的状态标签：小圆点 + 文字 ---- */
html.pro body:has(.shell) td .badge,
html.pro body:has(.shell) td .badge:is(.blue, .green, .red, .orange, .gray) {
  background: transparent;
  box-shadow: none;
  padding: 0 0 0 12px;
  position: relative;
  font-size: 12.5px;
  font-weight: 500;
  color: var(--pro-ink);
  white-space: nowrap;
}
html.pro body:has(.shell) td .badge::before {
  content: "";
  position: absolute;
  left: 0;
  top: 50%;
  width: 6px;
  height: 6px;
  margin-top: -3px;
  border-radius: 50%;
  background: var(--pro-clay);
}
html.pro body:has(.shell) td .badge.green::before { background: var(--pro-green); }
html.pro body:has(.shell) td .badge.orange::before { background: #c08a1e; }
html.pro body:has(.shell) td .badge.gray { color: var(--pro-muted); }
html.pro body:has(.shell) td .badge.gray::before { background: #b5b0a6; }
html.pro body:has(.shell) td .badge.red { color: var(--pro-red); font-weight: 600; }
html.pro body:has(.shell) td .badge.red::before { background: var(--pro-red); }

/* ---- 稿费订单顶部五个阶段：一条细长条，0 张变淡，点一下就是筛选 ---- */
html.pro body:has(.shell) .order-stats {
  gap: 0;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  background: var(--pro-card);
  border: 1px solid var(--pro-line);
  border-radius: 10px;
  overflow: hidden;
}
html.pro body:has(.shell) .order-stats button {
  border: 0;
  border-left: 1px solid var(--pro-line-soft);
  border-radius: 0;
  padding: 14px 20px;
  background: transparent;
  color: var(--pro-faint);
  box-shadow: inset 0 -2px 0 transparent;
  transition: background var(--pro-t) var(--pro-ease), box-shadow var(--pro-t) var(--pro-ease);
}
html.pro body:has(.shell) .order-stats button:first-child { border-left: 0; }
html.pro body:has(.shell) .order-stats button i { display: none; }
html.pro body:has(.shell) .order-stats button b {
  font-size: 26px;
  font-weight: 500;
  letter-spacing: -0.02em;
  font-variant-numeric: tabular-nums;
}
html.pro body:has(.shell) .order-stats button:hover {
  background: var(--pro-hover);
  box-shadow: inset 0 -2px 0 var(--pro-clay);
}
@media (max-width: 1200px) {
  html.pro body:has(.shell) .order-stats { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

/* ---- 订单详情：能改的格子平时是文字，移上去才像输入框 ---- */
html.pro body:has(.shell) :is(.crm-edit.crm-edit, .inline-sel.inline-sel) {
  border-color: transparent;
  background-color: transparent;
  margin-left: -8px;
  transition: border-color var(--pro-t) var(--pro-ease), background-color var(--pro-t) var(--pro-ease);
}
html.pro body:has(.shell) td > .crm-edit.crm-edit { margin-left: -8px; }
html.pro body:has(.shell) :is(.crm-edit.crm-edit, .inline-sel.inline-sel):hover {
  border-color: var(--pro-line-strong);
  background-color: var(--pro-card);
}
html.pro body:has(.shell) :is(.crm-edit.crm-edit, .inline-sel.inline-sel):focus {
  border-color: var(--pro-clay);
  background-color: var(--pro-card);
  box-shadow: 0 0 0 3px rgba(47, 75, 140, 0.12);
}
html.pro body:has(.shell) select.crm-edit.crm-edit:not(:hover):not(:focus),
html.pro body:has(.shell) select.inline-sel.inline-sel:not(:hover):not(:focus) {
  background-image: none;
}

/* ---- 订单详情顶部：钱一眼看到（订单总收入 / 达人总成本 / 订单毛利，毛利只给有权限的人） ---- */
html.pro body:has(.shell) .crm-money-strip {
  display: flex;
  border: 1px solid var(--pro-line);
  border-radius: 10px;
  background: var(--pro-card);
  overflow: hidden;
  margin-bottom: 14px;
  width: fit-content;
}
html.pro body:has(.shell) .crm-money-strip > div {
  display: flex;
  flex-direction: column;
  padding: 10px 20px;
  border-left: 1px solid var(--pro-line-soft);
}
html.pro body:has(.shell) .crm-money-strip > div:first-child { border-left: 0; }
html.pro body:has(.shell) .crm-money-strip span { font-size: 12px; color: var(--pro-faint); }
html.pro body:has(.shell) .crm-money-strip b {
  font-size: 18px;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  color: var(--pro-ink);
}
html.pro body:has(.shell) .crm-money-strip small { font-size: 12px; color: var(--pro-faint); margin-left: 6px; font-weight: 400; }

/* ---- 下拉框：统一成同一套外观（去掉系统默认箭头，换成细线箭头） ---- */
html.pro body:has(.shell) select:not([multiple]) {
  -webkit-appearance: none;
  appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%237a756b' stroke-width='2.5'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 9px center;
  background-size: 10px 10px;
  padding-right: 26px;
}
html.pro body:has(.shell) :is(input, select, textarea):not([type="checkbox"]):not([type="radio"]) {
  transition: border-color var(--pro-t) var(--pro-ease), box-shadow var(--pro-t) var(--pro-ease), background-color var(--pro-t) var(--pro-ease);
}
html.pro body:has(.shell) :is(input, select, textarea):not([type="checkbox"]):not([type="radio"]):hover:not(:disabled):not(:focus) {
  border-color: var(--pro-line-strong);
}
html.pro body:has(.shell) input[type="checkbox"],
html.pro body:has(.shell) input[type="radio"] {
  accent-color: var(--pro-side);
}

/* ---- 动效：悬停、按下只做颜色和轻微位移 ---- */
html.pro body:has(.shell) :is(button, .crm-link, a) {
  transition: background-color var(--pro-t) var(--pro-ease), border-color var(--pro-t) var(--pro-ease), color var(--pro-t) var(--pro-ease), box-shadow var(--pro-t) var(--pro-ease);
}
html.pro body:has(.shell) tbody tr > td {
  transition: background-color var(--pro-t) var(--pro-ease);
}
@media (prefers-reduced-motion: reduce) {
  html.pro body:has(.shell) * { transition: none !important; }
}

/* 侧栏品牌块：深底上一枚浅色方块（C 版） */
@media (min-width: 761px) {
  html.pro body:has(.shell) .side .brandmark {
    background: var(--pro-side-ink-strong);
    color: var(--pro-side);
    box-shadow: none;
  }
}

/* 达人手机端、登录页保持原配色（用户 10-09 定：只换电脑端内部页面）：没有 .shell 的页面用回原来的变量 */
html.pro:has(body:not(:has(.shell))) {
  /* 底色与文字：灰里带一点蓝，跟主色是一家（2026-09-29 票据墨蓝） */
  --pro-bg: #f3f5f8;
  --pro-bg-sunk: #eef1f5;
  --pro-card: #ffffff;
  --pro-hover: #f5f7fa;
  --pro-line: #dfe4eb;
  --pro-line-soft: #eef1f5;
  --pro-line-strong: #cbd2dc;
  --pro-ink: #151b26;
  --pro-ink-2: #3a4353;
  --pro-muted: #5f6a7c;
  --pro-faint: #8d97a8;
  /* 唯一的品牌色：墨蓝 = 能点、选中。变量名沿用 clay，免得全站改名 */
  --pro-clay: #2445a8;
  --pro-clay-hover: #1b3685;
  --pro-clay-ink: #2445a8;
  --pro-clay-tint: #eef2fb;
  --pro-clay-tint-2: #dfe6f7;
  /* 状态色：只用在钱和事的状态上 */
  --pro-amber: #a35a00;
  --pro-amber-tint: #fcefd9;
  --pro-red: #c93a2e;
  --pro-red-tint: #fbe8e6;
  --pro-green: #17804a;
  --pro-green-tint: #e3f3e9;
  --pro-shadow-1: 0 1px 2px rgba(21, 27, 38, 0.04);
  --pro-shadow-2: 0 1px 2px rgba(21, 27, 38, 0.04), 0 8px 24px rgba(21, 27, 38, 0.06);
  --pro-shadow-3: 0 24px 64px rgba(21, 27, 38, 0.16);
}
html.pro body:not(:has(.shell)) .top {
  background: rgba(247, 249, 253, 0.86);
}


/* ===== web/src/css/60-mp-admin.css ===== */
/* 系统设置 → 小程序首页卡片（2026-10-08）。只管这一块，不动别的页面。 */
.mp-cards .table-tools {
  gap: 12px;
}
.mp-card-list {
  display: flex;
  flex-direction: column;
  border-top: 1px solid var(--pro-line);
}
.mp-card-row {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 12px 0;
  border-bottom: 1px solid var(--pro-line-soft, var(--pro-line));
}
.mp-card-row.off {
  opacity: 0.5;
}
.mp-card-thumb {
  flex: 0 0 120px;
  height: 52px;
  border-radius: 6px;
  overflow: hidden;
  background: var(--pro-bg-sunk, var(--pro-hover));
  color: var(--pro-faint);
  font-size: 12px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.mp-card-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.mp-card-main {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.mp-card-main b {
  color: var(--pro-ink);
}
.mp-card-main small {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.mp-card-acts {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  justify-content: flex-end;
}
.mp-card-form {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px 16px;
  padding: 14px;
  margin: 10px 0;
  border: 1px solid var(--pro-line);
  border-radius: 8px;
  background: var(--pro-card);
}
.mp-card-form label {
  display: flex;
  flex-direction: column;
  gap: 4px;
  font-size: 13px;
  color: var(--pro-muted);
}
.mp-card-form .mp-card-wide,
.mp-card-form-acts {
  grid-column: 1 / -1;
}
.mp-card-form-acts {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
}
@media (max-width: 720px) {
  .mp-card-form {
    grid-template-columns: 1fr;
  }
  .mp-card-row {
    flex-wrap: wrap;
  }
  .mp-card-acts {
    width: 100%;
  }
}
.mp-card-kinds {
  margin: 4px 0 10px;
}
.mp-card-kind,
.mp-card-st {
  font-style: normal;
  font-size: 11px;
  font-weight: 500;
  padding: 1px 6px;
  border-radius: 4px;
  margin-right: 6px;
  background: var(--pro-hover);
  color: var(--pro-muted);
}
.mp-card-st {
  margin: 0 0 0 6px;
}
.mp-card-st.ok {
  background: var(--pro-clay-tint);
  color: var(--pro-green, var(--pro-clay-ink));
}
.mp-card-st.warn {
  color: var(--pro-amber);
}
.mp-card-time {
  display: flex;
  align-items: center;
  gap: 6px;
}
.mp-card-time input {
  flex: 1;
  min-width: 0;
}
.mp-card-time em {
  font-style: normal;
  color: var(--pro-faint);
}
/* 游客页 · 招募入口（10-12） */
.mp-card-form .mp-recruit-on {
  flex-direction: row;
  align-items: center;
  gap: 8px;
  color: var(--pro-ink);
}
.mp-card-form textarea {
  resize: vertical;
}

/* ============ 小程序管理（10-12）：左边内容、右边手机框预览 ============ */
.mpa-top {
  display: flex;
  align-items: center;
  gap: 14px;
  flex-wrap: wrap;
  margin-bottom: 14px;
}
.mpa-live {
  font-size: 12px;
  color: var(--pro-muted);
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.mpa-live::before {
  content: "";
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--pro-green);
}
.mpa-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 320px;
  gap: 18px;
  align-items: start;
}
.mpa-col {
  min-width: 0;
}
.mpa-side {
  position: sticky;
  top: 12px;
}
@media (max-width: 1100px) {
  .mpa-grid {
    grid-template-columns: 1fr;
  }
  .mpa-side {
    position: static;
    order: -1;
  }
}
.mpa-card .table-tools {
  gap: 12px;
  flex-wrap: wrap;
}
.mpa-card .table-tools .muted {
  flex: 1;
  min-width: 220px;
}
.mpa-foot {
  margin: 12px 0 0;
  font-size: 12px;
  color: var(--pro-faint);
}
/* 列表行 */
.mpa-list {
  display: flex;
  flex-direction: column;
  border-top: 1px solid var(--pro-line);
}
.mpa-row {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 12px 8px;
  margin: 0 -8px;
  border-bottom: 1px solid var(--pro-line-soft, var(--pro-line));
  border-left: 3px solid transparent;
}
.mpa-row.on-day {
  border-left-color: var(--pro-clay);
}
.mpa-row.off {
  opacity: 0.55;
}
.mpa-thumb {
  flex: 0 0 112px;
  height: 70px;
  border-radius: 8px;
  overflow: hidden;
  background: linear-gradient(135deg, #7b5cff, #4a32d8);
  display: flex;
  align-items: center;
  justify-content: center;
}
.mpa-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.mpa-thumb em {
  font-style: normal;
  font-size: 12px;
  color: rgba(255, 255, 255, 0.8);
}
.mpa-main {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 3px;
}
.mpa-main b {
  color: var(--pro-ink);
  font-weight: 600;
}
.mpa-main small {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.mpa-tag {
  font-style: normal;
  font-size: 11px;
  font-weight: 500;
  padding: 1px 7px;
  margin-right: 6px;
  border-radius: 999px;
  border: 1px solid var(--pro-line-strong, var(--pro-line));
  color: var(--pro-muted);
}
.mpa-acts {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  justify-content: flex-end;
}
@media (max-width: 720px) {
  .mpa-row {
    flex-wrap: wrap;
  }
  .mpa-acts {
    width: 100%;
  }
}
/* 编辑表单 */
.mpa-form {
  border-color: var(--pro-clay);
  box-shadow: 0 0 0 3px var(--pro-clay-tint);
}
.mpa-form-h {
  grid-column: 1 / -1;
  display: flex;
  align-items: baseline;
  gap: 10px;
}
.mpa-form-h b {
  color: var(--pro-ink);
  font-size: 14px;
}
.mpa-lbl {
  font-size: 13px;
  color: var(--pro-muted);
}
.mpa-img {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.mpa-img-row {
  display: flex;
  gap: 12px;
  align-items: flex-start;
}
.mpa-img-now {
  flex: 0 0 150px;
  height: 94px;
  border-radius: 8px;
  overflow: hidden;
  background: linear-gradient(135deg, #7b5cff, #4a32d8);
  display: flex;
  align-items: center;
  justify-content: center;
}
.mpa-img-now img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.mpa-img-now em {
  font-style: normal;
  font-size: 12px;
  color: rgba(255, 255, 255, 0.85);
}
.mpa-img-pick {
  flex: 1;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}
.mpa-img-url {
  flex: 1 1 100%;
}
.btn-file {
  position: relative;
  display: inline-flex;
  align-items: center;
  padding: 6px 14px;
  border-radius: 6px;
  background: var(--pro-clay);
  color: #fff;
  font-size: 13px;
  cursor: pointer;
}
.btn-file.busy {
  opacity: 0.6;
  cursor: default;
}
.btn-file input {
  position: absolute;
  inset: 0;
  opacity: 0;
  cursor: pointer;
}
/* 排期：接下来 30 天 */
.mpt {
  margin: 6px 0 14px;
  padding: 12px 14px;
  border: 1px solid var(--pro-line);
  border-radius: 8px;
  background: var(--pro-bg-sunk, var(--pro-hover));
}
.mpt-h {
  display: flex;
  align-items: baseline;
  gap: 10px;
  flex-wrap: wrap;
  margin-bottom: 8px;
}
.mpt-h b {
  font-size: 13px;
  color: var(--pro-ink);
}
.mpt-h small {
  color: var(--pro-muted);
}
.mpt-h em {
  font-style: normal;
}
.mpt-h em.bad {
  color: var(--pro-red);
}
.mpt-h em.warn {
  color: var(--pro-amber);
}
.mpt-row {
  display: grid;
  grid-template-columns: 150px minmax(0, 1fr);
  align-items: center;
  gap: 10px;
  min-height: 22px;
}
.mpt-name {
  font-size: 12px;
  color: var(--pro-muted);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.mpt-cells {
  display: grid;
  grid-template-columns: repeat(30, minmax(0, 1fr));
  gap: 2px;
  align-items: center;
  height: 22px;
}
.mpt-days .mpt-cells {
  height: 26px;
}
.mpt-d {
  all: unset;
  box-sizing: border-box;
  height: 24px;
  border-radius: 4px;
  text-align: center;
  font-size: 11px;
  line-height: 24px;
  color: var(--pro-muted);
  font-variant-numeric: tabular-nums;
  cursor: pointer;
  background: var(--pro-card);
}
.mpt-d.we {
  color: var(--pro-faint);
}
.mpt-d.none {
  background: var(--pro-amber-tint, var(--pro-hover));
}
.mpt-d.over {
  background: var(--pro-red-tint);
  color: var(--pro-red);
  font-weight: 600;
}
.mpt-d:hover {
  outline: 1px solid var(--pro-line-strong, var(--pro-line));
}
.mpt-d.pick {
  background: var(--pro-ink);
  color: var(--pro-card);
}
.mpt-bar {
  height: 10px;
  border-radius: 5px;
  background: var(--pro-clay);
}
.mpt-bar.soon {
  background: repeating-linear-gradient(135deg, var(--pro-clay) 0 4px, var(--pro-clay-tint) 4px 8px);
}
.mpt-out {
  grid-column: 1 / -1;
  font-style: normal;
  font-size: 11px;
  color: var(--pro-faint);
}
/* 右边手机框 */
.mpa-pv {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.mpa-pv-h {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.mpa-pv-h b {
  font-size: 13px;
  color: var(--pro-ink);
}
.mpa-pv-day {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  color: var(--pro-muted);
}
.mpa-pv-day input {
  padding: 3px 6px;
  font-size: 12px;
}
.mpa-pv-tip {
  margin: 0;
  font-size: 12px;
  color: var(--pro-faint);
}
.mpa-phone {
  width: 300px;
  max-width: 100%;
  height: 560px;
  margin: 0 auto;
  border-radius: 34px;
  border: 8px solid #1d1b29;
  background: #f6f4f9;
  overflow: hidden;
  box-shadow: 0 18px 40px rgba(29, 27, 41, 0.18);
}
.mpa-ban {
  position: relative;
  height: 190px;
  background: linear-gradient(135deg, #7b5cff, #4a32d8) center / cover no-repeat;
}
.mpa-ban::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(15, 12, 48, 0.5) 0%, rgba(15, 12, 48, 0) 32%, rgba(15, 12, 48, 0) 46%, rgba(15, 12, 48, 0.78) 100%);
}
.mpa-ban-logo {
  position: absolute;
  left: 14px;
  top: 14px;
  z-index: 1;
}
.mpa-ban-logo img {
  height: 16px;
}
.mpa-ban-cap {
  position: absolute;
  left: 14px;
  right: 14px;
  bottom: 24px;
  z-index: 1;
  display: flex;
  flex-direction: column;
  gap: 3px;
  color: #fff;
}
.mpa-ban-cap i {
  align-self: flex-start;
  font-style: normal;
  font-size: 10px;
  font-weight: 600;
  padding: 1px 8px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.18);
  border: 1px solid rgba(255, 255, 255, 0.35);
}
.mpa-ban-cap b {
  font-size: 17px;
  line-height: 23px;
}
.mpa-ban-cap small {
  font-size: 11px;
  color: rgba(255, 255, 255, 0.9);
}
.mpa-ban-dots {
  position: absolute;
  left: 14px;
  bottom: 10px;
  z-index: 1;
  display: flex;
  gap: 4px;
}
.mpa-ban-dots i {
  width: 6px;
  height: 6px;
  border-radius: 3px;
  background: rgba(255, 255, 255, 0.5);
  cursor: pointer;
}
.mpa-ban-dots i.on {
  width: 14px;
  background: #fff;
}
.mpa-ban-nav {
  all: unset;
  position: absolute;
  top: 50%;
  z-index: 2;
  width: 24px;
  height: 24px;
  margin-top: -12px;
  border-radius: 50%;
  text-align: center;
  line-height: 22px;
  font-size: 18px;
  color: #fff;
  background: rgba(0, 0, 0, 0.25);
  cursor: pointer;
}
.mpa-ban-nav.prev {
  left: 6px;
}
.mpa-ban-nav.next {
  right: 6px;
}
.mpa-ph-body {
  position: relative;
  margin-top: -10px;
  padding: 0 10px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.mpa-ph-hi,
.mpa-ph-card {
  background: #fff;
  border-radius: 12px;
  padding: 10px 12px;
  display: flex;
  flex-direction: column;
  gap: 7px;
}
.mpa-ph-hi {
  flex-direction: row;
  align-items: center;
  gap: 8px;
}
.mpa-ph-hi i {
  width: 26px;
  height: 26px;
  border-radius: 50%;
  background: #e7e3f1;
}
.mpa-ph-hi span {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.mpa-ph-hi b,
.mpa-ph-hi small {
  display: block;
  height: 7px;
  width: 90px;
  border-radius: 4px;
  background: #e7e3f1;
}
.mpa-ph-hi small {
  width: 60px;
}
.mpa-ph-card b {
  font-size: 12px;
  color: #3a3550;
}
.mpa-ph-card i {
  height: 22px;
  border-radius: 6px;
  background: #f1eef7;
}
/* 公告 */
.mpn-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  align-items: center;
  gap: 14px;
  padding: 12px 8px;
  margin: 0 -8px;
  border-bottom: 1px solid var(--pro-line-soft, var(--pro-line));
  border-left: 3px solid transparent;
  cursor: pointer;
}
.mpn-row:hover {
  background: var(--pro-hover);
}
.mpn-row.pick {
  border-left-color: var(--pro-clay);
}
.mpn-row.off {
  opacity: 0.55;
}
.mpn-main {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 3px;
}
.mpn-main b {
  color: var(--pro-ink);
  font-weight: 600;
}
.mpn-main b .mp-card-st {
  margin: 0 8px 0 0;
}
.mpn-main small {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.mpn-read {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 4px;
  min-width: 110px;
}
.mpn-read small {
  color: var(--pro-muted);
  font-variant-numeric: tabular-nums;
}
.mpn-read b {
  color: var(--pro-ink);
}
.mpn-bar {
  width: 100px;
  height: 6px;
  border-radius: 3px;
  background: var(--pro-hover);
  overflow: hidden;
}
.mpn-bar i {
  display: block;
  height: 100%;
  background: var(--pro-green);
}
.mpn-who {
  grid-column: 1 / -1;
  padding: 10px 12px;
  border-radius: 8px;
  background: var(--pro-bg-sunk, var(--pro-hover));
  font-size: 12px;
  cursor: default;
}
.mpn-who p {
  margin: 0 0 4px;
}
.mpn-who b {
  margin-right: 8px;
}
@media (max-width: 720px) {
  .mpn-row {
    grid-template-columns: 1fr;
  }
  .mpn-read {
    align-items: flex-start;
  }
}
.mpn-form textarea {
  resize: vertical;
}
.mpn-aud,
.mpn-when {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.mpn-when input {
  max-width: 240px;
}
.seg.mini button {
  padding: 4px 12px;
  font-size: 12px;
}
.mpn-chips {
  display: flex;
  gap: 14px;
  flex-wrap: wrap;
}
.mpn-chk {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
  color: var(--pro-ink);
}
.mpn-names {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
  padding: 6px;
  border: 1px solid var(--pro-line);
  border-radius: 6px;
  background: var(--pro-card);
}
.mpn-names input {
  flex: 1;
  min-width: 160px;
  border: 0;
  outline: 0;
  padding: 4px;
}
.mpn-name {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 2px 4px 2px 10px;
  border-radius: 999px;
  background: var(--pro-clay-tint);
  color: var(--pro-clay-ink);
  font-size: 12px;
}
.mpn-name button {
  all: unset;
  width: 18px;
  height: 18px;
  text-align: center;
  line-height: 18px;
  border-radius: 50%;
  cursor: pointer;
}
.mpn-name button:hover {
  background: rgba(0, 0, 0, 0.08);
}
.mpn-count {
  font-size: 13px;
  color: var(--pro-ink);
}
.mpn-count .bad {
  color: var(--pro-red);
  font-style: normal;
}
.mpn-warn {
  margin: 0;
  padding: 8px 10px;
  border-radius: 6px;
  background: var(--pro-amber-tint, var(--pro-hover));
  color: var(--pro-ink);
  font-size: 12px;
}
.mpn-phone {
  padding: 14px 10px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
/* 预览达人首页的公告提醒条（10-12 起公告不在「要做的事」里，在打招呼下面一行） */
.mpn-ph-todo {
  background: #f2ebf6;
  border: 1px solid #e3d5ec;
  border-radius: 12px;
  padding: 8px 10px;
}
.mpn-ph-row {
  display: flex;
  align-items: center;
  gap: 6px;
}
.mpn-ph-row > i {
  flex: none;
  font-style: normal;
  font-size: 10px;
  line-height: 15px;
  padding: 0 4px;
  border-radius: 4px;
  background: #713f8c;
  color: #fff;
}
.mpn-ph-row span {
  flex: 1;
  min-width: 0;
}
.mpn-ph-row b {
  display: block;
  font-size: 12px;
  font-weight: 500;
  color: #1d1b29;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.mpn-ph-row em {
  font-style: normal;
  color: #a9a4bb;
}
.mpn-ph-sheet {
  flex: 1;
  background: #fff;
  border-radius: 14px;
  padding: 14px;
  display: flex;
  flex-direction: column;
  gap: 8px;
  overflow: auto;
}
.mpn-ph-head {
  display: flex;
  align-items: center;
  gap: 8px;
}
.mpn-ph-head small {
  font-size: 11px;
  color: #a9a4bb;
}
.mpn-ph-tag,
html .phone.t5 .msg-notice {
  font-style: normal;
  font-size: 10px;
  font-weight: 600;
  padding: 1px 6px;
  border-radius: 4px;
  background: #ece7ff;
  color: #5b3ff0;
  margin-right: 6px;
  vertical-align: 1px;
}
.mpn-ph-sheet > b {
  font-size: 15px;
  color: #1d1b29;
  line-height: 21px;
}
.mpn-ph-sheet p {
  margin: 0;
  font-size: 13px;
  line-height: 20px;
  color: #3a3550;
  white-space: pre-wrap;
  word-break: break-word;
}
.mpn-ph-btn {
  align-self: flex-start;
  margin-top: 4px;
  padding: 6px 14px;
  border-radius: 999px;
  background: #5b3ff0;
  color: #fff;
  font-size: 12px;
}
/* 达人端：公告弹层（10-12） */
html .phone.t5 .h5-notice h3 {
  margin: 4px 0 8px;
  font-size: 17px;
  line-height: 24px;
}
html .phone.t5 .h5-notice-body {
  margin: 0 0 14px;
  font-size: 14px;
  line-height: 22px;
  white-space: pre-wrap;
  word-break: break-word;
  max-height: 50vh;
  overflow: auto;
}
html .phone.t5 .h5-notice-go {
  all: unset;
  display: block;
  text-align: center;
  padding: 11px;
  border-radius: 999px;
  background: #5b3ff0;
  color: #fff;
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
}
/* 表单里的通用 label 是上下排的，这几个要左右排 */
.mp-card-form label.btn-file {
  flex-direction: row;
  color: #fff;
  font-size: 13px;
}
.mp-card-form label.mpn-chk {
  flex-direction: row;
  color: var(--pro-ink);
}
.mpn-form textarea,
.mp-card-form textarea {
  font-family: inherit;
  line-height: 1.6;
}

/* 横幅编辑：素材与展示时间分区 */
.mp-card-form.mpa-form { border-color: var(--pro-line); box-shadow: none; padding: 24px; gap: 22px; border-radius: 14px; }
.mpa-form .mpa-form-h b { font-size: 17px; }
.mpa-form .mpa-img-row { gap: 20px; align-items: center; }
.mpa-form .mpa-img-now { flex-basis: 200px; height: 125px; border-radius: 10px; }
.mpa-form .mpa-img { gap: 12px; }
.mpa-form .mpa-img-pick input, .mpa-form .mpa-img-pick select, .mpc-time-field input { min-height: 42px; padding: 9px 12px; border: 1px solid var(--pro-line); border-radius: 8px; background: var(--pro-card); color: var(--pro-ink); font: inherit; box-sizing: border-box; }
.mpc-schedule { border-top: 1px solid var(--pro-line); padding-top: 22px; }
.mpc-section-title { display: flex; align-items: baseline; gap: 12px; margin-bottom: 16px; }
.mpc-section-title b { font-size: 14px; }
.mpc-section-title span, .mpc-time-help { font-size: 12px; color: var(--pro-muted); }
.mpc-schedule-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.mpc-time-field { min-width: 0; }
.mpc-time-field input { width: 100%; margin: 8px 0; }
.mpc-time-help { display: flex; justify-content: space-between; gap: 8px; }
.mpc-schedule-summary { margin: 16px 0 0; padding: 12px 14px; border-radius: 8px; background: var(--pro-hover); color: var(--pro-ink); font-size: 13px; line-height: 1.6; }
.mpa-form .mp-card-form-acts { padding-top: 16px; border-top: 1px solid var(--pro-line); }
@media (max-width: 720px) { .mpc-schedule-grid { grid-template-columns: 1fr; } .mpa-form .mpa-img-row { flex-direction: column; align-items: stretch; } .mpa-form .mpa-img-now { flex-basis: auto; width: 200px; } }
.mpc-time-help .t-link { border: 0; background: transparent; color: var(--pro-clay); padding: 0; font: inherit; cursor: pointer; }
.mpc-time-help .t-link:hover { text-decoration: underline; }
@media (max-width: 1100px) { .mpa-grid:has(.mpc-schedule) .mpa-side { order: 1; } }

/* 成品海报按原比例预览，不压暗图片。 */
.mpa-ban.mpa-poster { height: auto; aspect-ratio: 1500 / 940; }
.mpa-ban.mpa-poster::after { display: none; }


/* ===== web/src/css/61-ad.css ===== */
/* ---- 投放进度表：序号、勾选、复制本行（10-08 评审会） ----
   前面多了勾选和序号两列，20-components 里按列号设的不换行要跟着挪：
   原第 5 列（产品）现在是第 7 列，第 5 列成了视频链接，链接下的文案要能换行。 */
.aw-table th.aw-pick,
.aw-table td.aw-pick {
  width: 32px;
  text-align: center;
}
.aw-table td.aw-no {
  width: 40px;
  text-align: center;
  color: var(--muted);
  white-space: nowrap;
}
.aw-table td.link-cell {
  white-space: normal;
}
.aw-table td:nth-child(7) {
  white-space: nowrap;
}
.aw-table td.row-actions {
  white-space: nowrap;
}
.aw-table td.row-actions .tiny + .tiny {
  margin-left: 6px;
}
#awCopySel:disabled {
  opacity: 0.5;
  cursor: default;
}

/* ---- 投流各表点表头排序（10-08 评审会），写法同抖音分析的 dy-th-sort ---- */
.ad-th-sort {
  white-space: nowrap;
}
.ad-th-sort:hover,
.ad-th-sort.on {
  color: var(--blue);
}
.aw-table thead th.ad-th-sort:hover,
.aw-table thead th.ad-th-sort.on {
  color: #ffffff;
  text-decoration: underline;
}
.ad-sort-note {
  font-size: 12px;
  white-space: nowrap;
}

/* 作品表：「复制链接」放在链接前面（10-12 用户：原来行尾「复制本行」没用，链接后面的 ⧉ 又被截断看不见） */
.aw-link .aw-copy {
  flex: none;
  margin-right: 6px;
  white-space: nowrap;
}


/* ===== web/src/css/62-order-crm.css ===== */
/* ============================================================
   62-order-crm：订单页照有成 CRM 合同订单极简复刻（2026-10-08 评审会）
   只管三处：新建订单弹窗（#orderModal.crm-order）、订单详情「详情」页签
   （.crm-detail）、稿费订单列表（.crm-list）。
   块头 = 左侧蓝色竖线 + 标题；表单两列，标签在左、输入框在右；字号统一 13px。
   ============================================================ */

/* ---------- 共用：块头 ---------- */
.crm-head {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 0 0 14px;
  padding-left: 10px;
  border-left: 3px solid var(--blue);
  line-height: 18px;
}
.crm-head > b {
  font-size: 15px;
  font-weight: 600;
  color: var(--ink);
}
.crm-count {
  font-size: 13px;
  color: var(--ink);
}
.crm-head .talent-add {
  margin-left: auto;
  position: relative;
}
.crm-link {
  border: 0;
  background: none;
  padding: 0 4px;
  color: var(--blue);
  font-size: 13px;
  cursor: pointer;
}
.crm-link:hover {
  text-decoration: underline;
}
.crm-link.danger {
  color: var(--red);
}

/* ---------- 共用：表格（达人明细 / 达人打款） ---------- */
.crm-table-wrap {
  overflow-x: auto;
  border: 1px solid var(--line);
  border-radius: 6px;
}
.crm-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}
.crm-table th {
  background: #f9f8f6;
  color: var(--ink);
  font-weight: 600;
  text-align: left;
  white-space: nowrap;
  padding: 9px 10px;
  border-bottom: 1px solid var(--line);
}
.crm-table th i,
.crm-dialog .field label i {
  font-style: normal;
  color: var(--red);
  margin-right: 2px;
}
.crm-table td {
  padding: 7px 10px;
  border-bottom: 1px solid #f4f3ef;
  vertical-align: middle;
}
.crm-table .c-no {
  width: 44px;
  text-align: center;
  color: var(--muted);
}
.crm-table .c-num {
  text-align: right;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.crm-table .c-op {
  white-space: nowrap;
  width: 1%;
}
.crm-table tfoot td {
  border-bottom: 0;
  background: #fafbfd;
  color: var(--ink);
  font-weight: 500;
}
.crm-table tfoot .c-no {
  color: var(--ink);
}
.crm-table tr.current-row td {
  background: #fbfbf9;
}
.crm-table em {
  font-style: normal;
  font-size: 11px;
  color: var(--blue);
}

/* ---------- 新建订单弹窗 ---------- */
html.pro #orderModal .crm-dialog,
#orderModal .crm-dialog {
  width: min(1120px, 100%);
  background: #ffffff;
  border-radius: 10px;
}
#orderModal .crm-dialog .dialog-head h2 {
  font-size: 17px;
  font-weight: 600;
}
#orderModal .crm-dialog .dialog-body {
  padding: 8px 28px 4px;
}
.crm-block {
  padding: 18px 0 20px;
  border-bottom: 1px solid #f5f4f0;
}
.crm-block:last-child {
  border-bottom: 0;
}
/* 两列表单：每一格「标签 | 输入框」左右排，照有成 */
.crm-form {
  display: grid;
  grid-template-columns: 1fr 1fr;
  column-gap: 48px;
  row-gap: 12px;
}
html.pro .crm-form .field,
.crm-form .field {
  display: grid;
  grid-template-columns: 108px minmax(0, 1fr);
  align-items: center;
  column-gap: 12px;
  row-gap: 4px;
}
.crm-form .field > label {
  font-size: 13px;
  color: var(--ink);
  text-align: right;
  white-space: nowrap;
}
.crm-form .field > :not(label) {
  grid-column: 2;
}
.crm-dialog .field input,
.crm-dialog .field select,
.crm-dialog .talent-line input,
.crm-dialog .talent-line select {
  height: 34px;
  border: 1px solid #e4e2de;
  border-radius: 4px;
  padding: 0 10px;
  font-size: 13px;
  background: #ffffff;
  color: var(--ink);
}
.crm-dialog .field input[readonly] {
  background: #f9f8f6;
  color: #55524c;
}
.crm-dialog .input-action {
  display: flex;
  min-width: 0;
}
.crm-dialog .input-action > :first-child {
  flex: 1;
  min-width: 0;
  border-radius: 4px 0 0 4px;
}
.crm-dialog .input-action button {
  height: 34px;
  border: 1px solid #e4e2de;
  border-left: 0;
  border-radius: 0 4px 4px 0;
  background: #ffffff;
  color: var(--blue);
  font-size: 13px;
  padding: 0 14px;
  white-space: nowrap;
}
/* 评审会：弹窗里说明性的小字一律去掉，只留出错时的那一句 */
#orderModal .crm-dialog .field-hint {
  display: none;
}
#orderModal .crm-dialog #xtHint:not(:empty),
#orderModal .crm-dialog #partsHint:not(:empty) {
  display: block;
  color: var(--red);
  font-size: 12px;
  margin-top: 8px;
}
.crm-dialog .field.invalid input,
.crm-dialog .talent-line input.invalid {
  border-color: var(--red);
}
/* 达人明细表 */
.crm-talent-table td:nth-child(2) {
  min-width: 170px;
}
.crm-talent-table .talent-line select,
.crm-talent-table .talent-line input {
  width: 100%;
}
.crm-talent-table .talent-amount {
  min-width: 110px;
}
.crm-talent-table .talent-date {
  min-width: 140px;
}
.crm-talent-table .talent-cost {
  display: table-cell;
}
.crm-talent-table .talent-cost .tc-share {
  display: block;
  font-style: normal;
  font-size: 11px;
  color: var(--muted);
}
.crm-talent-table .talent-cost .tc-cost {
  font-weight: 500;
}
.crm-talent-table .remove-row {
  width: auto;
  height: auto;
  background: none;
  border-radius: 0;
  font-size: 13px;
}
/* 金额平衡：压成一行细条，放在表格下面 */
#orderModal .crm-dialog .amount-check {
  display: flex;
  align-items: center;
  gap: 28px;
  margin-top: 10px;
  padding: 8px 12px;
  border-radius: 4px;
  font-size: 12px;
}
#orderModal .crm-dialog .amount-check b {
  display: inline;
  margin: 0 0 0 6px;
  font-size: 13px;
}
#orderModal .crm-dialog .amount-check strong {
  margin-left: auto;
  font-size: 12px;
}
/* 投流项目：没有稿费，金额、成本、毛利几列整列不出现，金额平衡只留状态那一句 */
#orderModal.ad-mode .crm-talent-table .c-amt,
#orderModal.ad-mode .crm-talent-table tfoot {
  display: none;
}
#orderModal .crm-dialog .dialog-foot {
  padding: 12px 28px;
}
#orderModal .crm-dialog .foot-hint {
  margin-right: auto;
  font-size: 12px;
}
#orderModal .crm-dialog .foot-hint.bad {
  color: var(--red);
}

/* ---------- 订单详情「详情」页签 ---------- */
.crm-detail {
  background: #ffffff;
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 16px 18px 4px;
  margin-bottom: 12px;
}
.crm-detail .crm-dblock {
  padding: 4px 0 18px;
}
.crm-detail .crm-head {
  padding-bottom: 0;
  margin-bottom: 0;
}
.crm-detail .crm-head + * {
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px solid var(--line);
}
.crm-detail .crm-table-wrap {
  border-top: 1px solid var(--line);
}
.crm-dl {
  display: grid;
  grid-template-columns: 1fr 1fr;
  column-gap: 32px;
  row-gap: 0;
}
.crm-dl > div {
  display: grid;
  grid-template-columns: 112px minmax(0, 1fr);
  align-items: baseline;
  gap: 8px;
  padding: 8px 0;
  font-size: 13px;
}
.crm-dl > div.wide {
  grid-column: 1 / -1;
}
.crm-dl > div > span {
  color: var(--muted);
}
.crm-dl > div > span::after {
  content: "：";
}
.crm-dl > div > b {
  font-weight: 400;
  color: var(--ink);
  min-width: 0;
  overflow-wrap: anywhere;
}
.crm-dl .inline-sel {
  font-size: 13px;
}
.crm-detail .field-locked {
  margin-top: 12px;
}

/* ---------- 稿费订单列表 ---------- */
html.pro .crm-list {
  font-size: 13px;
}
html.pro .crm-list th {
  background: #f9f8f6;
  font-weight: 600;
  white-space: nowrap;
}
html.pro .crm-list td {
  white-space: nowrap;
  vertical-align: middle;
}
html.pro .crm-list .c-num {
  text-align: right;
  font-variant-numeric: tabular-nums;
}
html.pro .crm-list .stage-edit {
  min-width: 104px;
}
html.pro .crm-list .crm-ellipsis {
  max-width: 160px;
  overflow: hidden;
  text-overflow: ellipsis;
}
html.pro .crm-list .id-link {
  color: var(--blue);
  font-weight: 400;
  background: none;
  border: 0;
  padding: 0;
  cursor: pointer;
}
html.pro .crm-list .id-link:hover {
  text-decoration: underline;
}

@media (max-width: 760px) {
  .crm-form,
  .crm-dl {
    grid-template-columns: 1fr;
  }
  .crm-form .field {
    grid-template-columns: 1fr;
  }
  .crm-form .field > label {
    text-align: left;
  }
  .crm-form .field > :not(label) {
    grid-column: 1;
  }
  #orderModal .crm-dialog .dialog-body {
    padding: 4px 14px;
  }
  #orderModal .crm-dialog .amount-check {
    flex-wrap: wrap;
    gap: 8px 16px;
  }
}

/* 列表标题旁那句排序说明（「新的在上」/「按 X 倒序 · 恢复默认」），紧跟标题，不被推到右边 */
html.pro [data-scope="orders"] .table-tools > h3:has(+ .ad-sort-note) {
  margin-right: 0;
}
html.pro [data-scope="orders"] .table-tools > .ad-sort-note {
  margin-right: auto;
  text-align: left;
}
/* 排序箭头别被表头筛选按钮（绝对定位在右边）盖住 */
html.pro .crm-list th.ad-th-sort {
  padding-right: 24px;
  cursor: pointer;
}

/* ============================================================
   10-09 老板会：合同订单列表一行一张单（点 ▸ 展开达人），详情按整张单
   ============================================================ */
html.pro .badge.blue {
  background: var(--pro-clay-tint);
  color: var(--blue);
}
/* 列表：展开列、发布进度、展开的达人明细 */
html.pro .crm-order-list .exp-col {
  width: 28px;
  padding-left: 4px;
  padding-right: 0;
}
.order-exp {
  border: 0;
  background: none;
  color: var(--muted);
  font-size: 12px;
  width: 22px;
  height: 22px;
  border-radius: 4px;
  cursor: pointer;
}
.order-exp:hover {
  background: #f6f5f2;
  color: var(--blue);
}
/* 进度格（10-09）：第一行「位数 | 进度条 | a/b 已发布」，第二行小字「链接 c/d」；各段固定宽度，行与行对齐 */
html.pro .crm-order-list th.c-prog,
html.pro .crm-order-list td.c-prog,
.crm-order-list th.c-prog,
.crm-order-list td.c-prog {
  text-align: left;
}
.order-prog {
  display: inline-grid;
  grid-template-columns: 2.6em 48px auto;
  align-items: center;
  column-gap: 8px;
  row-gap: 1px;
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.order-prog b {
  font-weight: 500;
}
.order-prog em {
  font-style: normal;
  color: var(--muted);
  font-size: 12px;
}
.order-prog small {
  grid-column: 2 / 4;
  font-size: 11px;
  color: var(--muted);
}
.order-prog small.warn {
  color: #a8611b;
}
.order-prog .mini-bar {
  width: 48px;
}
.order-prog em.void {
  grid-column: 2 / 4;
}
/* 「还差：…」可以折行，不撑宽表格 */
html.pro .crm-order-list td .cell-sub.warn {
  white-space: normal;
  max-width: 180px;
}
.order-prog[role="button"] {
  cursor: pointer;
  border-radius: 6px;
  padding: 2px 6px;
  margin: -2px -6px;
}
.order-prog[role="button"]:hover {
  background: #f6f5f2;
}
/* 收起的明细行一直在 DOM 里，applyFilters 会改它的 style.display，所以这里用 !important 藏 */
html.pro .crm-order-list tr.order-sub.closed,
.crm-order-list tr.order-sub.closed {
  display: none !important;
}
html.pro .crm-order-list tr.order-sub > td {
  background: #f8faff;
  padding: 6px 12px 10px 58px;
  white-space: normal;
}
.order-lines {
  width: auto;
  min-width: 70%;
}
.order-lines td,
.order-lines th {
  white-space: nowrap;
}
.order-lines .c-num {
  text-align: right;
  font-variant-numeric: tabular-nums;
}
.order-lines tr.cancelled td {
  color: var(--muted);
}

/* 详情抬头：负责人 + 订单状态 */
#detailCtx {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
}
#detailCtx b {
  color: var(--blue);
  font-weight: 600;
}
.detail-actions .ghost.danger {
  color: var(--red);
  border-color: color-mix(in srgb, var(--red) 40%, transparent);
}
.order-void-note {
  margin: 0 0 8px;
}
/* 达人分配明细 */
.crm-table tr.cancelled td {
  color: var(--muted);
  text-decoration: line-through;
}
.crm-table tr.cancelled td em,
.crm-table tr.cancelled td select {
  text-decoration: none;
}
.xt-switch {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  white-space: nowrap;
  cursor: pointer;
}
.xt-switch input:disabled + span {
  color: var(--muted);
}
.order-log {
  max-height: 360px;
  overflow: auto;
}
/* 执行信息 / 作品链接：切换达人 */
.line-picker {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
  margin: 0 0 12px;
}
.line-picker > span {
  color: var(--muted);
  margin-right: 4px;
}
.line-picker button {
  border: 1px solid var(--line);
  background: #ffffff;
  border-radius: 14px;
  padding: 3px 12px;
  font-size: 12px;
  cursor: pointer;
}
.line-picker button.on {
  border-color: var(--blue);
  color: var(--blue);
  background: #f6f5f2;
}
/* 回款（应收应付） */
.payer-table .row-actions,
.payable-table td {
  white-space: nowrap;
}
.payer-table .row-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.payer-table td.danger {
  color: var(--red);
}
.proof-of {
  margin-top: 10px;
}
.proof-of h4 {
  margin: 0 0 6px;
  font-size: 13px;
}
.proof-of h4 small {
  margin-left: 8px;
  font-weight: 400;
  color: var(--muted);
}
.fee-brief-fold > summary {
  cursor: pointer;
  font-weight: 600;
}
.fee-brief-fold > summary small {
  margin-left: 8px;
  font-weight: 400;
  color: var(--muted);
}
/* 一行一张单的列表 14 列，1280 宽的屏上要放得下：收窄内边距，「在等谁」允许折两行 */
html.pro .crm-order-list th,
html.pro .crm-order-list td {
  padding-left: 8px;
  padding-right: 8px;
}
html.pro .crm-order-list .next-cell {
  white-space: normal;
  max-width: 150px;
}
html.pro .crm-order-list .crm-ellipsis {
  max-width: 120px;
}
.order-exp {
  font-size: 14px;
  color: var(--ink);
}

/* 订单详情「达人分配明细」的挂靠开关：和新建订单同一个滑块（10-09 会：开关用滑块） */
.xt-switch .on-switch input {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  margin: 0;
  opacity: 0;
  cursor: pointer;
}
.xt-switch .on-switch input:disabled + i {
  opacity: 0.55;
}
/* 回款页签星图返款：一行状态 + 问号注释 */
.offset-line {
  display: flex;
  align-items: center;
  gap: 6px;
  margin: 6px 0 0;
  font-size: 13px;
  color: var(--muted);
}
.qmark {
  display: inline-grid;
  place-items: center;
  width: 16px;
  height: 16px;
  border-radius: 50%;
  border: 1px solid var(--line);
  font-style: normal;
  font-size: 11px;
  cursor: help;
}

/* ---------- 10-09 详情页：左边信息可直接改，右边操作日志时间线 ---------- */
html.pro .detail-drawer:has(.crm-detail-split) {
  width: min(1240px, 96vw);
}
.crm-detail-split {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 320px;
  gap: 14px;
  align-items: start;
}
.crm-detail-split > .crm-detail {
  margin-bottom: 0;
}
.crm-edit {
  font: inherit;
  font-size: 13px;
  color: var(--ink);
  width: 100%;
  max-width: 220px;
  padding: 3px 8px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #ffffff;
}
.crm-edit:hover {
  border-color: #c8c5c0;
}
.crm-edit:focus {
  outline: none;
  border-color: var(--blue, #6183cd);
  box-shadow: 0 0 0 2px rgba(97, 131, 205, 0.12);
}
.crm-edit.num {
  max-width: 130px;
  text-align: right;
}
td > .crm-edit {
  max-width: 140px;
}
.order-timeline {
  position: sticky;
  top: 0;
  background: #ffffff;
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 14px 16px;
  max-height: calc(100vh - 160px);
  overflow: auto;
}
.order-timeline h3 {
  margin: 0 0 12px;
  font-size: 14px;
  display: flex;
  justify-content: space-between;
  align-items: baseline;
}
.order-timeline h3 small {
  font-weight: 400;
  color: var(--muted);
  font-size: 12px;
}
.order-timeline ol {
  list-style: none;
  margin: 0;
  padding: 0;
}
.order-timeline li {
  position: relative;
  padding: 0 0 14px 16px;
  border-left: 1px solid var(--line);
  margin-left: 4px;
  font-size: 12.5px;
}
.order-timeline li:last-child {
  border-left-color: transparent;
}
.order-timeline li::before {
  content: "";
  position: absolute;
  left: -5px;
  top: 3px;
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: #ffffff;
  border: 2px solid var(--blue, #6183cd);
  box-sizing: border-box;
}
.order-timeline time {
  display: block;
  color: var(--muted);
  font-size: 12px;
}
.order-timeline li > b {
  display: block;
  margin: 2px 0;
  font-weight: 600;
}
.order-timeline li > b small {
  font-weight: 400;
  color: var(--muted);
  margin-left: 6px;
}
.order-timeline p {
  margin: 0;
  color: var(--ink);
  overflow-wrap: anywhere;
  line-height: 1.5;
}
.order-timeline p s {
  color: var(--muted);
}
.order-timeline p b {
  color: var(--blue, #6183cd);
}
.order-timeline .tl-none {
  border: 0;
  padding-left: 0;
  color: var(--muted);
}
.order-timeline .tl-none::before {
  display: none;
}
@media (max-width: 900px) {
  .crm-detail-split {
    grid-template-columns: 1fr;
  }
  .order-timeline {
    position: static;
    max-height: none;
  }
}

/* ---------- 达人分配明细（10-09 收紧）----------
   去掉序号；每格「主值 + 一行小字」（分成 / 毛利率 / 执行状态），行高一致；
   数字等宽右对齐；当前达人左侧一道蓝线；达人应收只加方向标，不改数。 */
.order-alloc {
  font-size: 13px;
}
.order-alloc th {
  background: #fbfaf8;
  color: var(--muted);
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0.02em;
  padding: 10px;
}
.order-alloc td {
  padding: 11px 10px;
  white-space: nowrap;
  border-bottom-color: #f6f4f0;
  font-variant-numeric: tabular-nums;
}
.order-alloc tbody tr:last-child td {
  border-bottom: 0;
}
.order-alloc tbody tr:hover td {
  background: #fafbfe;
}
.order-alloc td > small {
  display: block;
  margin-top: 3px;
  font-size: 11.5px;
  line-height: 1.3;
  color: var(--muted);
  font-weight: 400;
}
.order-alloc .c-num {
  text-align: right;
}
.order-alloc .c-num > small {
  text-align: right;
}
.order-alloc .c-who b {
  font-size: 14px;
  font-weight: 600;
  color: var(--ink);
}
.order-alloc .al-tag {
  display: inline-block;
  margin-left: 6px;
  padding: 0 6px;
  border-radius: 4px;
  background: #f5f3ef;
  color: var(--blue);
  font-size: 11px;
  line-height: 17px;
  vertical-align: 1px;
}
.order-alloc .al-tag.off {
  background: #f5f4f0;
  color: var(--muted);
}
.order-alloc tr.current-row td {
  background: #fcfbfa;
}
.order-alloc tr.current-row td:first-child {
  box-shadow: inset 3px 0 0 var(--blue);
}
.order-alloc .al-dim {
  color: var(--muted);
}
.order-alloc .al-amt {
  width: 100px;
  text-align: right;
  font-variant-numeric: tabular-nums;
}
.order-alloc .al-date input {
  width: 124px;
  font-size: 12.5px;
  padding-left: 6px;
  padding-right: 4px;
}
.order-alloc .al-exec .inline-sel {
  max-width: 96px;
}
.order-alloc .al-pay {
  white-space: normal;
  min-width: 96px;
  color: var(--muted);
}
.order-alloc .c-xt {
  text-align: left;
}
/* 挂靠：开关在上、状态字在下，和别的格子一样两行 */
.order-alloc .xt-switch {
  flex-direction: column;
  align-items: flex-start;
  gap: 4px;
}
.order-alloc .xt-switch > span:last-child {
  font-size: 11.5px;
  line-height: 1.3;
  color: var(--muted);
}
.order-alloc .xt-switch:has(input:checked) > span:last-child {
  color: var(--blue);
}
.order-alloc tfoot td {
  background: #fbfaf8;
  border-top: 1px solid var(--line);
  font-weight: 600;
  padding-top: 12px;
  padding-bottom: 12px;
}
.order-alloc tfoot .c-who {
  color: var(--ink);
}

/* 达人应收：数照旧（负数 = 达人转回公司），下面一枚方向标。订单详情、新建订单、订单列表共用 */
.due-flow {
  display: inline-flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 3px;
  font-variant-numeric: tabular-nums;
}
.due-flow b {
  font-weight: 600;
  color: var(--ink);
}
.due-flow.in b {
  color: var(--red);
}
.due-flow i {
  font-style: normal;
  font-size: 11px;
  line-height: 17px;
  padding: 0 7px;
  border-radius: 9px;
  white-space: nowrap;
}
.due-flow.out i {
  background: #f5f3ef;
  color: var(--blue);
}
.due-flow.in i {
  background: #faeded;
  color: var(--red);
}
.crm-talent-table .tc-profit .tc-rate {
  display: block;
  margin-top: 2px;
  font-size: 11.5px;
  color: var(--muted);
}

/* ---------- 稿费单执行信息（10-09 二改）：顶上四个数 + 整张单一张表 ---------- */
.ex-wrap {
  padding-top: 16px;
}
/* 一行统计、竖线分隔，不再卡里套卡 */
.ex-stats {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  margin-bottom: 16px;
  padding: 4px 0 14px;
  border-bottom: 1px solid var(--line);
}
.ex-stat {
  padding: 2px 16px;
  border-left: 1px solid var(--line);
}
.ex-stat:first-child {
  padding-left: 0;
  border-left: 0;
}
.ex-stat span {
  display: block;
  font-size: 12px;
  color: var(--muted);
}
.ex-stat b {
  display: block;
  margin-top: 4px;
  font-size: 18px;
  font-weight: 600;
  color: var(--ink);
  font-variant-numeric: tabular-nums;
}
.ex-stat b small {
  font-size: 12px;
  font-weight: 400;
  color: var(--muted);
}

.ex-stat.warn b {
  color: var(--orange);
}
.ex-table th {
  background: #fbfaf8;
  color: var(--muted);
  font-size: 12px;
  font-weight: 500;
  padding: 10px 12px;
}
.ex-table td {
  padding: 12px;
  vertical-align: middle;
  border-bottom-color: #f6f4f0;
}
.ex-table tbody tr:last-of-type td {
  border-bottom: 0;
}
.ex-table td > small,
.ex-table .c-who small {
  display: block;
  margin-top: 3px;
  font-size: 11.5px;
  color: var(--muted);
}
.ex-table .c-who b {
  font-size: 14px;
  font-weight: 600;
}
.ex-table tr.current-row td {
  background: #fcfbfa;
}
.ex-table tr.current-row td:first-child {
  box-shadow: inset 3px 0 0 var(--blue);
}
.ex-table .al-tag {
  display: inline-block;
  margin-left: 6px;
  padding: 0 6px;
  border-radius: 4px;
  background: #f5f4f0;
  color: var(--muted);
  font-size: 11px;
  font-style: normal;
  line-height: 17px;
}
.ex-prog {
  display: flex;
  align-items: center;
  gap: 10px;
  white-space: nowrap;
}
.ex-segs {
  display: inline-flex;
  gap: 3px;
}
.ex-segs i {
  width: 16px;
  height: 6px;
  border-radius: 3px;
  background: #eeece7;
}
.ex-segs i.on {
  background: var(--blue);
}
.ex-segs.off i {
  background: #f2f0eb;
}
.ex-stage {
  height: 28px;
  padding: 0 6px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #ffffff;
  font-size: 13px;
}
.ex-stage-txt {
  font-size: 13px;
  font-weight: 500;
}
.ex-rv {
  color: var(--orange) !important;
}
.ex-date {
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.ex-links {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
}
.ex-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  max-width: 260px;
  padding: 2px 4px 2px 2px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #ffffff;
  font-size: 12.5px;
}
.ex-link em {
  padding: 0 6px;
  border-radius: 4px;
  background: var(--soft);
  font-style: normal;
  font-size: 11.5px;
  line-height: 20px;
  color: var(--ink);
}
.ex-link a {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--blue);
}
.ex-link button {
  border: 0;
  background: none;
  padding: 0 4px;
  color: var(--muted);
  font-size: 14px;
  line-height: 1;
  cursor: pointer;
}
.ex-link button:hover {
  color: var(--red);
}
.ex-none {
  font-size: 12.5px;
  color: var(--muted);
}
.ex-none.warn,
.ex-quota.warn {
  color: var(--orange) !important;
}
.ex-add {
  border: 1px dashed color-mix(in srgb, var(--blue) 45%, transparent);
  background: none;
  border-radius: 6px;
  padding: 2px 10px;
  color: var(--blue);
  font-size: 12.5px;
  line-height: 20px;
  cursor: pointer;
}
.ex-add:hover {
  background: #f7f5f2;
}
.ex-add-row td {
  background: #fafbfd;
  padding-top: 8px;
  padding-bottom: 10px;
}
.ex-add-row .link-add {
  margin: 0;
  align-items: center;
}
.ex-quota-in {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-left: 12px;
  white-space: nowrap;
  font-size: 12.5px;
  color: var(--muted);
}
.ex-add-row .link-add .ex-quota-in input {
  flex: none;
  width: 64px;
  min-width: 0;
  height: 30px;
}
@media (max-width: 760px) {
  .ex-stats {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

/* ---------- 订单列表展开行（10-09 重做）----------
   原来：内层是个没撑满的白卡片 + 左边 3px 粗蓝线，和外层表格对不齐，像贴上去的。
   现在：展开区和父行连成一块浅底，内层表格撑满、无边框，从订单号那一列开始对齐；
   列宽固定，几位达人上下对齐；执行状态下拉收成紧凑尺寸。 */
html.pro .crm-order-list tr.order-row.is-open > td {
  background: #fbfbf9;
  border-bottom-color: transparent;
}
html.pro .crm-order-list tr.order-sub > td,
.crm-order-list tr.order-sub > td {
  background: #fbfbf9;
  /* 20-components 里 .project-detail > td 的 padding 带 !important，这里要压过它 */
  /* 64px = 勾选列 + 展开列，让「达人」列和外层「订单号」列对齐 */
  padding: 0 8px 12px 64px !important;
  box-shadow: none;
  border-top: 0;
  border-bottom: 1px solid var(--line);
}
html.pro .crm-order-list .order-lines,
.crm-order-list .order-lines {
  width: 100%;
  min-width: 0;
  table-layout: fixed;
  background: transparent;
  border: 0;
  border-radius: 0;
  font-size: 13px;
}
.crm-order-list .order-lines col.ol-who {
  width: 16%;
}
.crm-order-list .order-lines col.ol-way {
  width: 12%;
}
.crm-order-list .order-lines col.ol-stage {
  width: 15%;
}
.crm-order-list .order-lines col.ol-plan {
  width: 11%;
}
.crm-order-list .order-lines col.ol-link {
  width: 20%;
}
.crm-order-list .order-lines col.ol-due {
  width: 12%;
}
.list-link-add {
  display: flex;
  gap: 6px;
  align-items: center;
}
.list-link-add input {
  flex: 1;
  min-width: 0;
  padding: 3px 6px;
  font-size: 12px;
}
.order-lines .ok-text {
  color: var(--green, #357750);
}
.order-lines .warn,
.crm-order-list .cell-sub.warn {
  color: #a8611b;
}
html.pro .crm-order-list .order-lines th {
  background: transparent;
  color: var(--muted);
  font-size: 12px;
  font-weight: 500;
  padding: 6px 8px;
  border-bottom: 1px solid #efede8;
  text-transform: none;
  letter-spacing: 0;
}
html.pro .crm-order-list .order-lines td {
  padding: 8px;
  border-bottom: 1px solid #f4f2ee;
  background: transparent;
  vertical-align: middle;
  overflow: hidden;
  text-overflow: ellipsis;
}
html.pro .crm-order-list .order-lines tbody tr:last-child td {
  border-bottom: 0;
}
html.pro .crm-order-list .order-lines tbody tr:hover td {
  background: #f6f5f2;
}
/* 「需抵扣 / 公司付达人」放金额下面一行，不和金额挤一格 */
.crm-order-list .order-lines .due-flow {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 1px;
}
.crm-order-list .order-lines td b {
  font-weight: 600;
}
.crm-order-list .order-lines .cell-sub {
  margin-top: 2px;
  font-size: 11.5px;
}
.crm-order-list .order-lines .stage-edit {
  height: 30px;
  min-width: 0;
  width: 100%;
  max-width: 150px;
  padding: 0 26px 0 10px;
  font-size: 13px;
  border-radius: 6px;
}

.crm-void-tip {
  font-size: 12px;
  font-weight: 400;
  color: var(--muted);
  padding: 2px 8px;
  border-radius: 999px;
  background: #f6f4f1;
}

/* 稿费订单「按达人看」（10-10）：一行一位达人，8–9 列，不需要合同表的 1160 最小宽度 */
.table-card .unified-table.order-table.task-list {
  min-width: 940px;
}
.task-list td .cell-sub.danger {
  color: var(--pro-red, #b42318);
}
.table-tools .order-view-seg {
  margin-left: 4px;
}


/* ===== web/src/css/63-talent-income.css ===== */
/* 达人端收益与结算三段式（2026-10-08 下午评审会）：卡片、可点的明细行、抽屉里的返回 */
html .phone.t5.tv .h5-card {
  background: #fff;
  border: 1px solid var(--t5-line);
  border-radius: var(--tv-r);
  box-shadow: var(--tv-shadow);
  padding: 6px 16px 4px;
  margin-bottom: 12px;
}
html .phone.t5.tv .h5-card-h {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  padding: 10px 0 4px;
}
html .phone.t5.tv .h5-card-h b {
  font-size: 15px;
  font-weight: 800;
}
html .phone.t5.tv .h5-card-h small {
  font-size: 12px;
  color: var(--t5-sub);
}
html .phone.t5.tv .h5-part {
  display: flex;
  align-items: center;
  gap: 8px;
  width: 100%;
  padding: 11px 0;
  border: 0;
  border-top: 1px solid var(--t5-line);
  background: none;
  text-align: left;
  font: inherit;
  color: inherit;
}
html .phone.t5.tv .h5-card-h + .h5-part,
html .phone.t5.tv .t5-sheet-box .h5-back + .h5-part {
  border-top: 0;
}
html .phone.t5.tv .h5-part > span {
  flex: 1;
  min-width: 0;
  display: grid;
  gap: 2px;
}
html .phone.t5.tv .h5-part b {
  font-size: 14px;
  font-weight: 700;
}
html .phone.t5.tv .h5-part small {
  font-size: 12px;
  color: var(--t5-sub);
  line-height: 1.4;
}
html .phone.t5.tv .h5-part strong {
  font-size: 15px;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
html .phone.t5.tv .h5-part strong.neg {
  color: #c62f2f;
}
html .phone.t5.tv .h5-part strong.est {
  color: var(--t5-sub);
}
html .phone.t5.tv .h5-part > svg {
  width: 14px;
  height: 14px;
  flex: none;
  fill: none;
  stroke: var(--t5-sub);
  stroke-width: 2;
}
html .phone.t5.tv .h5-part-sum strong {
  font-size: 16px;
}
html .phone.t5.tv .h5-st {
  font-style: normal;
  font-size: 11px;
  padding: 2px 6px;
  border-radius: 4px;
  white-space: nowrap;
}
html .phone.t5.tv .h5-st.ok {
  color: #2e7d4f;
  background: #e7f5ec;
}
html .phone.t5.tv .h5-st.ing {
  color: #a35207;
  background: #fff3e3;
}
html .phone.t5.tv .h5-back {
  display: block;
  margin: 0 0 6px;
  padding: 4px 0;
  font-size: 13px;
}
html .phone.t5.tv .h5-sheet-sum {
  display: grid;
  gap: 2px;
  margin: 12px 0 4px;
}
html .phone.t5.tv .h5-sheet-sum small {
  font-size: 12px;
  color: var(--t5-sub);
}
html .phone.t5.tv .h5-sheet-sum strong {
  font-size: 26px;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
}
html .phone.t5.tv .h5-strong {
  font-size: 16px;
  font-weight: 800;
}
html .phone.t5.tv .h5-wd > .h5-wd-st {
  display: block;
  margin: -6px 0 10px;
  font-size: 12px;
  opacity: 0.88;
}
html .phone.t5.tv .h5-wd > .h5-wd-btn + .h5-wd-st {
  margin: 10px 0 0;
}
html .phone.t5.tv .t5-kv b .h5-strong {
  color: var(--t5-ink);
}
html .phone.t5.tv .h5-part b.mono {
  font-size: 13px;
  font-weight: 600;
}
/* 结算单账单三块（settleBill，样式本体在 64-settle-split.css）：手机上收小，表格太宽时在框里横滑 */
html .phone.t5.tv .sb-blk {
  border-bottom-color: var(--t5-line);
}
html .phone.t5.tv .sb-blk > summary {
  gap: 8px;
  padding: 11px 0;
}
html .phone.t5.tv .sb-blk > summary:hover {
  background: none;
}
html .phone.t5.tv .sb-blk > summary small,
html .phone.t5.tv .sb-car,
html .phone.t5.tv .sb-t {
  color: var(--t5-sub);
}
html .phone.t5.tv .sb-body {
  padding: 0 0 10px;
}
html .phone.t5.tv .sb-scroll {
  max-height: 300px;
  border-color: var(--t5-line);
  -webkit-overflow-scrolling: touch;
}
html .phone.t5.tv .sb-tb {
  font-size: 12px;
}
html .phone.t5.tv .sb-tb th,
html .phone.t5.tv .sb-tb td {
  padding: 6px 8px;
}
html .phone.t5.tv .sb-tb td {
  border-top-color: var(--t5-line);
}
html .phone.t5.tv .sb-tb td:nth-child(2) {
  min-width: 72px;
}
html .phone.t5.tv .sb-sum {
  padding: 11px 0 6px 16px;
  border-top-color: var(--t5-ink, #1a1d24);
}
html .phone.t5.tv .sb-sum strong {
  font-size: 17px;
}
html .phone.t5.tv .t5-sheet-box .sb {
  margin-top: 4px;
}
/* 手机上佣金表不定宽：订单号缩小，商品列最少给 96px */
html .phone.t5.tv .sb-com {
  table-layout: auto;
}
html .phone.t5.tv .sb-com .c-id {
  width: auto;
}
html .phone.t5.tv .sb-id {
  font-size: 11px;
}
html .phone.t5.tv .sb-prod {
  max-width: 140px;
}
html .phone.t5.tv .sb-tools {
  padding: 8px 0 0;
}

/* 10-09 打款失败重出的单：顶上一条提示，红只表示出了问题 */
html .phone .h5-card.h5-fail {
  border-left: 3px solid var(--red, #c0392b);
}
html .phone .h5-card.h5-fail b {
  color: var(--red, #c0392b);
  font-size: 14px;
}
html .phone .h5-card.h5-fail p {
  margin: 6px 0 0;
  font-size: 13px;
  line-height: 1.6;
  color: #5c5752;
}


/* ===== web/src/css/64-settle-split.css ===== */
/* ============================================================
   64-settle-split：结算对账单 / 财务付款（2026-10-08 晚改版，用户认可的方案）
   顶上流程条（.sf-flow）＋ 左列表右详情（.sf-split）＋ 待打款批量表（.sf-batch）。
   原则：少字、靠位置和颜色说话；金额一律等宽数字右对齐。
   ============================================================ */

.sf-page {
  --sf-fee: #2e4c8d;
  --sf-com: #548a6c;
  --sf-off: #ba4043;
  --sf-adj: #b68237;
  --sf-tint: #f7f5f2;
}

/* ---------- 流程条：圆点 + 连线，当前那步实心 ---------- */
.sf-flow {
  display: flex;
  margin: 2px 0 16px;
  padding: 6px;
  background: #ffffff;
  border: 1px solid var(--line);
  border-radius: 14px;
  box-shadow: 0 1px 2px rgba(36, 34, 31, 0.04);
  overflow-x: auto;
}
.sf-step {
  position: relative;
  flex: 1 1 0;
  min-width: 150px;
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 12px 14px;
  border: 0;
  border-radius: 10px;
  background: none;
  text-align: left;
  font: inherit;
  color: var(--ink);
  cursor: pointer;
  transition: background var(--duration-quick, 150ms) ease;
}
/* 两步之间的连线：从上一格圆点右边连过来 */
.sf-step + .sf-step::before {
  content: "";
  position: absolute;
  top: 25px;
  left: -14px;
  width: 22px;
  height: 2px;
  border-radius: 1px;
  background: var(--line);
}
.sf-step:hover {
  background: var(--soft);
}
.sf-step.on {
  background: var(--sf-tint);
}
.sf-dot {
  flex: none;
  display: grid;
  place-items: center;
  width: 26px;
  height: 26px;
  border-radius: 50%;
  border: 1.5px solid #dedcd8;
  background: #ffffff;
  color: var(--muted);
  font-style: normal;
  font-size: 12px;
  font-weight: 700;
}
.sf-step.on .sf-dot {
  border-color: var(--blue);
  background: var(--blue);
  color: #ffffff;
}
.sf-step.done .sf-dot {
  border-color: #bcd9c8;
  background: #eaf4ee;
  color: #486f5a;
}
.sf-st {
  display: grid;
  gap: 1px;
  min-width: 0;
}
.sf-st small {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 12.5px;
  color: var(--muted);
  white-space: nowrap;
}
.sf-step.on .sf-st small {
  color: var(--blue);
  font-weight: 600;
}
.sf-st b {
  font-size: 19px;
  font-weight: 700;
  letter-spacing: -0.01em;
  font-variant-numeric: tabular-nums;
}
.sf-st em {
  font-style: normal;
  font-size: 12.5px;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
}
.sf-you {
  text-decoration: none;
  padding: 0 6px;
  border-radius: 999px;
  background: var(--blue);
  color: #ffffff;
  font-size: 11px;
  font-weight: 600;
  line-height: 17px;
}
.st-head-act button.on {
  border-color: var(--blue);
  color: var(--blue);
}

/* ---------- 左列表 + 右详情 ---------- */
.sf-split {
  display: grid;
  grid-template-columns: minmax(260px, 310px) minmax(0, 1fr);
  gap: 16px;
  align-items: start;
}
@media (max-width: 900px) {
  .sf-split {
    grid-template-columns: 1fr;
  }
}
.sf-list,
.sf-panel {
  background: #ffffff;
  border: 1px solid var(--line);
  border-radius: 14px;
  box-shadow: 0 1px 2px rgba(36, 34, 31, 0.04);
}
.sf-list {
  padding: 6px;
  position: sticky;
  top: 12px;
}
.sf-list-h {
  display: flex;
  justify-content: space-between;
  padding: 10px 10px 6px;
  font-size: 12px;
  font-weight: 600;
  color: var(--muted);
}
.sf-list-h b {
  font-weight: 600;
}
.sf-item {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 10px;
  width: 100%;
  padding: 10px;
  border: 0;
  border-radius: 10px;
  background: none;
  text-align: left;
  font: inherit;
  color: var(--ink);
  cursor: pointer;
}
.sf-item:hover {
  background: var(--soft);
}
.sf-item.on {
  background: var(--sf-tint);
}
.sf-av {
  display: grid;
  place-items: center;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: #f1efeb;
  color: var(--blue);
  font-style: normal;
  font-size: 13px;
  font-weight: 700;
}
.sf-item.on .sf-av {
  background: var(--blue);
  color: #ffffff;
}
.sf-av.lg {
  width: 44px;
  height: 44px;
  font-size: 17px;
}
.sf-who {
  display: grid;
  min-width: 0;
}
.sf-who b {
  font-size: 14px;
  font-weight: 600;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.sf-who small {
  font-size: 12px;
  color: var(--muted);
}
.sf-amt {
  display: grid;
  justify-items: end;
  gap: 3px;
}
.sf-amt b {
  font-size: 14px;
  font-variant-numeric: tabular-nums;
}
.sf-chip {
  display: inline-block;
  padding: 1px 8px;
  border-radius: 999px;
  font-size: 11px;
  line-height: 18px;
  white-space: nowrap;
  background: #f3f2ee;
  color: #6b675e;
}
.sf-chip.t-orange {
  background: #f4e7d1;
  color: #8c6221;
}
.sf-chip.t-green {
  background: #e0f2e6;
  color: #486f5a;
}
.sf-chip.t-blue,
.sf-chip.t-cyan {
  background: #f1efea;
  color: var(--blue);
}
.sf-chip.t-purple {
  background: #f3f1ed;
  color: #4c608c;
}
.sf-empty {
  padding: 36px 14px;
  text-align: center;
  color: var(--muted);
  font-size: 13px;
}

/* ---------- 右边这张单 ---------- */
.sf-panel {
  display: grid;
  gap: 22px;
  padding: 22px 24px;
  min-width: 0;
}
.sf-top {
  display: flex;
  align-items: center;
  gap: 14px;
  padding-bottom: 18px;
  border-bottom: 1px solid var(--line);
}
.sf-name {
  flex: 1;
  min-width: 0;
}
.sf-name h3 {
  margin: 0;
  font-size: 19px;
  font-weight: 700;
}
.sf-name p {
  margin: 2px 0 0;
  font-size: 12.5px;
  color: var(--muted);
}
.sf-big {
  display: grid;
  justify-items: end;
  gap: 4px;
}
.sf-big b {
  font-size: 28px;
  font-weight: 700;
  letter-spacing: -0.02em;
  font-variant-numeric: tabular-nums;
}
.sf-panel section h4 {
  margin: 0 0 10px;
  padding-left: 10px;
  border-left: 3px solid var(--blue);
  font-size: 14px;
  font-weight: 700;
  line-height: 16px;
}

/* 结算单 = 一张账单（10-09）：稿费 / 卖货佣金 / 星图返款 三块，块头色点 + 合计，点开是表格；最后一行实付。
   PC 结算对账单、财务付款和达人端共用（settleBill），达人端的尺寸在 63-talent-income.css 里收小。 */
.sb {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  min-width: 0;
  --sf-fee: #2e4c8d;
  --sf-com: #548a6c;
  --sf-off: #ba4043;
  --sf-adj: #b68237;
}
.sb > *,
.sb-body {
  min-width: 0;
  max-width: 100%;
}
.sb-blk {
  border-bottom: 1px solid var(--line, #edebe7);
}
.sb-blk > summary {
  display: grid;
  grid-template-columns: 8px auto minmax(0, 1fr) auto 18px;
  align-items: center;
  gap: 10px;
  padding: 12px 8px;
  list-style: none;
  cursor: pointer;
}
.sb-blk > summary::-webkit-details-marker {
  display: none;
}
.sb-blk > summary:hover {
  background: var(--soft, #f8f7f5);
}
.sb-blk.is-empty > summary {
  cursor: default;
  pointer-events: none;
}
.sb-blk > summary > i {
  width: 8px;
  height: 8px;
  border-radius: 50%;
}
.sb-blk.k-fee > summary > i {
  background: var(--sf-fee);
}
.sb-blk.k-com > summary > i {
  background: var(--sf-com);
}
.sb-blk.k-off > summary > i {
  background: var(--sf-off);
}
.sb-blk.k-adj > summary > i {
  background: var(--sf-adj);
}
.sb-blk > summary b {
  font-size: 14px;
  font-weight: 600;
}
.sb-blk > summary small {
  font-size: 12px;
  color: var(--muted);
}
.sb-blk > summary strong {
  font-size: 15px;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.sb-blk.is-empty > summary b,
.sb-blk.is-empty > summary strong {
  color: var(--muted);
  font-weight: 500;
}
.sb strong.neg,
.sb-tb .neg {
  color: var(--sf-off);
}
.sb-car {
  color: var(--muted);
  font-size: 16px;
  text-align: center;
  transition: transform var(--duration-quick, 150ms) ease;
}
.sb-blk[open] .sb-car {
  transform: rotate(90deg);
}
.sb-body {
  padding: 0 0 12px 18px;
}
.sb-scroll {
  max-height: 360px;
  overflow: auto;
  border: 1px solid var(--line, #edebe7);
  border-radius: 8px;
}
.sb-tb {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}
.sb-tb th {
  position: sticky;
  top: 0;
  z-index: 1;
  padding: 7px 10px;
  background: #f9f8f6;
  color: var(--muted);
  font-size: 12px;
  font-weight: 500;
  text-align: left;
  white-space: nowrap;
}
.sb-tb td {
  padding: 7px 10px;
  border-top: 1px solid var(--line, #edebe7);
  vertical-align: middle;
}
.sb-tb .num {
  text-align: right;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.sb-tb td.num {
  font-weight: 600;
}
.sb-no,
.sb-t {
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.sb-t {
  color: var(--muted);
}
.sb-op {
  width: 1%;
  white-space: nowrap;
  text-align: right;
}
.sb-tag {
  display: inline-block;
  margin-left: 6px;
  padding: 0 5px;
  border-radius: 4px;
  background: #fdf3e5;
  color: #975213;
  font-size: 11px;
  font-style: normal;
  line-height: 18px;
  vertical-align: 1px;
}
.sb-seg {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 8px;
  font-size: 13px;
}
.sb-seg > span {
  flex: 1;
  min-width: 0;
  color: var(--muted);
}
.sb-seg b {
  font-variant-numeric: tabular-nums;
}
.sb-more {
  display: block;
  width: 100%;
  margin-top: 8px;
  padding: 7px 0;
  border: 1px dashed var(--line, #edebe7);
  border-radius: 8px;
  background: none;
  color: var(--blue, #2e4c8d);
  font: inherit;
  font-size: 13px;
  cursor: pointer;
}
.sb-note {
  margin: 8px 0 0;
  font-size: 12.5px;
  color: var(--muted);
}
.sb-sum {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 12px 8px 4px 26px;
  border-top: 1px solid #d3d2ce;
  margin-top: -1px;
}
.sb-sum b {
  font-size: 14px;
  font-weight: 700;
}
.sb-sum strong {
  font-size: 19px;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}
.sf-note {
  margin: 8px 0 0;
  font-size: 12.5px;
  color: var(--muted);
}
.sf-warn {
  margin: -8px 0 0;
  padding: 9px 12px;
  border-radius: 8px;
  background: #faebeb;
  color: var(--red);
  font-size: 13px;
}
.sf-kv {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}
@media (max-width: 1100px) {
  .sf-kv {
    grid-template-columns: 1fr;
  }
}
.sf-kv > div {
  padding: 10px 12px;
  border-radius: 10px;
  background: var(--soft);
  font-size: 13.5px;
  min-width: 0;
  overflow-wrap: anywhere;
}
.sf-kv span {
  display: block;
  margin-bottom: 2px;
  font-size: 12px;
  color: var(--muted);
}
.sf-acts {
  display: flex;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: 8px;
  margin: 0 -24px -22px;
  padding: 14px 24px;
  border-top: 1px solid var(--line);
  border-radius: 0 0 14px 14px;
  background: #fafbfd;
}
.sf-acts .tiny {
  height: 32px;
  padding: 0 14px;
  font-size: 13px;
}
.sf-acts .tiny.primary {
  padding: 0 18px;
}

/* ---------- 待打款批量表 ---------- */
.sf-batch {
  border-radius: 14px;
  overflow: hidden;
}
.sf-batch .sf-ck {
  width: 40px;
  text-align: center;
}
.sf-batch td.num,
.sf-batch th.num {
  text-align: right;
}
.sf-bar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px;
  padding: 12px 16px;
  border-top: 1px solid var(--line);
  background: #fafbfd;
  font-size: 13.5px;
}
.sf-bar b {
  font-variant-numeric: tabular-nums;
}
.sf-bar > span:last-child {
  display: flex;
  gap: 8px;
}

/* ---------- 站内确认框：打回 / 撤回这类危险动作用红底白字 ----------
   原来主题层的蓝色主按钮盖过了弹窗的红色，危险按钮成了蓝底红字，看不清（10-08 晚） */
html .ask-modal .ask-foot button.primary.danger,
html.pro .ask-modal .ask-foot button.primary.danger {
  background: var(--red);
  border-color: var(--red);
  color: #ffffff !important; /* 全局 .danger 是 color: red !important，这里要压过它 */
}
html .ask-modal.tone-red .ask-foot button.primary:not(.danger),
html.pro .ask-modal.tone-red .ask-foot button.primary:not(.danger) {
  background: var(--red);
  border-color: var(--red);
  color: #ffffff;
}

/* 10-09：表头原来被全站 html.pro th { background: transparent } 盖掉，滚动时表头和第一行叠在一起 */
html .sb-tb th {
  background: #f9f8f6;
  box-shadow: inset 0 -1px 0 var(--line, #edebe7);
}
html .sb-tb tbody tr:hover td {
  background: #fafbfd;
}
/* 卖货佣金逐单：订单号按编号排（等宽、灰一点），商品一行放不下就省略（悬停看全名），金额、时间列定宽 */
.sb-com {
  table-layout: fixed;
}
.sb-com .c-id {
  width: 190px;
}
.sb-com .c-amt {
  width: 92px;
}
.sb-com .c-t {
  width: 104px;
}
.sb-id {
  font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
  font-size: 12px;
  color: #6c685f;
  letter-spacing: 0.01em;
}
.sb-prod {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.sb-tools {
  display: flex;
  justify-content: flex-end;
  padding: 6px 8px 0;
}
.sb-export {
  border: 1px solid var(--line, #edebe7);
  background: #ffffff;
  border-radius: 6px;
  padding: 4px 12px;
  font: inherit;
  font-size: 12.5px;
  color: var(--blue, #2e4c8d);
  cursor: pointer;
}
.sb-export:hover {
  background: #f7f5f2;
}


/* ===== web/src/css/65-order-new.css ===== */
/* ============================================================
   65-order-new：新建订单弹窗（2026-10-09 老板会）
   达人分配明细里的挂靠开关、负数应收标红，财务信息实时预览。
   块头、表单、表格的底子沿用 62-order-crm.css。
   ============================================================ */

/* 挂靠、手续费两列只在星图单出现 */
#orderModal:not(.xt-mode) .crm-talent-table .c-xt {
  display: none;
}
.crm-talent-table .c-xt {
  text-align: center;
}

/* 挂靠开关 */
.on-switch {
  position: relative;
  display: inline-block;
  width: 34px;
  height: 20px;
  vertical-align: middle;
  cursor: pointer;
}
.crm-talent-table .on-switch input {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  margin: 0;
  opacity: 0;
  cursor: pointer;
}
.on-switch i {
  position: absolute;
  inset: 0;
  border-radius: 10px;
  background: var(--line);
  transition: background 0.15s;
  pointer-events: none;
}
.on-switch i::after {
  content: "";
  position: absolute;
  top: 2px;
  left: 2px;
  width: 16px;
  height: 16px;
  border-radius: 50%;
  background: #fff;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
  transition: transform 0.15s;
}
.on-switch input:checked + i {
  background: var(--blue);
}
.on-switch input:checked + i::after {
  transform: translateX(14px);
}
.on-switch input:focus-visible + i {
  outline: 2px solid var(--blue);
  outline-offset: 1px;
}

/* 达人应收：负数标红，下面一行小字 */
.crm-talent-table .on-neg,
.crm-talent-table td.on-neg {
  color: var(--red);
}
.crm-talent-table .on-neg-note {
  display: block;
  font-size: 11px;
  color: var(--red);
  white-space: normal;
  min-width: 120px;
}
.crm-talent-table td:nth-child(2) {
  min-width: 140px;
}
#orderModal.xt-mode .crm-talent-table .talent-amount {
  min-width: 90px;
}
#orderModal.xt-mode .crm-talent-table th,
#orderModal.xt-mode .crm-talent-table td {
  padding-left: 8px;
  padding-right: 8px;
}
.crm-talent-table .talent-date {
  min-width: 128px;
}
.crm-talent-table .tc-share {
  color: var(--muted);
}

/* 财务信息：实时预览 */
.on-fin {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  gap: 10px;
  margin-bottom: 10px;
}
.on-fin + .crm-form {
  margin-top: 14px;
}
.on-fin-item {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: 6px;
}
.on-fin-item span {
  font-size: 12px;
  color: var(--muted);
}
.on-fin-item b {
  font-size: 15px;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}
.on-fin-item.on-hide {
  display: none;
}
#orderModal.xt-mode .crm-talent-table .talent-date {
  min-width: 118px;
}


/* ===== web/src/css/70-polish.css ===== */
/* ============================================================
   10-11 细节打磨（只改外观，用户已看过改前改后对比图并认可）
   1. 统计卡统一成稿费订单页那种「一条横栏」：一个外框，格子之间细竖线（参考 Midday / Kumo）
   2. 操作提示：电脑端改成右下角叠放、带状态图标（参考 Sonner）；达人端和窄屏照旧
   ============================================================ */

/* ---------- 1. 统计横栏 ---------- */
@media (min-width: 901px) {
  html.pro :is(.kpis, .ad-kpis) {
    gap: 0;
    background: var(--pro-card);
    border: 1px solid var(--pro-line);
    border-radius: 12px;
    box-shadow: none;
    overflow: hidden;
    margin-bottom: 12px;
  }
  html.pro :is(.kpis, .ad-kpis) > :is(.kpi, .metric-card, .ad-kpi) {
    background: transparent;
    border: 0;
    border-radius: 0;
    box-shadow: none;
    min-height: 0;
    padding: 14px 20px 15px;
    text-align: left;
  }
  html.pro :is(.kpis, .ad-kpis) > :is(.kpi, .metric-card, .ad-kpi) + :is(.kpi, .metric-card, .ad-kpi) {
    border-left: 1px solid var(--pro-line);
  }
  html.pro .kpis > :is(.kpi-live, button.metric-card):hover {
    background: var(--pro-bg, #f7f5f2);
    box-shadow: none;
  }
  html.pro .kpis > .kpi .num,
  html.pro .kpis > .metric-card b {
    font-size: 24px;
    line-height: 30px;
    margin-top: 6px;
    font-weight: 600;
  }
  html.pro .kpis > .kpi .foot,
  html.pro .kpis > .metric-card small {
    margin-top: 2px;
    font-size: 12px;
  }
}

/* ---------- 2. 操作提示（电脑端叠放） ---------- */
#toastStack {
  position: fixed;
  right: 24px;
  bottom: 24px;
  z-index: 60;
  display: flex;
  flex-direction: column;
  gap: 8px;
  width: 340px;
  pointer-events: none;
}
#toastStack .tst {
  pointer-events: auto;
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 12px 14px;
  background: #ffffff;
  color: #1c1b19;
  border: 1px solid #e8e5de;
  border-radius: 12px;
  box-shadow: 0 10px 30px rgba(28, 27, 25, 0.12);
  font-size: 13px;
  line-height: 19px;
  font-weight: 400;
  opacity: 0;
  transform: translateY(8px) scale(0.98);
  transition:
    opacity 0.22s ease,
    transform 0.22s ease;
}
#toastStack .tst.in {
  opacity: 1;
  transform: none;
}
#toastStack .tst.out {
  opacity: 0;
  transform: translateY(6px);
}
#toastStack .tst svg {
  flex: 0 0 16px;
  width: 16px;
  height: 16px;
  margin-top: 1.5px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}
#toastStack .tst.ok svg {
  color: #2f7d55;
}
#toastStack .tst.warn svg {
  color: #b5651d;
}
#toastStack .tst.info svg {
  color: #7a756b;
}
@media (prefers-reduced-motion: reduce) {
  #toastStack .tst {
    transition: none;
  }
}


/* ===== web/src/css/71-talent-mp.css ===== */
/* ============================================================
   达人端（小程序 / 手机）10-11 走查后的整理
   只改外观：颜色收成「紫色主色 + 白卡」，红色只给异常；小字加深一档；
   修几处在小程序里才出现的版式问题。
   ============================================================ */

/* 本机预览开着开发入口时，body 底部给开发条留了 46px；小程序里开发条藏掉了，留白还在，整页会多滑出一截、底栏跟着上移 */
html.in-mp body:has(#devbar) {
  padding-bottom: 0;
}

/* 手机上的操作提示原来贴着屏幕底 28px，正好压在底栏后面看不清：抬到底栏上面 */
body:has(.phone.t5) #toast.toast {
  bottom: calc(84px + env(safe-area-inset-bottom));
  max-width: calc(100vw - 48px);
  text-align: center;
  font-size: 13px;
  line-height: 18px;
  z-index: 80;
}

/* ---- 颜色与层级 ---- */
html .phone.t5.tv {
  /* 说明文字原来 #7c7c92，在手机上偏淡：加深一档 */
  --t5-sub: #6a6a80;
}
/* 新消息条：淡紫底，和下面卡片区分开但不抢眼 */
/* 本月稿费接单 / 新加入投流项目：原来是橙粉渐变，和紫色大卡、淡紫通知三套颜色撞在一起。改成白卡 + 主色图标 */
/* 三格数字的标签加深 */

/* 底栏：字从 11px 加到 12px；没有进行中的投流项目时「+」降为描边，不再是全页最显眼的按钮 */
html .phone.t5.tv .t5-nav.bottomnav button span {
  font-size: 12px;
}
html .phone.t5.tv .t5-nav .tv-navplus.idle {
  background: transparent;
  box-shadow: inset 0 0 0 1.5px #c9c9d8;
}
html .phone.t5.tv .t5-nav .tv-navplus.idle svg {
  stroke: #9a9ab0;
}

/* 轮播大卡上的说明字：白字透明度提高，紫底上看得清 */

/* 「我的」近六个月全是 0：收成一行字，不画一排空柱子 */

/* 退出并解绑：单独放最底下，红字居中 */
html .phone.t5.tv .mp-danger {
  margin-top: 12px;
}
html .phone.t5.tv .mp-danger .t5-row {
  justify-content: center;
}
html .phone.t5.tv .mp-danger .t5-row span {
  color: var(--t5-warn, #b8403c);
  font-weight: 600;
}
html .phone.t5.tv .mp-danger .t5-row em {
  display: none;
}

/* 消息时间：原来字段读错一直是空的，补上后给个位置 */
html .phone.t5.tv .msg-row .msg-time {
  font-size: 11.5px;
  color: var(--t5-sub);
  white-space: nowrap;
}

/* 轮播只有一张时铺满，不留右边那截空 */
html .phone.t5.tv .mp-danger .t5-row span {
  flex: 1;
  text-align: center;
}
/* 要达人动手的资料（收款信息有问题）标红 */
html .phone.t5.tv .t5-row em.t5-need {
  color: var(--t5-warn, #b8403c);
  font-weight: 600;
}
/* 稿费接单记录：整月都是按合同额估的，月合计也用灰色（和每单一致） */

/* 收益页顶部：有结算单在处理时，说明新到的待结算款项什么时候能发起 */
html .phone.t5.tv .h5-wd .h5-wd-note {
  margin: 10px 0 0;
  font-size: 12px;
  color: rgba(255, 255, 255, 0.82);
}

/* ============ 10-11 晚：首页 = 品牌横幅 + 要做的事 + 本月任务 ============ */
html .phone.t5.tv .bh {
  position: relative;
  margin: 0 -14px;
  height: auto;
  aspect-ratio: 1500 / 940;
  overflow: hidden;
  background: #2a1f7a;
}
html .phone.t5.tv .bh .bh-track {
  gap: 0;
  padding: 0;
  margin: 0;
  display: flex;
  height: 100%;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scrollbar-width: none;
}
html .phone.t5.tv .bh-track::-webkit-scrollbar {
  display: none;
}
html .phone.t5.tv .bh-slide {
  all: unset;
  box-sizing: border-box;
  position: relative;
  flex: 0 0 100%;
  height: 100%;
  scroll-snap-align: center;
  background-size: cover;
  background-position: center;
  cursor: pointer;
}
html .phone.t5.tv .bh-slide.plain {
  background: linear-gradient(135deg, #7b5cff, #4a32d8);
}
html .phone.t5.tv .bh-slide::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(15, 12, 48, 0.5) 0%, rgba(15, 12, 48, 0) 32%, rgba(15, 12, 48, 0) 46%, rgba(15, 12, 48, 0.78) 100%);
}
html .phone.t5.tv .bh-cap {
  position: absolute;
  left: 18px;
  right: 18px;
  bottom: 30px;
  z-index: 1;
  display: flex;
  flex-direction: column;
  gap: 4px;
  color: #fff;
}
html .phone.t5.tv .bh-cap i {
  align-self: flex-start;
  font-style: normal;
  font-size: 11px;
  font-weight: 600;
  padding: 2px 10px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.18);
  border: 1px solid rgba(255, 255, 255, 0.35);
}
html .phone.t5.tv .bh-cap b {
  font-size: 21px;
  line-height: 28px;
  font-weight: 700;
}
html .phone.t5.tv .bh-cap small {
  font-size: 13px;
  color: rgba(255, 255, 255, 0.9);
}
html .phone.t5.tv .bh-brand {
  position: absolute;
  left: 18px;
  top: 16px;
  z-index: 2;
  display: flex;
  align-items: center;
  gap: 7px;
  pointer-events: none;
}
html .phone.t5.tv .bh-brand img {
  width: 24px;
  height: 24px;
}
html .phone.t5.tv .bh-brand b {
  color: #fff;
  font-size: 15px;
  letter-spacing: 1px;
}
html .phone.t5.tv .bh-brand small {
  color: rgba(255, 255, 255, 0.8);
  font-size: 11px;
}
html .phone.t5.tv .bh-dots {
  position: absolute;
  left: 18px;
  bottom: 14px;
  z-index: 2;
  margin: 0;
  justify-content: flex-start;
}
html .phone.t5.tv .bh-dots i {
  background: rgba(255, 255, 255, 0.5);
}
html .phone.t5.tv .bh-dots i.on {
  background: #fff;
}
html .phone.t5.tv .hm-body {
  position: relative;
  margin-top: 12px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
html .phone.t5.tv .hm-hello {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 14px;
  background: #fff;
  border-radius: 18px;
  box-shadow: 0 6px 20px rgba(23, 23, 42, 0.06);
}
html .phone.t5.tv .hm-hello > div {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
html .phone.t5.tv .hm-hello b {
  font-size: 16px;
}
html .phone.t5.tv .hm-hello small {
  font-size: 12px;
  color: var(--t5-sub);
}
html .phone.t5.tv .hm-hello .t5-avatar {
  width: 40px;
  height: 40px;
}
html .phone.t5.tv .hm-card {
  background: #fff;
  border-radius: 18px;
  padding: 14px 16px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
html .phone.t5.tv .hm-h {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
}
html .phone.t5.tv .hm-h b {
  font-size: 16px;
}
html .phone.t5.tv .hm-h small {
  font-size: 12px;
  color: var(--t5-sub);
}
html .phone.t5.tv .hm-empty {
  margin: 0;
  font-size: 13px;
  color: var(--t5-sub);
}
/* 公告提醒条（10-12）：打招呼下面一行，有未读时淡紫底 */
html .phone.t5.tv .hm-notice {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 14px;
  background: #fff;
  border: 1px solid var(--t5-line);
  border-radius: var(--tv-r, 18px);
  color: var(--t5-sub);
}
html .phone.t5.tv .hm-notice.new {
  background: var(--t5-accent-soft);
  border-color: color-mix(in srgb, var(--t5-accent) 22%, #fff);
}
html .phone.t5.tv .hm-notice-main {
  flex: 1;
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 0;
  border: 0;
  background: none;
  font: inherit;
  text-align: left;
  color: inherit;
}
html .phone.t5.tv .hm-notice svg {
  flex: none;
  width: 18px;
  height: 18px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linejoin: round;
  stroke-linecap: round;
}
html .phone.t5.tv .hm-notice-main svg {
  color: var(--t5-accent);
}
html .phone.t5.tv .hm-notice-main em {
  flex: none;
  font-style: normal;
  font-size: 11px;
  line-height: 16px;
  padding: 0 5px;
  border-radius: 4px;
  background: var(--t5-accent);
  color: #fff;
}
html .phone.t5.tv .hm-notice-main b {
  flex: 1;
  min-width: 0;
  font-size: 13px;
  font-weight: 500;
  color: var(--t5-ink);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
html .phone.t5.tv .hm-notice-more {
  flex: none;
  padding: 0;
  border: 0;
  background: none;
  font: inherit;
  font-size: 12px;
  color: var(--t5-accent);
}
html .phone.t5.tv .hm-todo {
  display: flex;
  flex-direction: column;
}
html .phone.t5.tv .hm-todo-row {
  all: unset;
  box-sizing: border-box;
  display: flex;
  align-items: center;
  gap: 10px;
  min-height: 52px;
  padding: 8px 0;
  border-top: 1px solid var(--t5-line);
  cursor: pointer;
}
html .phone.t5.tv .hm-todo-row:first-child {
  border-top: 0;
}
html .phone.t5.tv .hm-todo-row > i {
  flex: none;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #c9c9d8;
}
html .phone.t5.tv .hm-todo-row.warn > i {
  background: #d9822b;
}
html .phone.t5.tv .hm-todo-row.bad > i {
  background: var(--t5-warn, #b8403c);
}
html .phone.t5.tv .hm-todo-row > span {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
html .phone.t5.tv .hm-todo-row b {
  font-size: 14px;
  font-weight: 600;
}
html .phone.t5.tv .hm-todo-row.bad b {
  color: var(--t5-warn, #b8403c);
}
html .phone.t5.tv .hm-todo-row small {
  font-size: 12px;
  color: var(--t5-sub);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
html .phone.t5.tv .hm-todo-row > svg {
  width: 14px;
  height: 14px;
  stroke: var(--t5-sub);
  flex: none;
}
html .phone.t5.tv .hm-ad {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
html .phone.t5.tv .hm-sub {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  padding-top: 10px;
  border-top: 1px solid var(--t5-line);
}
html .phone.t5.tv .hm-sub:first-child {
  padding-top: 0;
  border-top: 0;
}
html .phone.t5.tv .hm-sub b {
  font-size: 14px;
}
html .phone.t5.tv .hm-sub strong {
  font-size: 14px;
}
html .phone.t5.tv .hm-sub strong.est {
  color: var(--t5-sub);
}
html .phone.t5.tv .hm-card .t5-list .t5-row {
  padding-left: 0;
  padding-right: 0;
}
html .phone.t5.tv .hm-todo-row.go > i {
  background: var(--t5-brand, #5b3ff0);
}
html .phone.t5.tv .hm-note {
  margin: 0;
  font-size: 11.5px;
  color: var(--t5-sub);
}

/* ============ 10-11 晚：收益页 ============ */
html .phone.t5.tv .h5-ov > small {
  font-size: 12px;
}
html .phone.t5.tv .h5-flow-strip {
  margin: 12px 0 0;
  padding: 12px 14px;
  background: #fff;
  border-radius: 16px;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 6px;
  text-align: center;
}
html .phone.t5.tv .h5-flow-strip div {
  display: flex;
  flex-direction: column;
  gap: 3px;
  align-items: center;
}
html .phone.t5.tv .h5-flow-strip i {
  width: 100%;
  height: 4px;
  border-radius: 2px;
  background: #d8d4f6;
}
html .phone.t5.tv .h5-flow-strip i.s1 {
  background: #b3a8f3;
}
html .phone.t5.tv .h5-flow-strip i.s2 {
  background: #8a77f0;
}
html .phone.t5.tv .h5-flow-strip i.s3 {
  background: #5b3ff0;
}
html .phone.t5.tv .h5-flow-strip b {
  font-size: 12px;
}
html .phone.t5.tv .h5-flow-strip small {
  font-size: 10.5px;
  line-height: 14px;
  color: var(--t5-sub);
}
html .phone.t5.tv .h5-cd-main {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: 10px;
  margin: 4px 0 10px;
}
html .phone.t5.tv .h5-cd-main span {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
html .phone.t5.tv .h5-cd-main small {
  font-size: 12px;
  color: var(--t5-sub);
}
html .phone.t5.tv .h5-cd-main strong {
  font-size: 22px;
}
html .phone.t5.tv .h5-cd-fail {
  margin-top: 10px;
  padding: 10px 12px;
  border-radius: 12px;
  background: #fbeeee;
}
html .phone.t5.tv .h5-cd-fail b {
  font-size: 13px;
  color: var(--t5-warn, #b8403c);
}
html .phone.t5.tv .h5-cd-fail p {
  margin: 4px 0 0;
  font-size: 12px;
  line-height: 18px;
  color: #6a5552;
}
html .phone.t5.tv .h5-cd-fail .t5-link {
  padding: 0;
  font-size: 12px;
}
html .phone.t5.tv .h5-cd-go {
  margin-top: 10px;
  padding: 0;
  font-weight: 600;
}
html .phone.t5.tv .h5-pend-h {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 8px;
}
html .phone.t5.tv .h5-pend-h span {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
html .phone.t5.tv .h5-pend-h b {
  font-size: 16px;
}
html .phone.t5.tv .h5-pend-h small {
  font-size: 12px;
  color: var(--t5-sub);
}
html .phone.t5.tv .h5-pend-btn {
  flex: none;
  height: 36px;
  padding: 0 16px;
  border: 0;
  border-radius: 999px;
  background: var(--t5-accent);
  color: #fff;
  font-size: 13px;
  font-weight: 600;
}
html .phone.t5.tv .h5-pend-btn:disabled {
  background: #e9e8f2;
  color: #8a8aa0;
}
html .phone.t5.tv .h5-empty-line {
  margin: 0;
  font-size: 13px;
  color: var(--t5-sub);
}
html .phone.t5.tv .h5-card-h .t5-link {
  padding: 0;
  font-size: 12px;
}
html .phone.t5.tv .h5-doc-list,
html .phone.t5.tv .h5-hist-m {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
html .phone.t5.tv .h5-doc-row {
  all: unset;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 12px 14px;
  border-radius: 14px;
  background: #fff;
  border: 1px solid var(--t5-line);
  cursor: pointer;
}
html .phone.t5.tv .h5-doc-top,
html .phone.t5.tv .h5-doc-bot {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: 10px;
}
html .phone.t5.tv .h5-doc-top b {
  font-size: 14px;
}
html .phone.t5.tv .h5-doc-bot small {
  font-size: 12px;
  line-height: 18px;
  color: var(--t5-sub);
}
html .phone.t5.tv .h5-doc-bot strong {
  font-size: 16px;
  white-space: nowrap;
}
html .phone.t5.tv .h5-doc-row.bad .h5-doc-top b,
html .phone.t5.tv .h5-doc-row.bad .h5-doc-bot strong {
  color: var(--t5-sub);
}
html .phone.t5.tv .h5-doc-row.bad .h5-doc-bot strong,
html .phone.t5.tv .h5-sheet-sum strong.void {
  text-decoration: line-through;
}
html .phone.t5.tv .h5-st.bad {
  background: #fbeeee;
  color: var(--t5-warn, #b8403c);
}
html .phone.t5.tv .h5-st.mute {
  background: #f0f0f4;
  color: var(--t5-sub);
}
html .phone.t5.tv .h5-hist {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
html .phone.t5.tv .h5-chips {
  display: flex;
  gap: 8px;
  overflow-x: auto;
  scrollbar-width: none;
}
html .phone.t5.tv .h5-chips button {
  flex: none;
  height: 32px;
  padding: 0 14px;
  border-radius: 999px;
  border: 1px solid #e4e3ee;
  background: #fff;
  color: var(--t5-ink);
  font-size: 13px;
}
html .phone.t5.tv .h5-chips button.on {
  background: var(--t5-ink);
  border-color: var(--t5-ink);
  color: #fff;
}
html .phone.t5.tv .h5-seg {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  padding: 3px;
  border-radius: 10px;
  background: #ecebf3;
}
html .phone.t5.tv .h5-seg button {
  height: 32px;
  border: 0;
  border-radius: 8px;
  background: transparent;
  font-size: 13px;
  color: #4a4a60;
}
html .phone.t5.tv .h5-seg button.on {
  background: #fff;
  color: var(--t5-ink);
  font-weight: 600;
}
html .phone.t5.tv .h5-hist-mh {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 8px;
  padding: 4px 2px 0;
}
html .phone.t5.tv .h5-hist-mh span {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
html .phone.t5.tv .h5-hist-mh b {
  font-size: 15px;
}
html .phone.t5.tv .h5-hist-mh small {
  font-size: 12px;
  color: var(--t5-sub);
}
html .phone.t5.tv .h5-exp-btn {
  flex: none;
  height: 32px;
  padding: 0 12px;
  border-radius: 999px;
  border: 1px solid #c9c0fb;
  background: #fff;
  color: var(--t5-accent);
  font-size: 12px;
  font-weight: 600;
}
html .phone.t5.tv .h5-hist-tip {
  padding: 12px 14px;
  border-radius: 14px;
  background: #fff;
}
html .phone.t5.tv .h5-hist-tip b {
  font-size: 12px;
}
html .phone.t5.tv .h5-hist-tip p {
  margin: 4px 0 0;
  font-size: 12px;
  line-height: 18px;
  color: var(--t5-sub);
}
/* 结算单详情弹层头部 */
.h5-doc-head {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-bottom: 10px;
}
.h5-doc-head > em {
  align-self: flex-start;
}
.h5-doc-kv {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 4px 10px;
  font-size: 12px;
  color: #4a4a60;
}

/* ============ 10-11 夜：手机上账单明细改成两行一条 ============
   原来是 4–5 列的表，手机上横滑，金额列常被挤到框外（佣金单号 20 位最明显）。
   稿费 / 卖货佣金 / 需抵扣三块改成：第一行 商品 + 金额，第二行 单号 · 时间；调整块 3 列放得下，不动。
   只改排版，行和数还是 settleBill 那一批（导出也用同一批）。 */
html .phone.t5.tv .sb-h5 :is(.k-fee, .k-com, .k-off) .sb-scroll {
  overflow-x: hidden;
}
html .phone.t5.tv .sb-h5 :is(.k-fee, .k-com, .k-off) .sb-tb {
  display: block;
  width: 100%;
  min-width: 0;
}
html .phone.t5.tv .sb-h5 :is(.k-fee, .k-com, .k-off) .sb-tb thead {
  display: none;
}
html .phone.t5.tv .sb-h5 :is(.k-fee, .k-com, .k-off) .sb-tb tbody {
  display: block;
}
html .phone.t5.tv .sb-h5 :is(.k-fee, .k-com, .k-off) .sb-tb tr {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  column-gap: 4px;
  row-gap: 2px;
  padding: 8px 10px;
  border-top: 1px solid var(--t5-line);
}
html .phone.t5.tv .sb-h5 :is(.k-fee, .k-com, .k-off) .sb-tb tr:first-child {
  border-top: 0;
}
html .phone.t5.tv .sb-h5 :is(.k-fee, .k-com, .k-off) .sb-tb tr::after {
  content: "";
  order: 3;
  flex-basis: 100%;
  height: 0;
}
html .phone.t5.tv .sb-h5 :is(.k-fee, .k-com, .k-off) .sb-tb td {
  display: block;
  padding: 0;
  border: 0;
  min-width: 0;
  max-width: none;
  width: auto;
  font-size: 11px;
  color: var(--t5-sub);
}
html .phone.t5.tv .sb-h5 :is(.k-fee, .k-com, .k-off) .sb-tb td:nth-child(2) {
  order: 1;
  flex: 1 1 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 13px;
  color: var(--t5-ink, #17172a);
}
html .phone.t5.tv .sb-h5 :is(.k-fee, .k-com, .k-off) .sb-tb td.num {
  order: 2;
  font-size: 13px;
  font-weight: 600;
  color: var(--t5-ink, #17172a);
}
html .phone.t5.tv .sb-h5 :is(.k-fee, .k-com, .k-off) .sb-tb td.num.neg {
  color: var(--t5-warn, #b8403c);
}
html .phone.t5.tv .sb-h5 :is(.k-fee, .k-com, .k-off) .sb-tb td:nth-child(1) {
  order: 4;
}
html .phone.t5.tv .sb-h5 :is(.k-fee, .k-com, .k-off) .sb-tb td:nth-child(4) {
  order: 5;
}
html .phone.t5.tv .sb-h5 :is(.k-fee, .k-com, .k-off) .sb-tb td:nth-child(5) {
  order: 6;
}
html .phone.t5.tv .sb-h5 .k-com .sb-tb td:nth-child(4)::before {
  content: "· ";
}
html .phone.t5.tv .sb-h5 :is(.k-fee, .k-off) .sb-tb td:nth-child(4)::before {
  content: "· 发布 ";
}
html .phone.t5.tv .sb-h5 .k-fee .sb-tb td:nth-child(5)::before {
  content: "· 回款 ";
}
html .phone.t5.tv .sb-h5 .k-off .sb-tb td:nth-child(5)::before {
  content: "· 抵扣 ";
}

/* ============ 10-11 深夜：打款到哪说清楚 ============ */
/* 收益页大卡下面的打款账户条；有问题时整条变红 */
html .phone.t5.tv .h5-acct {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  margin: 10px 0 0;
  padding: 12px 14px;
  border: 0;
  border-radius: 16px;
  background: #fff;
  text-align: left;
  font: inherit;
  color: var(--t5-ink);
}
html .phone.t5.tv .h5-acct > span {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
html .phone.t5.tv .h5-acct small {
  font-size: 12px;
  color: var(--t5-sub);
}
html .phone.t5.tv .h5-acct b {
  font-size: 15px;
  font-weight: 700;
}
html .phone.t5.tv .h5-acct b u {
  text-decoration: none;
  font-weight: 500;
  color: var(--t5-sub);
  margin-left: 8px;
  font-size: 13px;
}
html .phone.t5.tv .h5-acct em {
  font-style: normal;
  font-size: 12px;
  line-height: 17px;
  color: var(--t5-sub);
}
html .phone.t5.tv .h5-acct > svg {
  flex: none;
  width: 16px;
  height: 16px;
  stroke: #b4b4c4;
}
html .phone.t5.tv .h5-acct.bad {
  background: #fbeeee;
  box-shadow: inset 0 0 0 1px #f1cfcd;
}
html .phone.t5.tv .h5-acct.bad b {
  color: var(--t5-warn, #b8403c);
}
html .phone.t5.tv .h5-acct.bad em {
  color: #6a5552;
}
html .phone.t5.tv .h5-acct.bad > i {
  flex: none;
  font-style: normal;
  font-size: 13px;
  font-weight: 600;
  color: #fff;
  background: var(--t5-warn, #b8403c);
  padding: 6px 12px;
  border-radius: 999px;
}
/* 发起结算弹层里的提醒：小一号 */
.h5-acct.bad.sm {
  margin: 8px 0 4px;
  padding: 10px 12px;
}
html .phone.t5.tv .h5-acct.sm b {
  font-size: 13.5px;
}
/* 当前结算单流程条下面一句「现在到哪、下一步」 */
html .phone.t5.tv .h5-next {
  display: block;
  margin: 8px 0 0;
  padding: 0;
  border: 0;
  background: none;
  text-align: left;
  font: inherit;
  font-size: 12.5px;
  line-height: 18px;
  color: var(--t5-sub);
}
html .phone.t5.tv button.h5-next.bad {
  margin-top: 4px;
  color: var(--t5-warn, #b8403c);
  font-weight: 600;
}

/* 成品海报自带文字和品牌，不再覆盖暗色蒙层。 */
html .phone.t5.tv .bh-slide.bh-poster::after { display: none; }


/* ===== web/src/css/72-talent-ink.css ===== */
/* ============================================================
   达人端配色（10-12 起按 MONEY多多 的 LOGO 定）：主色 = LOGO 深紫 #713f8c，暖白里带一点紫的底，细边白卡，
   收益大卡用更深的紫（像会员卡），数字金色点一下。红只给异常、绿只给已完成、琥珀只给快到期。
   （10-12 上午那版是墨蓝暖白，和电脑端同色；LOGO 定下来后达人端跟品牌走，电脑端保持墨蓝。）
   只改外观，全部集中在这一个文件；要退回旧的紫色版，把这个文件改名成 .css 以外的后缀再构建即可。
   ============================================================ */
/* 达人详情操作区：主次按钮等宽，编辑与记录入口单独成行。 */
html .phone.t5.tv .t5-sheet-box:has(.h5-detail-actions) {
  padding-bottom: max(24px, calc(env(safe-area-inset-bottom, 0px) + 12px));
}
html .phone.t5.tv .h5-detail-actions {
  margin-top: 20px;
  padding-top: 16px;
  border-top: 1px solid var(--t5-line);
}
html .phone.t5.tv .h5-detail-tools {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0 12px;
  margin-top: -12px;
  margin-bottom: 8px;
}
html .phone.t5.tv .h5-detail-edit { display: flex; flex-wrap: wrap; gap: 12px; }
html .phone.t5.tv .h5-detail-tool {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 3px;
  min-height: 44px;
  padding: 0 2px;
  border: 0;
  border-radius: 6px;
  background: transparent;
  box-shadow: none;
  color: var(--t5-sub);
  font-size: 13px;
  line-height: 1.4;
}
html .phone.t5.tv .h5-detail-history { margin-left: auto; }
html .phone.t5.tv .h5-detail-tool svg { width: 14px; height: 14px; }
html .phone.t5.tv .h5-detail-buttons {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: minmax(0, 1fr);
  gap: 10px;
}
html .phone.t5.tv .h5-detail-buttons > :is(a, button) {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  min-width: 0;
  min-height: 46px;
  padding: 11px 10px;
  border: 1px solid transparent;
  border-radius: 12px;
  background: var(--t5-accent-soft);
  box-shadow: none;
  color: var(--t5-accent);
  font-size: 14px;
  font-weight: 600;
  line-height: 1.5;
  text-align: center;
  text-decoration: none;
}
html .phone.t5.tv .h5-detail-buttons > .h5-detail-primary {
  background: var(--t5-accent);
  color: #fff;
}
html .phone.t5.tv .h5-detail-actions :is(a, button):active { opacity: .8; }
html .phone.t5.tv .h5-detail-actions :focus-visible,
html .phone.t5.tv .t5-sheet-head > button:focus-visible {
  outline: 2px solid var(--t5-accent);
  outline-offset: 3px;
}
html .phone.t5.tv .t5-sheet-head > button {
  flex-shrink: 0;
  min-width: 44px;
  min-height: 44px;
  padding: 8px;
  margin: -8px -8px -8px 8px;
}

html .phone.t5.tv {
  --t5-brand: #713f8c;
  --t5-bg: #f7f5f8;
  --t5-card: #ffffff;
  --t5-line: #ece6ef;
  --t5-ink: #1e1a22;
  --t5-sub: #6e6675;
  --t5-accent: #713f8c;
  --t5-accent-soft: #f2ebf6;
  --t5-grad: linear-gradient(0deg, #713f8c, #713f8c);
  --t5-warn: #b42318;
  --t5-warn-soft: #fbeae7;
  --t5-ok: #2f7d4f;
  --t5-ok-soft: #e8f2ec;
  --tv-r: 14px;
  --tv-shadow: none;
  --ink-amber: #8a5a0b;
  --ink-amber-soft: #f8efdc;
  --ink-hero: #3b2147;
  background: var(--t5-bg);
  color: var(--t5-ink);
}
html.in-mp body,
html.in-mp .main {
  background: #f7f5f8 !important;
}

/* 卡片：去阴影，改细边；圆角收一点 */
html .phone.t5.tv .hm-card,
html .phone.t5.tv .hm-hello,
html .phone.t5.tv .h5-card,
html .phone.t5.tv .t5-card,
html .phone.t5.tv .h5-acct:not(.bad),
html .phone.t5.tv .t5-pcard {
  box-shadow: none !important;
  border: 1px solid var(--t5-line);
  border-radius: var(--tv-r);
}
html .phone.t5.tv .hm-hello {
  background: #fff;
}

/* 头像、底栏、加号：纯墨蓝，不要渐变 */
html .phone.t5.tv .t5-avatar,
html .phone.t5.tv .t5-avatar.big {
  background: var(--t5-accent) !important;
  color: #fff;
}
html .phone.t5.tv .t5-nav button.active {
  color: var(--t5-accent);
}
html .phone.t5.tv .t5-nav .tv-navplus:not(.idle) {
  background: var(--t5-accent);
  box-shadow: none;
  border-radius: 12px;
}
html .phone.t5.tv .h5-pick-go.primary {
  background: var(--t5-accent);
  box-shadow: none;
}
html .phone.t5.tv .t5-track > i {
  background: var(--t5-accent);
}
html .phone.t5.tv .t5-chip.warn {
  color: var(--ink-amber);
  background: var(--ink-amber-soft);
}
html .phone.t5.tv .h5-mstep button:not([disabled]) {
  color: var(--t5-accent);
  background: var(--t5-accent-soft);
}
html .phone.t5.tv .tv-code span {
  background: var(--t5-accent-soft);
  color: var(--t5-accent);
}

/* 收益概览沿用统计页的白底分栏；颜色强调状态，金额与原口径不变。 */
html .phone.t5.tv .t5-hero.h5-wd,
html .phone.t5.tv .t5-hero.h5-wd.h5-ov {
  background:#fff !important; color:var(--t5-ink); border:1px solid var(--t5-line);
  border-radius:14px; box-shadow:none; padding:16px;
}
html .phone.t5.tv .t5-hero.h5-wd > small,
html .phone.t5.tv .h5-wd .h5-wd-note,
html .phone.t5.tv .h5-wd-kpis small { color:var(--t5-sub) !important; opacity:1; }
html .phone.t5.tv .t5-hero.h5-wd > strong { color:var(--t5-ink); }
html .phone.t5.tv .h5-wd-kpis { border-top-color:var(--t5-line) !important; }
html .phone.t5.tv .h5-wd-kpis b { color:var(--t5-ink); font-variant-numeric:tabular-nums; }
html .phone.t5.tv .h5-wd-kpis b.zero { color:var(--t5-sub); }
html .phone.t5.tv .h5-pend-btn:not([disabled]) {
  background: var(--t5-accent);
  color: #fff;
}
html .phone.t5.tv .h5-pend-btn[disabled] {
  background: #f2eef4;
  color: #9a91a1;
}

/* 首页「要做的事」：琥珀给快到期 */
html .phone.t5.tv .hm-todo-row.warn > i {
  background: var(--ink-amber);
}

/* ---- 首页本月投流任务：一个项目一行（10-12）---- */
html .phone.t5.tv .hm-h small {
  font-size: 12px;
  color: var(--t5-sub);
  font-weight: 400;
}
html .phone.t5.tv .hm-task {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 2px 0;
}
html .phone.t5.tv .hm-task + .hm-task {
  border-top: 1px solid var(--t5-line);
  padding-top: 12px;
}
html .phone.t5.tv .hm-task-main {
  flex: 1;
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 0;
  border: 0;
  background: none;
  text-align: left;
  font: inherit;
  color: inherit;
}
html .phone.t5.tv .hm-task-main > span:last-child {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 5px;
}
html .phone.t5.tv .hm-task-main b {
  font-size: 14.5px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
html .phone.t5.tv .hm-task-main small {
  font-size: 12px;
  color: var(--t5-sub);
}
html .phone.t5.tv .hm-task-main small.bad {
  color: var(--t5-warn);
}
html .phone.t5.tv .hm-seg {
  display: flex;
  gap: 3px;
}
html .phone.t5.tv .hm-seg i {
  flex: 1;
  height: 6px;
  border-radius: 3px;
  background: #ece6ef;
}
html .phone.t5.tv .hm-seg i.ok {
  background: var(--t5-accent);
}
html .phone.t5.tv .hm-seg i.wait {
  background: var(--t5-accent-soft);
  box-shadow: inset 0 0 0 1px var(--t5-accent);
}
html .phone.t5.tv .hm-seg i.bad {
  background: var(--t5-warn);
}
html .phone.t5.tv .hm-task-go {
  flex: none;
  border: 0;
  border-radius: 10px;
  padding: 8px 14px;
  background: var(--t5-accent);
  color: #fff;
  font: inherit;
  font-size: 13.5px;
  font-weight: 600;
}
html .phone.t5.tv .hm-task-done {
  flex: none;
  display: inline-flex;
  align-items: center;
  gap: 3px;
  font-style: normal;
  font-size: 13px;
  color: var(--t5-ok);
}
html .phone.t5.tv .hm-task-done svg {
  width: 14px;
  height: 14px;
  stroke: currentColor;
}

/* 「我的 · 战绩」四格能点（10-12）：点哪格看哪类明细；右上角一个小箭头提示能点 */
/* 月明细弹层里的筛选条 */
.h5-chips.h5-mf {
  display: flex;
  gap: 6px;
  overflow-x: auto;
  margin: 8px 0 4px;
  padding-bottom: 2px;
}
.h5-chips.h5-mf button {
  flex: none;
  border: 1px solid #ece6ef;
  background: #fff;
  color: #6e6675;
  border-radius: 999px;
  padding: 5px 12px;
  font: inherit;
  font-size: 12.5px;
}
.h5-chips.h5-mf button.on {
  background: #713f8c;
  border-color: #713f8c;
  color: #fff;
}
html .h5-chips.h5-mf button.on {
  background: #713f8c;
  border-color: #713f8c;
  color: #fff;
}
html .h5-part > em {
  font-style: normal;
}

/* 工作台项目卡收紧（10-12）：一行一个项目，和首页任务行同一套分段进度 */
html .phone.t5.tv .t5-pcard.pc2 {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 14px;
  margin-bottom: 8px;
}
html .phone.t5.tv .pc2-main {
  flex: 1;
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 0;
  border: 0;
  background: none;
  text-align: left;
  font: inherit;
  color: inherit;
}
html .phone.t5.tv .pc2-main > span:last-child {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
html .phone.t5.tv .pc2-main b {
  font-size: 14.5px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
html .phone.t5.tv .pc2-main small {
  font-size: 12px;
  color: var(--t5-sub);
}
html .phone.t5.tv .pc2-main small.bad {
  color: var(--t5-warn);
}
html .phone.t5.tv .hm-task-more {
  align-self: stretch;
  border-top: 1px solid var(--t5-line);
  padding: 10px 0 0;
  text-align: center;
  font-weight: 600;
}

/* 达人端打开的弹窗（交作品等）在手机外框外面，主按钮也用墨蓝，和页面一致 */
body:has(.phone.t5.tv) #adModal .primary,
body:has(.phone.t5.tv) #adModal button.primary {
  background: #713f8c;
  border-color: #713f8c;
  color: #fff;
}

/* 作品记录（10-12）：一条作品 = 品牌工作台作品表一行，字段同名同顺序 */
.h5-wr-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
html .phone.t5.tv .h5ad-work.wr {
  background: #fff;
  border: 1px solid var(--t5-line);
  border-radius: 14px;
  padding: 12px 14px;
}
html .phone.t5.tv .wr-kv {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 6px 12px;
  margin: 8px 0 6px;
}
html .phone.t5.tv .wr-kv > div {
  display: flex;
  gap: 6px;
  min-width: 0;
  font-size: 12.5px;
}
html .phone.t5.tv .wr-kv dt {
  flex: none;
  color: var(--t5-sub);
}
html .phone.t5.tv .wr-kv dd {
  margin: 0;
  min-width: 0;
  color: var(--t5-ink);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
html .phone.t5.tv .wr-url {
  margin: 0 0 4px;
  font-size: 12px;
  color: var(--t5-sub);
  font-family: ui-monospace, "SF Mono", Menlo, monospace;
  word-break: break-all;
}
html .phone.t5.tv .h5-ad-works:has(.h5-wr-list) {
  background: none;
  border: 0;
  box-shadow: none;
  padding: 0;
}
html .phone.t5.tv .h5-ad-works .h5-works-head {
  padding: 0 2px 8px;
}
html .phone.t5.tv .h5ad-work-a a {
  color: var(--t5-accent);
  text-decoration: none;
  font-weight: 600;
}
/* 弹窗不在 .phone 里面，拿不到上面的主色变量，会退回紫色兜底：给达人端的弹窗也定义一遍 */
html.in-mp .modal,
.main:has(.phone.t5.tv) .modal,
.main:has(.phone.t5.tv) #adModal {
  --t5-accent: #713f8c;
  --t5-accent-soft: #f2ebf6;
}
html.in-mp #adModal input,
.main:has(.phone.t5.tv) #adModal input {
  accent-color: #713f8c;
}

/* ============ 数据统计（10-12） ============ */
html .phone.t5.tv .st-head {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 16px;
  margin: 0 0 8px;
}
html .phone.t5.tv .st-head b {
  font-size: 16px;
  min-width: 96px;
  text-align: center;
  font-variant-numeric: tabular-nums;
}
html .phone.t5.tv .st-mstep {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  border: 1px solid var(--t5-line);
  background: #fff;
  color: var(--t5-accent);
  font-size: 18px;
  line-height: 1;
}
html .phone.t5.tv .st-mstep[disabled] {
  color: #cbc2d1;
}
html .phone.t5.tv .st-pf {
  margin: 0 0 10px;
}
html .phone.t5.tv .st-tiles {
  margin-bottom: 12px;
}
html .phone.t5.tv .st-card {
  background: #fff;
  border: 1px solid var(--t5-line);
  border-radius: 14px;
  padding: 14px;
  margin-bottom: 12px;
}
html .phone.t5.tv .st-h {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  margin-bottom: 12px;
}
html .phone.t5.tv .st-h b {
  font-size: 15px;
}
html .phone.t5.tv .st-h small,
html .phone.t5.tv .st-empty {
  font-size: 12px;
  color: var(--t5-sub);
}
html .phone.t5.tv .st-empty {
  margin: 4px 0;
}
html .phone.t5.tv .st-tips {
  background: var(--t5-accent-soft);
  border-color: transparent;
}
html .phone.t5.tv .st-tips > b {
  display: block;
  font-size: 13px;
  color: var(--t5-accent);
  margin-bottom: 6px;
}
html .phone.t5.tv .st-tips p {
  margin: 4px 0 0;
  font-size: 13.5px;
  line-height: 20px;
  color: var(--t5-ink);
}
html .phone.t5.tv .st-tips p b {
  color: var(--t5-accent);
}
html .phone.t5.tv .st-trow {
  display: grid;
  grid-template-columns: 72px 1fr auto;
  align-items: center;
  gap: 10px;
  padding: 6px 0;
}
html .phone.t5.tv .st-tlab {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
  color: var(--t5-ink);
}
html .phone.t5.tv .st-tlab i,
html .phone.t5.tv .st-legend i {
  width: 8px;
  height: 8px;
  border-radius: 2px;
  display: inline-block;
}
html .phone.t5.tv .st-tbar {
  height: 10px;
  border-radius: 5px;
  background: #f2eef4;
  overflow: hidden;
}
html .phone.t5.tv .st-tbar i {
  display: block;
  height: 100%;
  border-radius: 5px;
}
html .phone.t5.tv .st-tval {
  font-size: 12px;
  color: var(--t5-sub);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
html .phone.t5.tv .st-tval b {
  color: var(--t5-ink);
  font-size: 14px;
}
html .phone.t5.tv .st-legend {
  display: flex;
  gap: 14px;
  font-size: 12px;
  color: var(--t5-sub);
  margin: -4px 0 10px;
}
html .phone.t5.tv .st-legend span {
  display: inline-flex;
  align-items: center;
  gap: 5px;
}
html .phone.t5.tv .st-cols {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 8px;
  height: 150px;
  align-items: end;
}
html .phone.t5.tv .st-col {
  height: 100%;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  align-items: center;
  gap: 4px;
  border: 0;
  background: none;
  padding: 0;
  font: inherit;
  opacity: 0.55;
}
html .phone.t5.tv .st-col.on {
  opacity: 1;
}
html .phone.t5.tv .st-col em {
  font-style: normal;
  font-size: 12px;
  font-weight: 600;
  color: var(--t5-ink);
  font-variant-numeric: tabular-nums;
}
html .phone.t5.tv .st-stack {
  width: 22px;
  display: flex;
  flex-direction: column-reverse;
  gap: 2px;
}
html .phone.t5.tv .st-stack i {
  display: block;
  min-height: 3px;
}
html .phone.t5.tv .st-stack i:last-child {
  border-radius: 4px 4px 0 0;
}
html .phone.t5.tv .st-col small {
  font-size: 11.5px;
  color: var(--t5-sub);
}
html .phone.t5.tv .st-col.on small {
  color: var(--t5-accent);
  font-weight: 700;
}
html .phone.t5.tv .st-proj {
  width: 100%;
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 0;
  border: 0;
  border-top: 1px solid var(--t5-line);
  background: none;
  text-align: left;
  font: inherit;
  color: inherit;
}
html .phone.t5.tv .st-proj:first-of-type {
  border-top: 0;
  padding-top: 0;
}
html .phone.t5.tv .st-proj > span {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 5px;
}
html .phone.t5.tv .st-proj b {
  font-size: 14px;
}
html .phone.t5.tv .st-proj small {
  font-size: 12px;
  color: var(--t5-sub);
}
html .phone.t5.tv .st-proj > svg {
  width: 16px;
  height: 16px;
  stroke: #b8aebf;
  flex: none;
}
/* 「我的」里的款项入口 */
html .phone.t5.tv .h5-money-entry .t5-row > span {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
html .phone.t5.tv .h5-money-entry .t5-row > span b {
  font-size: 15px;
}
html .phone.t5.tv .h5-money-entry .t5-row > span small {
  font-size: 12px;
  color: var(--t5-sub);
  font-weight: 400;
}
html .phone.t5.tv .h5-chips.h5-mf button.on {
  background: var(--t5-accent);
  border-color: var(--t5-accent);
  color: #fff;
}
html .phone.t5.tv .h5-chips.h5-mf button {
  border: 1px solid var(--t5-line);
  background: #fff;
  color: var(--t5-sub);
}

/* ============ LOGO：MONEY多多（10-12） ============ */
/* 电脑端侧栏：方标 + 字标；深色侧栏（761px 以上）用白字标，窄屏浅色顶栏用紫字标 */
html.pro img.brandmark-img {
  width: 32px;
  height: 32px;
  border-radius: 9px;
  background: none;
  box-shadow: none;
  object-fit: cover;
  flex: none;
}
html.pro .brand-text {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 2px;
}
html.pro .brand-text .brand-logo {
  height: 15px;
  width: auto;
  display: block;
}
html.pro .brand-text small {
  font-size: 11px;
  letter-spacing: 1px;
}
html.pro .brand-text .bl-dark {
  display: none;
}
@media (min-width: 761px) {
  html.pro .brand-text .bl-dark {
    display: block;
  }
  html.pro .brand-text .bl-light {
    display: none;
  }
}
/* 首屏 / 登录页的品牌字标 */
.be-word.money {
  height: 26px;
  width: auto;
}
@media (max-width: 767px) {
  .be-word.money {
    height: 21px;
  }
}
/* 小程序首页横幅左上角 */
html .phone.t5.tv .bh-brand .bh-logo {
  width: auto;
  height: 18px;
  filter: drop-shadow(0 1px 3px rgba(0, 0, 0, 0.25));
}
html .phone.t5.tv .bh-slide.plain {
  background: linear-gradient(135deg, #8a55a6, #4d2a5f);
}
html .phone.t5.tv .hm-todo-row.go > i {
  background: var(--t5-accent);
}
html.in-mp .modal,
.main:has(.phone.t5.tv) .modal,
.main:has(.phone.t5.tv) #adModal {
  --t5-accent: #713f8c;
  --t5-accent-soft: #f2ebf6;
}
/* 结算进度条在手机里用品牌紫（原来跟电脑端是墨蓝） */
html .phone.t5.tv .sx-flow > span.on {
  background: var(--t5-accent-soft);
  color: var(--t5-accent);
}
html .phone.t5.tv .sx-flow > span.now {
  background: var(--t5-accent);
  color: #fff;
}

/* ---- 数据统计 · 10-12 晚改版：顶部深紫大卡 + 可视化的「看出来的」 ---- */
html .phone.t5.tv .st-hero {
  position: relative;
  display: grid;
  grid-template-columns: 1fr;
  gap: 4px 12px;
  padding: 18px 18px 14px;
  margin-bottom: 18px;
  border-radius: 18px;
  color: #fff;
  background:
    radial-gradient(120% 90% at 100% 0%, rgba(233, 196, 106, 0.18), transparent 55%),
    radial-gradient(90% 80% at 0% 100%, rgba(160, 104, 196, 0.35), transparent 60%),
    linear-gradient(150deg, #4d2a5f, #2e1839);
  overflow: hidden;
}
html .phone.t5.tv .st-hero button {
  border: 0;
  background: none;
  color: inherit;
  font: inherit;
  text-align: left;
  padding: 0;
}
html .phone.t5.tv .st-hero-main small,
html .phone.t5.tv .st-hero-kpis small,
html .phone.t5.tv .st-ring small {
  font-size: 12px;
  color: rgba(255, 255, 255, 0.66);
  display: block;
}
html .phone.t5.tv .st-hero-main b {
  display: block;
  font-size: 46px;
  line-height: 1.05;
  font-weight: 700;
  letter-spacing: -1px;
  font-variant-numeric: tabular-nums;
  margin-top: 4px;
}
html .phone.t5.tv .st-hero-main b i {
  font-style: normal;
  font-size: 15px;
  font-weight: 500;
  margin-left: 4px;
  color: rgba(255, 255, 255, 0.7);
  letter-spacing: 0;
}
html .phone.t5.tv .st-hero-main span {
  font-size: 12px;
  color: rgba(255, 255, 255, 0.55);
}
html .phone.t5.tv .st-ring {
  position: relative;
  width: 92px;
  height: 92px;
  align-self: center;
}
html .phone.t5.tv .st-ring svg {
  width: 100%;
  height: 100%;
  transform: rotate(-90deg);
}
html .phone.t5.tv .st-ring circle {
  fill: none;
  stroke-width: 6;
}
html .phone.t5.tv .st-ring .trk {
  stroke: rgba(255, 255, 255, 0.14);
}
html .phone.t5.tv .st-ring .val {
  stroke: #e9c46a;
  stroke-linecap: round;
  transition: stroke-dasharray 0.6s ease;
}
html .phone.t5.tv .st-ring > span {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}
html .phone.t5.tv .st-ring > span b {
  font-size: 20px;
  font-variant-numeric: tabular-nums;
}
html .phone.t5.tv .st-ring > span b i {
  font-style: normal;
  font-size: 11px;
}
html .phone.t5.tv .st-ring > span small {
  font-size: 10.5px;
}
html .phone.t5.tv .st-hero-kpis {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px solid rgba(255, 255, 255, 0.14);
}
html .phone.t5.tv .st-hero-kpis button + button {
  padding-left: 12px;
  border-left: 1px solid rgba(255, 255, 255, 0.12);
}
html .phone.t5.tv .st-hero-kpis b {
  display: block;
  font-size: 18px;
  margin-top: 2px;
  font-variant-numeric: tabular-nums;
}
html .phone.t5.tv .st-hero-kpis b i {
  font-style: normal;
  font-size: 12px;
  color: rgba(255, 255, 255, 0.62);
  margin-left: 2px;
}
html .phone.t5.tv .st-sec-t {
  margin: 4px 2px 10px;
}
html .phone.t5.tv .st-sec-t b {
  font-size: 16px;
}
html .phone.t5.tv .st-insights {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-bottom: 18px;
}
html .phone.t5.tv .st-ins {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 16px;
  border-radius: 16px;
  background: #fff;
  border: 1px solid var(--t5-line);
}
html .phone.t5.tv .st-ins-t {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 3px;
}
html .phone.t5.tv .st-ins-t small {
  font-size: 11.5px;
  letter-spacing: 1px;
  color: var(--t5-accent);
  font-weight: 600;
}
html .phone.t5.tv .st-ins-t b {
  font-size: 17px;
  font-weight: 700;
}
html .phone.t5.tv .st-ins-t b em {
  font-style: normal;
  color: var(--t5-accent);
  font-size: 22px;
  font-variant-numeric: tabular-nums;
}
html .phone.t5.tv .st-ins-t b em.up {
  color: var(--t5-ok);
}
html .phone.t5.tv .st-ins-t b em.down {
  color: var(--ink-amber);
}
html .phone.t5.tv .st-ins-t span {
  font-size: 12px;
  color: var(--t5-sub);
  line-height: 17px;
}
/* 节奏：时间 vs 任务两条细进度 */
html .phone.t5.tv .st-pace {
  width: 118px;
  flex: none;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
html .phone.t5.tv .st-pace > div {
  display: grid;
  grid-template-columns: 26px 1fr 30px;
  align-items: center;
  gap: 6px;
}
html .phone.t5.tv .st-pace small {
  font-size: 11px;
  color: var(--t5-sub);
}
html .phone.t5.tv .st-pace i {
  height: 6px;
  border-radius: 3px;
  background: #f0eaf3;
  overflow: hidden;
}
html .phone.t5.tv .st-pace u {
  display: block;
  height: 100%;
  border-radius: 3px;
  background: #c8bccf;
}
html .phone.t5.tv .st-pace u.ok {
  background: var(--t5-accent);
}
html .phone.t5.tv .st-pace u.lag {
  background: var(--ink-amber);
}
html .phone.t5.tv .st-pace b {
  font-size: 11.5px;
  text-align: right;
  font-variant-numeric: tabular-nums;
}
/* 各类型投流率：三根小柱 */
html .phone.t5.tv .st-rates {
  flex: none;
  display: flex;
  gap: 8px;
  align-items: flex-end;
}
html .phone.t5.tv .st-rates > div {
  width: 30px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 3px;
  opacity: 0.55;
}
html .phone.t5.tv .st-rates > div.on {
  opacity: 1;
}
html .phone.t5.tv .st-rates i {
  width: 14px;
  height: 46px;
  border-radius: 4px;
  background: #f2eef4;
  display: flex;
  align-items: flex-end;
  overflow: hidden;
}
html .phone.t5.tv .st-rates u {
  display: block;
  width: 100%;
  border-radius: 4px 4px 0 0;
}
html .phone.t5.tv .st-rates small {
  font-size: 10.5px;
  font-weight: 600;
  color: var(--t5-ink);
  font-variant-numeric: tabular-nums;
}
html .phone.t5.tv .st-rates em {
  font-style: normal;
  font-size: 10px;
  color: var(--t5-sub);
  white-space: nowrap;
}
/* 作品类型：浅色 = 已交，深色 = 已投流 */
html .phone.t5.tv .st-tbar {
  position: relative;
}
html .phone.t5.tv .st-tbar i {
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
}
html .phone.t5.tv .st-tbar i.all {
  background: var(--c);
  opacity: 0.28;
}
html .phone.t5.tv .st-tbar i.pro {
  background: var(--c);
}
html .phone.t5.tv .st-key {
  display: inline-block;
  width: 10px;
  height: 6px;
  border-radius: 2px;
  margin: 0 3px 0 6px;
  vertical-align: middle;
  background: var(--t5-accent);
}
html .phone.t5.tv .st-key.all {
  opacity: 0.28;
}

/* ---- 穿透（10-12）：收益大卡、类型行、看出来的、寄样行都能点 ---- */
html .phone.t5.tv .h5-wd-total,
html .phone.t5.tv .h5-wd-kpis button {
  appearance: none;
  border: 0;
  background: none;
  color: inherit;
  font: inherit;
  text-align: left;
  padding: 0;
  margin: 0;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
html .phone.t5.tv .h5-wd-total {
  display: flex;
  flex-direction: column;
  gap: 4px;
  width: 100%;
}
html .phone.t5.tv .h5-wd-total small {
  font-size: 12.5px;
  color: var(--t5-sub);
}
html .phone.t5.tv .h5-wd-total strong {
  font-size: 28px;
  line-height: 36px;
  font-weight: 600;
  color: var(--t5-ink);
  font-variant-numeric: tabular-nums;
}
html .phone.t5.tv .h5-wd-kpis button {
  display: flex;
  flex-direction: column;
  gap: 2px;
  border-radius: 8px;
  padding: 4px 6px;
  margin: -4px -6px;
}
html .phone.t5.tv .h5-wd-kpis button small::after {
  content: " ›";
  opacity: 0.7;
}
html .phone.t5.tv .h5-wd-total:active,
html .phone.t5.tv .h5-wd-kpis button:active {
  background: var(--t5-accent-soft);
}
html .phone.t5.tv button.st-trow {
  appearance: none;
  width: 100%;
  border: 0;
  background: none;
  font: inherit;
  color: inherit;
  text-align: left;
  cursor: pointer;
  border-radius: 8px;
  -webkit-tap-highlight-color: transparent;
}
html .phone.t5.tv button.st-trow:active,
html .phone.t5.tv .st-ins[role="button"]:active {
  background: var(--t5-accent-soft);
}
html .phone.t5.tv .st-ins[role="button"],
html .phone.t5.tv .st-rates [role="button"],
html .phone.t5.tv .h5-cd-main[role="button"] {
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
html .phone.t5.tv .h5-mf-only {
  display: flex;
  align-items: center;
  gap: 6px;
  margin: 0 0 8px;
  padding: 8px 10px;
  border-radius: 10px;
  background: var(--t5-accent-soft);
  font-size: 13px;
  color: var(--t5-ink);
}
html .phone.t5.tv .h5-mf-only b {
  color: var(--t5-accent);
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
html .phone.t5.tv .h5-mf-only button,
.h5-mf-only button {
  border: 0;
  background: none;
  font: inherit;
  font-size: 12.5px;
  color: var(--t5-accent, #713f8c);
  padding: 0;
  cursor: pointer;
}
.h5-mf-only {
  display: flex;
  align-items: center;
  gap: 6px;
  margin: 0 0 8px;
  padding: 8px 10px;
  border-radius: 10px;
  background: #f1eaf4;
  font-size: 13px;
}
.h5-mf-only b {
  color: #713f8c;
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
html .phone.t5.tv .h5-copy-hint,
.h5-copy-hint {
  margin-left: 6px;
  font-size: 11.5px;
  font-style: normal;
  color: var(--t5-accent, #713f8c);
}

/* 10-19 小程序逐页精修：沿用详情操作区的尺寸与紫色层级。 */
html .phone.t5.tv :is(.t5-back, .t5-back-link) {
  min-width: 44px;
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
html .phone.t5.tv .t5-bar-top { padding-top: 14px; padding-bottom: 10px; }
html .phone.t5.tv .t5-bar-top > .t5-link { min-height: 44px; }
html .phone.t5.tv #hp-work .t5-seg { margin: 8px 0 12px; background: #eee8f1; }
html .phone.t5.tv #hp-work .t5-seg button { min-height: 44px; }
html .phone.t5.tv #hp-work .t5-seg button.on { color: var(--t5-accent); }
html .phone.t5.tv .h5-chips button,
html .phone.t5.tv .h5-seg button,
html .phone.t5.tv .h5-mstep-sheet button { min-height: 44px; height: auto; border-radius: 10px; }
html .phone.t5.tv .h5-chips button.on { background: var(--t5-accent); border-color: var(--t5-accent); color: #fff; }
html .phone.t5.tv .h5-seg { background: #eee8f1; }
html .phone.t5.tv .h5-seg button.on { color: var(--t5-accent); }
/* 详情卡已有内边距，去掉旧模板叠加的子元素外边距，避免列表箭头被裁切。 */
html .phone.t5.tv .h5ad-sec > *:not(.h5ad-h) { margin-left: 0; margin-right: 0; }
html .phone.t5.tv .h5ad-sec > .h5ad-q { width: 100%; }
html .phone.t5.tv .h5ad-sec > .t5-list { padding-left: 0; padding-right: 0; }
html .phone.t5.tv :is(.collab-filter, .h5ad-fs, .t5-filters) { gap: 8px; margin: 10px 0; }
html .phone.t5.tv :is(.collab-filter, .h5ad-fs, .t5-filters) > :is(input, select, button),
html .phone.t5.tv .h5ad-q {
  min-width: 0;
  min-height: 44px;
  height: 44px;
  box-sizing: border-box;
  padding: 9px 10px;
  border: 1px solid var(--t5-line);
  border-radius: 10px;
  background: #fff;
  color: var(--t5-ink);
  font: inherit;
  font-size: 13px;
}
html .phone.t5.tv .collab-filter > button {
  flex-shrink: 0;
  border-color: transparent;
  background: var(--t5-accent-soft);
  color: var(--t5-accent);
}
html .phone.t5.tv :is(.h5ad-h .tiny, .sb-export, .h5-exp-btn) {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  height: auto;
  padding: 8px 12px;
  border: 0;
  border-radius: 10px;
  background: var(--t5-accent-soft);
  color: var(--t5-accent);
  font-size: 13px;
  font-weight: 500;
  line-height: 1.5;
}
html .phone.t5.tv .h5-hist-mh { flex-wrap: wrap; gap: 10px; }
html .phone.t5.tv .h5-pend-btn { min-height: 44px; border-radius: 12px; }
html .phone.t5.tv .h5-acct { gap: 14px; }
html .phone.t5.tv .h5-acct > span { min-width: 0; }
html .phone.t5.tv .h5-acct.bad > i { flex-shrink: 0; border-radius: 10px; padding: 12px; }

/* 长资料分行，不与标题、箭头抢同一行。 */
html .phone.t5.tv .h5-money-entry .t5-row { display: block; padding: 14px 0; }
html .phone.t5.tv .h5-money-entry .t5-row > span { gap: 5px; }
html .phone.t5.tv .h5-money-entry .t5-row > em {
  display: flex;
  justify-content: space-between;
  margin: 12px 0 0;
  padding-top: 12px;
  border-top: 1px solid var(--t5-line);
  text-align: left;
  line-height: 1.5;
}
html .phone.t5.tv :is(.t5-addr.t5-kvrow, .h5-bank-row) {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 6px;
  padding: 14px 24px 14px 0;
}
html .phone.t5.tv :is(.t5-addr.t5-kvrow, .h5-bank-row) > em {
  display: block;
  width: 100%;
  margin: 0;
  white-space: normal;
  max-width: none;
  text-align: left;
  line-height: 1.6;
  overflow-wrap: anywhere;
}
html .phone.t5.tv .t5-addr.t5-kvrow em > b { font-weight: 500; }
html .phone.t5.tv .t5-addr.t5-kvrow em > small { display: block; margin-top: 2px; }
html .phone.t5.tv :is(.t5-addr.t5-kvrow, .h5-bank-row) svg {
  position: absolute;
  right: 0;
  top: 50%;
  width: 16px;
  height: 16px;
  transform: translateY(-50%);
}
html .phone.t5.tv .tv-me-t { min-width: 0; }
html .phone.t5.tv .tv-me-t > small { overflow-wrap: anywhere; }
html .phone.t5.tv .tv-code { min-height: 44px; flex-wrap: wrap; row-gap: 4px; }
html .phone.t5.tv #hp-msg .h5section { margin-top: 0; padding-top: 0; }
html .phone.t5.tv #hp-msg .msg-row { display: grid; grid-template-columns: 8px minmax(0, 1fr); gap: 5px 10px; padding: 16px 0; }
html .phone.t5.tv #hp-msg .msg-dot { grid-column: 1; grid-row: 1; margin-top: 6px; }
html .phone.t5.tv #hp-msg .msg-main { grid-column: 2; grid-row: 1; }
html .phone.t5.tv #hp-msg .msg-time { grid-column: 2; grid-row: 2; text-align: left; font-size: 11px; }
html .phone.t5.tv #hp-msg .msg-main small { line-height: 1.7; }

/* 表单统一为一层滚动，长字段标签放在输入框上方。 */
html .phone.t5.tv .t5-sheet-box { padding-bottom: max(24px, calc(env(safe-area-inset-bottom, 0px) + 12px)); }
html .phone.t5.tv .t5-sheet-head { margin-bottom: 16px; }
html .phone.t5.tv .h5ad-sheet-sub { line-height: 1.6; margin-top: 4px; }
html .phone.t5.tv .h5-addrs { max-height: none; overflow: visible; padding: 0; gap: 12px; }
html .phone.t5.tv .t5-sheet-box:has(.h5-addrs) { padding-top: 0; }
html .phone.t5.tv .t5-sheet-box:has(.h5-addrs) > .t5-sheet-head { position: sticky; top: 0; z-index: 2; padding: 20px 0 16px; margin-bottom: 0; background: #fff; }
html .phone.t5.tv .h5-addr-card { padding: 14px; gap: 12px; }
html .phone.t5.tv .h5-addr-card.on { border-color: #d8c5e2; }
html .phone.t5.tv .h5-addr-top { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; }
html .phone.t5.tv .h5-addr-top > label { min-height: 36px; }
html .phone.t5.tv .h5-addr-top .h5-addr-label { grid-column: 1 / -1; grid-row: 2; padding: 10px; }
html .phone.t5.tv .h5-addr-top > .t5-link { grid-column: 2; grid-row: 1; min-height: 44px; padding: 0 4px; }
html .phone.t5.tv .h5-addr-card :is(input:not([type="radio"]), select, textarea) {
  min-height: 44px;
  border-color: var(--t5-line);
  border-radius: 10px;
  font-size: 14px;
  color: var(--t5-ink);
}
html .phone.t5.tv .h5-addr-card textarea { line-height: 1.6; resize: vertical; }
html .phone.t5.tv :is(.h5-addr-card, .h5-pick, .h5-agree) input:is([type="radio"], [type="checkbox"]) { accent-color: var(--t5-accent); }
html .phone.t5.tv .h5-form-row:has(> input) { grid-template-columns: minmax(0, 1fr); gap: 6px; }
html .phone.t5.tv .h5-form-row > span { line-height: 1.5; }
html .phone.t5.tv .h5-form-row > b { min-width: 0; padding: 5px 0; overflow-wrap: anywhere; }
html .phone.t5.tv .h5-form-row:has(> input) + .h5-form-row:has(> b) { border-top: 1px solid var(--t5-line); padding-top: 12px; }
html .phone.t5.tv .h5-agree { align-items: flex-start; gap: 8px; margin: 16px 0 0; line-height: 1.7; }
html .phone.t5.tv .h5-agree input { flex-shrink: 0; margin-top: 3px; }
html .phone.t5.tv :is(.h5-pick-go, .h5-addr-add) { min-height: 46px; padding: 11px 14px; border-radius: 12px; font-size: 14px; line-height: 1.5; }
html .phone.t5.tv .h5-pick-go { margin-top: 16px; }
html .phone.t5.tv .h5-addr-add { margin: 12px 0 0; border-color: transparent; background: var(--t5-accent-soft); color: var(--t5-accent); }
html .phone.t5.tv .h5-addr-card :is(input, select, textarea):focus { outline: 2px solid var(--t5-accent); outline-offset: 1px; }

/* 提交作品弹窗复用主次按钮，触控区与底部抽屉一致。 */
body:has(.phone.t5.tv) #adModal .dialog { border-radius: 18px; }
body:has(.phone.t5.tv) #adModal .dialog-head { padding: 16px; }
body:has(.phone.t5.tv) #adModal .dialog-head > button { min-width: 44px; min-height: 44px; margin-right: -8px; }
body:has(.phone.t5.tv) #adModal .dialog-body { padding: 16px; }
body:has(.phone.t5.tv) #adModal .field { margin-bottom: 0; }
body:has(.phone.t5.tv) #adModal .field > :is(input, select, textarea) { min-height: 44px; border-radius: 10px; border-color: #ece6ef; }
body:has(.phone.t5.tv) #adModal .field-hint { line-height: 1.65; }
body:has(.phone.t5.tv) #adModal .dialog-foot { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); gap: 10px; padding: 16px; }
body:has(.phone.t5.tv) #adModal .dialog-foot > .grow { display: none; }
body:has(.phone.t5.tv) #adModal .dialog-foot > button { min-height: 46px; padding: 11px 10px; border: 0; border-radius: 12px; background: #f2ebf6; color: #713f8c; font-size: 14px; font-weight: 600; }
body:has(.phone.t5.tv) #adModal .dialog-foot > .primary { background: #713f8c; color: #fff; }
@media (max-width: 360px) {
  html .phone.t5.tv .h5-acct { flex-wrap: wrap; }
  html .phone.t5.tv .h5-acct > span { flex-basis: 100%; }
  html .phone.t5.tv .h5-acct > i { margin-left: auto; }
  html .phone.t5.tv .h5-hist-mh > span { flex-basis: 100%; }
  html .phone.t5.tv .h5-wd-kpis small { min-height: 34px; line-height: 17px; }
}

/* 空列表保留简短结果提示，附属空内容由渲染时隐藏。 */
html .phone.t5.tv .h5-empty-compact { margin: 20px 0; padding: 0 16px; color: var(--muted); font-size: 13px; line-height: 1.6; text-align: center; }
html .phone.t5.tv .h5-hist-tip summary { cursor: pointer; font-weight: 600; min-height: 24px; line-height: 24px; }

/* 10-20：将统计原型的阅读层级推广到首页、工作台、我的、收益及详情。 */
html .phone.t5.tv { --tv-r:14px; }
html .phone.t5.tv .t5-bar-top { padding:10px 0 8px; margin-bottom:8px; }
html .phone.t5.tv .t5-bar-top > b { font-size:22px; font-weight:650; }
html .phone.t5.tv .hm-hello { border:0; background:transparent; padding:2px 0; gap:10px; }
html .phone.t5.tv .hm-hello .t5-avatar { width:34px; height:34px; font-size:17px; }
html .phone.t5.tv .hm-hello b { font-size:15px; font-weight:600; }
html .phone.t5.tv .hm-card { padding:14px 16px; gap:6px; }
html .phone.t5.tv .hm-h { flex-wrap:wrap; gap:4px 8px; }
html .phone.t5.tv .hm-h > b { font-size:16px; font-weight:600; }
html .phone.t5.tv .hm-todo-row { min-height:48px; padding:8px 0; gap:8px; }
html .phone.t5.tv .hm-todo-row > i { width:6px; height:6px; }
html .phone.t5.tv .hm-todo-row b { font-weight:500; }
html .phone.t5.tv .hm-task-main { min-height:44px; }
html .phone.t5.tv .hm-task-go { min-height:44px; font-size:13px; padding:10px 12px; border-radius:10px; }
html .phone.t5.tv #hp-work .t5-seg { background:transparent; border-bottom:1px solid var(--t5-line); border-radius:0; padding:0; margin:0 0 12px; gap:12px; }
html .phone.t5.tv #hp-work .t5-seg button { border-radius:0; border:0; border-bottom:2px solid transparent; background:transparent; box-shadow:none; padding:10px 4px; color:var(--t5-sub); font-size:14px; }
html .phone.t5.tv #hp-work .t5-seg button.on { color:var(--t5-accent); border-bottom-color:var(--t5-accent); font-weight:600; }
html .phone.t5.tv .pc2-main { align-items:flex-start; min-height:44px; }
html .phone.t5.tv .pc2-main b { white-space:normal; line-height:1.5; overflow-wrap:anywhere; }
html .phone.t5.tv .pc2-main > span:last-child { gap:6px; }
html .phone.t5.tv .t5-pcard.pc2 { align-items:flex-start; gap:12px; padding:14px; }
html .phone.t5.tv .t5-pcard.pc2 .hm-task-go { flex:none; align-self:center; }
html .phone.t5.tv :is(.h5-card,.t5-card,.h5ad-sec) { margin-bottom:12px; }
html .phone.t5.tv .h5-card { padding:16px; }
html .phone.t5.tv :is(.h5-card-h,.h5ad-h) { gap:8px; margin-bottom:12px; }
html .phone.t5.tv :is(.h5-card-h,.h5ad-h) > b { font-size:16px; font-weight:600; }
html .phone.t5.tv .h5ad-sec { padding:16px; }
html .phone.t5.tv .h5ad-title h3 { font-size:20px; line-height:1.4; overflow-wrap:anywhere; }
html .phone.t5.tv .h5-wd-kpis { margin-top:12px; padding-top:12px; gap:12px; }
html .phone.t5.tv .h5-wd-kpis button { min-width:0; min-height:48px; }
html .phone.t5.tv .h5-wd-kpis b { font-size:18px; line-height:1.4; overflow-wrap:anywhere; }
html .phone.t5.tv .h5-wd .h5-wd-note { font-size:12px; margin:12px 0 0; line-height:1.5; }
html .phone.t5.tv .h5-pend { padding:16px; }
html .phone.t5.tv .tv-me { padding-top:14px; padding-bottom:16px; gap:12px; }
html .phone.t5.tv .tv-me .t5-avatar.big { width:48px; height:48px; font-size:22px; }
html .phone.t5.tv .tv-me-t > b { font-size:20px; }
html .phone.t5.tv .h5-money-entry .t5-row { padding:12px 0; }
html .phone.t5.tv .h5-money-entry .t5-row > em { margin-top:8px; padding-top:8px; font-size:13px; }
html .phone.t5.tv .t5-list .t5-row { min-height:48px; }
html .phone.t5.tv #hp-msg .msg-row { padding:12px 0; }
html .phone.t5.tv .t5-sheet-head { margin-bottom:12px; }
html .phone.t5.tv .t5-sheet-head > b { font-size:18px; }
html .phone.t5.tv .h5-chips button.on { background:var(--t5-accent-soft); border-color:#dacbe3; color:var(--t5-accent); }
html .phone.t5.tv .h5-chips { gap:6px; }
html .phone.t5.tv :is(button,a,input,select,textarea):focus-visible { outline:2px solid var(--t5-accent); outline-offset:2px; }
@media(max-width:360px) {
 html .phone.t5.tv .t5-pcard.pc2 { flex-wrap:wrap; }
 html .phone.t5.tv .t5-pcard.pc2 .pc2-main { flex-basis:100%; }
 html .phone.t5.tv .t5-pcard.pc2 > .hm-task-go,
 html .phone.t5.tv .t5-pcard.pc2 > .hm-task-done { margin-left:auto; }
 html .phone.t5.tv .h5-wd-kpis { gap:8px; }
 html .phone.t5.tv .h5-wd-kpis b { font-size:16px; }
}


/* ===== web/src/css/72-talent-settlement.css ===== */
/* 达人结算配置：保持单列，名称、状态与开关在同一行。 */
.talent-settle-list { display: grid; gap: 10px; }
.talent-settle-item { border: 1px solid var(--line, #e5e7eb); border-radius: 12px; padding: 14px 16px; background: #fafaf9; }
.talent-settle-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; cursor: pointer; }
.talent-settle-head span { display: flex; align-items: center; gap: 12px; }
.talent-settle-head b { font-size: 14px; }
.talent-settle-head small { color: #737773; font-size: 12px; }
.talent-settle-head input[role=switch] { appearance: none; width: 38px; height: 22px; min-height: 22px; border-radius: 16px; background: #d6d9d5; border: 0; position: relative; cursor: pointer; padding: 0; flex-shrink: 0; }
.talent-settle-head input[role=switch]::after { content: ''; position: absolute; width: 16px; height: 16px; left: 3px; top: 3px; border-radius: 50%; background: white; transition: transform .15s; }
.talent-settle-head input[role=switch]:checked { background: #526c65; }
.talent-settle-head input[role=switch]:checked::after { transform: translateX(16px); }
.talent-settle-head input:focus-visible { outline: 2px solid #526c65; outline-offset: 3px; }


/* ===== web/src/css/73-crm-blue.css ===== */
/* 2026-10-15 网页参考：Money多多 CRM。达人手机端继续使用自己的主题。 */
html.pro:has(.app-shell), html.pro:has(.side) {
  --pro-bg:#eff3f6; --pro-bg-sunk:#f5f7fa; --pro-hover:#f5f9ff;
  --pro-line:#e3e8ee; --pro-line-soft:#edf0f4; --pro-line-strong:#cbd4df;
  --pro-ink:#252c34; --pro-ink-2:#39424e; --pro-muted:#626e7c; --pro-faint:#738092;
  --pro-clay:#087ef0; --pro-clay-hover:#0669cb; --pro-clay-ink:#0874da;
  --pro-clay-tint:#e7f3ff; --pro-clay-tint-2:#d5eaff;
  --blue2:#4099f0; --purple:#0669cb; --pink:#9ecaf4;
}
html.pro .side {background:#fff; border-right:1px solid #e3e8ee;}
html.pro .side .brand {color:#252c34; font-weight:700;}
html.pro .side .nav button {color:#39424e; font-size:14px; padding:11px 12px;}
html.pro .side .nav button.active {color:#087ef0; background:#e7f3ff; box-shadow:inset 3px 0 #087ef0;}
html.pro .side .nav button.active .ico {color:#087ef0;}
html.pro .side .nav button.nav-group {color:#657384; font-size:12px; padding-top:17px;}
html.pro .top {background:#373f4e; color:#fff; border-bottom:0; min-height:70px;}
html.pro .top :is(.crumb,.crumb b,.who b,.role-chip,.role-switch) {color:#fff;}
html.pro .top :is(.role-chip,.role-switch,.ghost,.top-bell) {background:#454e5e; color:#edf3fa; border-color:#667184;}
html.pro .top input {background:#454e5e; color:#fff; border-color:#667184;}
html.pro .top input::placeholder {color:#d1dae6;}
html.pro .top .gs-result {color:#252c34;}
html.pro .content {padding-top:24px;}
html.pro .content :is(h1,h2,h3) {color:#252c34; font-weight:650;}
html.pro .content h1 {font-size:25px; letter-spacing:0;}
html.pro .content :is(.card,.ad-card,.ad-kpis,.order-stats) {border-color:#e3e8ee; box-shadow:none; border-radius:12px;}
html.pro .content :is(th,.table-tools h3) {color:#414d5b; font-weight:600;}
html.pro .content td {color:#303944;}
html.pro .content :is(.c-num,.num,.money) {font-variant-numeric:tabular-nums;}
html.pro .content .order-stats button b {color:#252c34; font-weight:650;}
.order-amount-summary {display:flex;align-items:baseline;gap:16px;padding:19px 24px;margin:0 0 16px;background:white;border-radius:12px;border:1px solid #e3e8ee;}
.order-amount-summary span {font-size:14px;color:#4c5969;font-weight:600;}
.order-amount-summary strong {font-size:29px;line-height:1.3;color:#252c34;font-weight:650;font-variant-numeric:tabular-nums;}
.order-amount-summary small {margin-left:auto;color:#626e7c;}
.client-wait {min-height:100vh;background:#eff3f6;display:grid;place-items:center;padding:24px;}
.client-wait .card {padding:40px;max-width:640px;}
.client-wait p {line-height:1.8;}
.client-wait button + button {margin-left:12px;}
.access-eyebrow {color:#087ef0;font-size:13px;}
.access-modal .dialog {width:min(1060px,95vw);max-height:90vh;overflow:auto;}
.access-modal .dialog-body {padding:20px;}
.access-modal select,.access-modal input {max-width:210px;}
.access-modal .access-account {padding:18px 0;border-bottom:1px solid #e3e8ee;}
.access-account header {display:flex;align-items:center;gap:12px;margin-bottom:12px;}
.access-account .access-projects {display:flex;flex-wrap:wrap;gap:12px;margin-top:12px;}
.access-account label {display:flex;align-items:center;gap:5px;}
.sms-code-row {display:flex;gap:8px;align-items:center;}
.sms-code-row input {min-width:0;flex:1;}
.sms-code-row button {white-space:nowrap;}
.login-form .sms-note {color:#626e7c;font-size:12px;line-height:1.6;}
[hidden] {display:none !important;}
@media(max-width:900px) {
  .order-amount-summary {flex-wrap:wrap;gap:10px;padding:16px;}
  .order-amount-summary small {margin-left:0;}
}
html.pro .top .crumb :is(strong,#title) {color:#fff;}
html.pro .top .crumb :is(.crumb-grp,.crumb-sep) {color:#d4dfed;}
html.pro .top button.primary {background:#087ef0;border-color:#087ef0;color:#fff;}
html.pro .top button.primary:hover {background:#0669cb;}

/* 列表与客户开通流程：参考 CRM 的浅灰表头、紧凑工具栏与清晰分区。 */
html.pro .content table thead th {background:#f5f6f8;color:#303640;font-weight:650;border-bottom:1px solid #dce2e9;}
html.pro .content table tbody tr:hover td {background:#f3f8ff;}
html.pro .content .ad-filterbar {padding:14px 16px;background:#fff;border:1px solid #e3e8ee;border-radius:8px;gap:10px;}
html.pro .content :is(.card,.ad-card,.ad-kpis,.order-stats) {border-radius:8px;}
html.pro .content :is(button,input,select) {border-radius:6px;}
.access-modal .dialog {background:#f4f6f9;border:1px solid #dce2e9;}
.access-modal .dialog-head {position:sticky;top:0;background:white;z-index:2;border-bottom:1px solid #e3e8ee;}
.access-tools {display:flex;align-items:center;gap:16px;margin:16px 0;}
.access-modal .access-tools input {width:340px;max-width:100%;background:white;}
.access-tools span {font-size:13px;color:#526071;white-space:nowrap;}
.access-modal .access-account {padding:18px 20px;margin-bottom:12px;background:white;border:1px solid #e3e8ee;border-radius:8px;}
.access-account header {flex-wrap:wrap;color:#303640;font-size:13px;}
.access-account header b {font-size:16px;}
.access-status {padding:3px 8px;border-radius:4px;font-size:12px;}
.access-status.pending {background:#e7f3ff;color:#0874da;}
.access-status.approved {background:#eef3f0;color:#3c6650;}
.access-project-heading {margin-top:16px;padding-top:14px;border-top:1px solid #edf0f4;font-weight:600;font-size:13px;}
.access-project-heading small {margin-left:8px;font-weight:400;color:#657384;}
.access-account .access-projects label {padding:10px 12px;border:1px solid #e3e8ee;border-radius:6px;background:#fafbfd;}
.access-account .access-projects label:has(input:checked) {border-color:#94c8ff;background:#eef7ff;}
.access-steps {list-style:none;padding:0;margin:28px 0;display:flex;gap:8px;}
.access-steps li {flex:1;border-top:3px solid #dce2e9;padding-top:10px;color:#738092;font-size:13px;}
.access-steps .done {color:#485a6d;border-color:#a7cdf3;}
.access-steps .current {color:#0874da;border-color:#087ef0;font-weight:600;}
.client-wait .card {width:640px;max-width:100%;background:white;border:1px solid #e3e8ee;border-radius:12px;}
.client-wait h1 {color:#252c34;font-size:26px;}
.client-wait .primary,.login-form button.primary {background:#087ef0;border-color:#087ef0;color:white;}
.client-wait .primary:hover,.login-form button.primary:hover {background:#0669cb;}
@media(max-width:600px){.access-tools{flex-wrap:wrap;}.client-wait .card{padding:24px;}.access-steps{gap:6px;}.access-steps li{font-size:12px;}}
.access-modal :is(input[type="search"],input[type="tel"],select) {min-height:38px;padding:8px 12px;border:1px solid #cbd4df;border-radius:6px;font:inherit;color:#303640;background:#fff;}
html.pro .access-modal button.tiny.primary {background:#087ef0;border-color:#087ef0;color:#fff;}
html.pro .access-modal button.tiny.primary:hover {background:#0669cb;}
.access-modal input[type="checkbox"] {accent-color:#087ef0;}

.access-registration {margin:0 0 14px;color:#657384;font-size:13px;}
html.pro .access-modal button.tiny.primary:disabled {background:#edf1f5;border-color:#dce2e9;color:#657384;cursor:default;opacity:1;}
.access-modal select:disabled {background:#f5f6f8;color:#526071;}

.access-create {padding:16px 18px;background:#fff;border:1px solid #dce2e9;border-radius:8px;margin:16px 0;}
.access-create summary {font-weight:600;color:#0874da;cursor:pointer;}
.access-create-fields {display:flex;gap:16px;flex-wrap:wrap;margin:18px 0;}
.access-create-fields label {display:grid;gap:8px;font-size:13px;}
.access-create-fields input {min-height:38px;padding:8px 12px;border:1px solid #cbd4df;border-radius:6px;font:inherit;}
.access-create .access-projects {display:flex;gap:12px;flex-wrap:wrap;}
.access-create .access-projects label {display:flex;gap:6px;align-items:center;}
#contactError {color:#bc3434;font-size:13px;}


/* ===== web/src/css/74-order-refinement.css ===== */
/* 已确认订单原型：紧凑工具栏、平面表格、宽详情。仅作用于订单区域。 */
html.pro .order-refined { padding: 22px 24px 28px; }
html.pro .order-refined .compact-title { margin-bottom: 18px; align-items: center; }
html.pro .order-refined h1 { font-size: 23px; letter-spacing: -.4px; }
html.pro .order-refined .table-card { border: 1px solid #e2e7ee; border-radius: 6px; box-shadow: none; overflow: visible; }
.order-refined .order-view-seg { margin-left: auto; padding: 3px; background: #eaf0f6; border: 0; border-radius: 5px; }
.order-refined .order-view-seg button { min-width: 74px; border: 0; color: #6d7b8d; background: transparent; padding: 7px 14px; }
.order-refined .order-view-seg button.on { background: #fff; color: #2182e9; box-shadow: 0 1px 3px #1f385315; }
.order-toolbar { display: flex; align-items: center; flex-wrap: nowrap; gap: 8px; padding: 15px 16px; }
.order-filter-field { display: flex; flex: 0 0 auto; align-items: center; gap: 3px; height: 34px; padding-left: 10px; border: 1px solid #dce3ec; border-radius: 4px; background: #fff; color: #7d8999; font-size: 12px; white-space: nowrap; }
.order-toolbar select, .order-toolbar input, .order-toolbar button { height: 34px; font-size: 12px; border-radius: 4px; }
.order-toolbar .order-filter-field select { height: 32px; min-width: 64px; width: auto; padding: 0 20px 0 6px; border: 0; box-shadow: none; background-color: transparent; color: #344358; }
.order-filter-field:focus-within { border-color: #2588ef; box-shadow: 0 0 0 2px #2588ef12; }
.order-toolbar .order-search { width: 180px; min-width: 100px; flex: 1; margin-left: auto; padding: 0 11px; border: 1px solid #dce3ec; background: #fff; }
.order-toolbar .order-reset { padding: 0 8px; color: #7d8999; }
.order-toolbar > button, .order-month-filter { flex-shrink: 0; }
html.pro .order-toolbar button.primary { background: #1684ef; border-color: #1684ef; color: #fff; }
html.pro .order-toolbar button.primary:hover { background: #0875dc; }
.order-refined .mini-bar i { background: #4098ed; }
.order-month-filter { position: relative; font-size: 12px; color: #64748b; }
.order-month-filter summary { list-style: none; display: flex; gap: 9px; align-items: center; border: 1px solid #dce3ec; height: 34px; padding: 0 10px; border-radius: 4px; cursor: pointer; background: #fff; }
.order-month-filter summary::-webkit-details-marker { display: none; }
.order-month-filter summary b { font-weight: 500; color: #344358; }
.order-month-filter summary i { font-style: normal; color: #95a2b4; }
.order-month-filter[open] summary { border-color: #2588ef; box-shadow: 0 0 0 2px #2588ef12; }
.order-month-pop { position: absolute; z-index: 35; top: 43px; left: 0; width: 364px; padding: 19px; border: 1px solid #dfe6ee; border-radius: 7px; background: #fff; box-shadow: 0 12px 36px #20395724; }
.order-month-pop > strong { color: #28374b; font-size: 14px; }
.order-month-pop p { margin: 7px 0 16px; color: #8a96a6; font-size: 12px; }
.order-month-inputs { display: flex; align-items: center; gap: 9px; }
.order-month-inputs label { display: grid; gap: 8px; flex: 1; min-width: 0; }
.order-month-inputs input { width: 100%; min-width: 0; padding: 0 8px; border: 1px solid #dce3ec; background: #fff; }
.order-month-inputs > span { padding-top: 22px; color: #a1adbc; }
.order-month-actions { display: flex; justify-content: space-between; margin-top: 20px; }
.order-month-actions button { padding: 0 16px; }
.order-refined .crm-list-wrap { border-top: 1px solid #e4e9ef; border-radius: 0; }
html.pro .order-refined .crm-list th { background: #f5f7fa; color: #536175; font-size: 12px; height: 43px; }
html.pro .order-refined .crm-list td { height: 54px; border-bottom-color: #edf0f4; font-size: 12.5px; }
html.pro .order-refined .crm-list tr.order-row:hover > td,
html.pro .order-refined .crm-list tr.task-row:hover > td { background: #f1f8ff; }
.order-refined .crm-list .id-link { color: #2184e9; font-weight: 500; }
html.pro .order-refined .order-amount-summary { display: flex; align-items: baseline; gap: 14px; margin: 0; padding: 13px 20px; border: 0; border-top: 1px solid #e6ebf2; border-radius: 0; background: #f8fafc; box-shadow: none; }
html.pro .order-refined .order-amount-summary > span { font-size: 12px; color: #738095; }
html.pro .order-refined .order-amount-summary strong { font-size: 18px; font-weight: 600; color: #263b55; font-variant-numeric: tabular-nums; }
html.pro .order-refined .order-amount-summary small { margin-left: auto; color: #8b97a7; font-size: 12px; }
.order-refined .table-pager { border-top: 1px solid #edf0f4; padding: 12px 18px; }
html.pro .shell:has(.order-toolbar > button[onclick="openOrder()"]) .top-actions > button[onclick="openOrder()"] { display: none; }
html.pro .order-refined-detail.detail-drawer { width: min(1080px, 96vw); background: #fff; border-radius: 0; }
.order-refined-detail .detail-top { padding: 24px 28px 12px; border-bottom: 0; }
.order-refined-detail .detail-top h2 { font-size: 22px; letter-spacing: .3px; color: #26384e; }
.order-refined-detail .detail-top p { margin-top: 9px; color: #8692a2; font-size: 12px; }
.order-refined-detail .detail-top p .muted { display: none; }
.order-refined-detail .detail-actions { padding: 0 28px 15px; gap: 8px; }
.order-refined-detail .detail-actions button { font-size: 12px; border-radius: 4px; }
.order-detail-overview { display: grid; grid-template-columns: 1.35fr 1fr .9fr; margin: 0 28px 20px; padding: 19px 0; background: #f7f9fc; border: 1px solid #edf0f5; border-radius: 5px; }
.order-detail-overview > div { display: grid; align-content: start; gap: 7px; padding: 0 22px; min-width: 0; }
.order-detail-overview > div + div { border-left: 1px solid #e1e7ef; }
.order-detail-overview span, .order-detail-overview small { color: #8995a6; font-size: 12px; }
.order-detail-overview strong { color: #283d57; font-size: 23px; font-weight: 600; font-variant-numeric: tabular-nums; }
.order-detail-overview .overview-customer strong { font-size: 18px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.order-detail-overview em { font-size: 13px; font-weight: 400; color: #8c98a8; font-style: normal; }
.order-refined-detail .detail-tabs { padding: 0 28px; gap: 28px; border-bottom: 1px solid #e2e8f0; background: #fff; }
.order-refined-detail .detail-tabs button { padding: 12px 0; font-size: 14px; border-radius: 0; }
.order-refined-detail .detail-body { background: #fff; padding: 8px 28px 28px; }
.order-refined-detail .crm-detail-split { display: block; }
.order-refined-detail .crm-detail { padding: 0; border: 0; border-radius: 0; }
.order-refined-detail .crm-dblock { border: 0; border-bottom: 1px solid #e9edf3; border-radius: 0; padding: 18px 0 22px; margin-bottom: 0; background: #fff; box-shadow: none; }
.order-refined-detail .crm-dl { column-gap: 38px; row-gap: 0; }
.order-refined-detail .crm-dl > div > span { color: #8b97a6; font-size: 12px; }
.order-refined-detail .crm-dl > div > b { color: #394b61; font-weight: 400; font-size: 13px; }
.order-refined-detail .crm-edit { border-color: transparent; background: #f8fafc; border-radius: 3px; }
.order-refined-detail .crm-edit:hover, .order-refined-detail .crm-edit:focus { border-color: #a8c8ec; background: #fff; }
.order-refined-detail .order-timeline { position: static; margin-top: 24px; border: 0; border-radius: 0; padding: 0; max-height: none; }
.order-refined-detail .crm-money-strip { margin: 18px 0 0; border-radius: 4px; background: #f7f9fc; box-shadow: none; }
@media(max-width: 900px) {
  html.pro .order-refined { padding: 16px; }
  .order-toolbar { flex-wrap: wrap; gap: 8px; }
  .order-month-pop { left: auto; right: 0; width: min(364px, 88vw); }
  .order-refined-detail .detail-top { padding: 18px 16px 10px; }
  .order-refined-detail .detail-actions { padding: 0 16px 12px; }
  .order-detail-overview { margin: 0 16px 14px; }
  .order-detail-overview > div { padding: 0 12px; }
  .order-detail-overview strong { font-size: 19px; }
  .order-refined-detail .detail-body { padding: 8px 16px 24px; }
}

.order-sort-feedback { padding: 0 18px 12px; font-size: 12px; }


/* ===== web/src/css/75-brand-motion.css ===== */
/* A slow, continuous product-film backdrop shared by the public entry pages. */
.bg-gallery{position:absolute;inset:0;overflow:hidden;pointer-events:none;isolation:isolate;background:radial-gradient(ellipse at 68% 35%,#fff 0,#f1f4f6 35%,#dce4ea 100%)}
.gallery-intro>.bg-gallery{height:100svh;min-height:720px;bottom:auto}
.bg-gallery-light{position:absolute;width:80%;height:105%;border-radius:50%;will-change:transform;mix-blend-mode:soft-light}
.bg-gallery-light-one{right:-10%;top:-40%;background:radial-gradient(ellipse,#fff 5%,#bdd5e9 40%,transparent 70%);animation:gallery-light-orbit 16s ease-in-out infinite alternate}
.bg-gallery-light-two{left:15%;bottom:-65%;background:radial-gradient(ellipse,#7596b4 0%,#c1d7e6 38%,transparent 68%);opacity:.6;animation:gallery-light-orbit 21s -8s ease-in-out infinite alternate-reverse}
.bg-gallery-floor{position:absolute;width:110%;height:55%;left:0;bottom:-25%;background:radial-gradient(ellipse at 70% 30%,#aabfce70,transparent 60%);transform:rotate(-8deg);animation:gallery-floor-light 12s ease-in-out infinite alternate}
.bg-gallery-art{position:absolute;width:76%;height:100%;right:-12%;top:3%;transform:translate3d(var(--gallery-x,0px),calc(var(--gallery-y,0px) + var(--gallery-scroll,0px)),0);transition:transform 1.6s cubic-bezier(.18,.6,.28,1)}
.bg-gallery-camera{height:100%;width:100%;transform-origin:55% 50%;animation:gallery-camera 20s -4s ease-in-out infinite alternate;will-change:transform}
.bg-gallery-art svg{width:100%;height:100%;overflow:visible}
.bg-gallery-sculpture{transform-box:fill-box;transform-origin:50% 50%;animation:gallery-float 11s -2s ease-in-out infinite alternate}
.bg-gallery-shadow{transform-box:fill-box;transform-origin:center;animation:gallery-shadow 11s -2s ease-in-out infinite alternate}
.bg-gallery-sheen{animation:gallery-sheen 9s -3s linear infinite;transform:translateX(-250px) skewX(-18deg)}
.bg-gallery-sheen-second{animation-duration:14s;animation-delay:-9s;opacity:.35}
.bg-gallery-veil{position:absolute;inset:0;background:linear-gradient(90deg,#eef2f5 0%,#eef2f5dc 19%,#eef2f540 43%,transparent 65%)}
.gallery-login .bg-gallery-art{right:7%;opacity:.62}
.gallery-login .bg-gallery-light{opacity:.45}
.gallery-login .bg-gallery-veil{background:linear-gradient(90deg,#eef2f5e6,#eef2f570 34%,#eef2f515 65%)}
.gallery-motion-paused .bg-gallery *{animation-play-state:paused!important}
.gallery-motion-paused .bg-gallery-art{transition:none}
@keyframes gallery-camera{0%{transform:translate3d(-1.5%,1%,0) scale(.97) rotate(-2deg)}100%{transform:translate3d(3%,-2%,0) scale(1.075) rotate(2deg)}}
@keyframes gallery-float{from{transform:translateY(12px) rotate(-1deg)}to{transform:translateY(-16px) rotate(1.5deg)}}
@keyframes gallery-shadow{from{transform:scaleX(1);opacity:.24}to{transform:scaleX(.87);opacity:.13}}
@keyframes gallery-sheen{0%{transform:translateX(-200px) skewX(-18deg)}100%{transform:translateX(1450px) skewX(-18deg)}}
@keyframes gallery-light-orbit{from{transform:translate3d(-7%,0,0) rotate(-15deg) scale(.95)}to{transform:translate3d(12%,14%,0) rotate(18deg) scale(1.12)}}
@keyframes gallery-floor-light{from{opacity:.4;transform:translateX(-4%) rotate(-8deg)}to{opacity:.9;transform:translateX(6%) rotate(-4deg)}}
@media(max-width:800px){.bg-gallery-art{width:115%;height:72%;top:34%;right:-26%}.bg-gallery-veil{background:linear-gradient(180deg,#eef2f5 0%,#eef2f5d9 22%,#eef2f530 60%,transparent 85%)}.gallery-login .bg-gallery-art{width:130%;height:78%;right:-18%;top:11%;opacity:.38}.gallery-login .bg-gallery-veil{background:linear-gradient(180deg,#eef2f5d9,#eef2f530 50%,#eef2f5a1)}.bg-gallery-light{width:120%}}
@media(prefers-reduced-motion:reduce){.bg-gallery *{animation:none!important;transition:none!important}.bg-gallery-art{transform:none}.bg-gallery-camera{transform:rotate(-1deg)}.bg-gallery-sheen{display:none}}


/* ===== web/src/css/76-brand-gallery.css ===== */
/* MONEY多多品牌展厅：只作用于首页与登录，不覆盖业务工作台。 */
.gallery-intro,.login-stage.gallery-login{--gallery-ink:#20394f;--gallery-muted:#607789;--gallery-accent:#355d7d;color:var(--gallery-ink);font-family:"PingFang SC","Microsoft YaHei",sans-serif;background:#edf2f5;isolation:isolate}
.gallery-intro{position:fixed;inset:0;overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;scrollbar-color:#b6c6d2 #edf2f5}
.gallery-intro *,.gallery-login *{box-sizing:border-box}
.gallery-intro :is(button,a),.gallery-login :is(button,a){-webkit-tap-highlight-color:transparent}
.gallery-intro :is(button,a):focus-visible,.gallery-login :is(button,a,input,summary):focus-visible{outline:3px solid #6b96b5;outline-offset:4px}
.gallery-intro button,.gallery-intro a{font:inherit;cursor:pointer;color:inherit;text-decoration:none}
.gallery-intro .gallery-nav,.gallery-login .login-top{height:100px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #20384d13;position:relative;z-index:2;padding:0 6%;gap:24px}
.gallery-intro .gallery-nav{position:absolute;top:0;left:0;right:0}
.gallery-nav>div{display:flex;align-items:center;gap:36px;font-size:13px}
.gallery-intro .gallery-home,.gallery-login .login-home{border:0;background:none;padding:0;display:flex;align-items:center;color:inherit;box-shadow:none}
.gallery-intro .be-logo .be-word.money,.gallery-login .be-logo .be-word.money{width:160px;height:auto;max-height:none;filter:brightness(0) saturate(100%);opacity:.86;object-fit:contain}
.gallery-intro .intro-login{position:static;display:inline-block;background:#ffffff32;border:1px solid #243e5340;border-radius:28px;padding:11px 23px;color:#29445a;box-shadow:none;transform:none;font-size:13px}
.gallery-intro .intro-login:hover{background:#fff9;border-color:#456d8b}
.gallery-intro .gallery-hero{min-height:760px;height:100dvh;position:relative;z-index:1;padding:0 8%;display:flex;align-items:center;pointer-events:none}
.gallery-hero :is(button,a){pointer-events:auto}
.gallery-copy{padding-top:20px;padding-bottom:60px;max-width:660px}
.gallery-eyebrow,.gallery-login .login-hero .gallery-eyebrow{font-size:11px;font-weight:600;letter-spacing:.17em;line-height:1.8;color:#5e778a;margin:0 0 28px;max-width:none}
.gallery-intro .gallery-copy h1{font-size:clamp(48px,5.4vw,80px);font-weight:500;line-height:1.23;letter-spacing:-.045em;margin:0 0 26px;color:#20394f}
.gallery-copy h1>span{display:block;animation:gallery-text-in 1.1s cubic-bezier(.16,1,.3,1) both}
.gallery-copy h1>span+span{animation-delay:.12s}
.gallery-intro em{font-style:normal;color:#69859a}
.gallery-intro .gallery-lede{font-size:15px;line-height:2.1;max-width:370px;color:#567085;margin:0;animation:gallery-text-in 1.2s .2s both}
.gallery-intro .gallery-cta{display:inline-flex;align-items:center;gap:54px;background:#243f59;color:#fff;border:1px solid #243f59;border-radius:4px;padding:17px 24px;font-size:13px;box-shadow:0 9px 22px #30496218;margin-top:30px;transition:background .2s,transform .2s}
.gallery-intro .gallery-cta:hover{background:#385d7a;transform:translateY(-2px)}
.gallery-cta span{font-size:18px;transition:transform .25s}.gallery-cta:hover span{transform:translate(2px,-2px)}
.gallery-hero-foot{position:absolute;bottom:38px;left:8%;right:8%;display:flex;align-items:end;justify-content:space-between;color:#5f788b;font-size:12px}
.gallery-hero-foot small{font-size:10px;letter-spacing:.13em}.gallery-hero-foot p{margin:8px 0 0;font-size:12px}.gallery-hero-foot>a{border-bottom:1px solid #a5b7c4;padding-bottom:8px;margin-right:130px}
.gallery-section{position:relative;z-index:1;padding:110px 8%;background:#fafcfcf5}
.gallery-intro .gallery-section h2{font-size:clamp(32px,3.5vw,50px);font-weight:500;letter-spacing:-.04em;line-height:1.45;color:#233e55;margin:0}
.gallery-about-head,.gallery-partners-heading{display:grid;grid-template-columns:1fr 1fr;gap:70px;align-items:center}
.gallery-about-head>p,.gallery-partners-heading>p{font-size:15px;line-height:2.1;color:#607788;margin:0}
.gallery-values{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:50px;margin-top:76px}
.gallery-values article{border-top:1px solid #c5d2dc;padding-top:26px}
.gallery-values small{font-family:Georgia,serif;font-size:16px;font-style:italic;color:#7c93a4}
.gallery-values h3{font-size:23px;font-weight:500;margin:24px 0 15px;color:#2a4458}
.gallery-values p{font-size:14px;line-height:1.95;color:#607788;margin:0;max-width:310px}
.gallery-partners{background:#e9eff4f5;padding-top:95px;padding-bottom:90px}
.gallery-partners-heading{margin-bottom:48px}.gallery-partners-heading>p{justify-self:end}
.gallery-brand-line{display:grid;grid-template-columns:140px 1fr;padding:27px 0;border-top:1px solid #cad5df;gap:20px;align-items:center}
.gallery-brand-line>span{font-size:11px;color:#667e90;letter-spacing:.03em}.gallery-brand-line>div{display:flex;flex-wrap:wrap;gap:22px 32px;align-items:center}
.gallery-brand-line b{font-size:clamp(15px,1.65vw,22px);font-weight:500;color:#395569;line-height:1.5}
.gallery-end{background:#f3f7f9d9;text-align:center;padding-top:120px;padding-bottom:0;min-height:520px}
.gallery-end footer{display:flex;justify-content:space-between;border-top:1px solid #cbd6de;margin-top:100px;padding:28px 0;font-size:11px;color:#607788}
.gallery-intro>.gallery-pause{position:fixed;right:4%;bottom:28px;z-index:4}
.gallery-intro.warping .gallery-copy,.gallery-intro.warping .gallery-section,.gallery-intro.warping .gallery-nav{opacity:0;transform:translateY(-14px);transition:opacity .38s,transform .42s}
.gallery-intro.warping .bg-gallery{filter:blur(5px);transition:filter .42s}
/* 登录只替换外壳，所有账号、手机号、注册与备用入口沿用原 DOM。 */
html.pro .login-stage.gallery-login{grid-template-columns:minmax(0,1fr) minmax(350px,420px);grid-template-rows:100px 1fr auto;column-gap:clamp(30px,5vw,80px);padding:0 6% 0;min-height:100dvh;overflow:hidden;background:#edf2f5}
html.pro .login-stage.gallery-login::after{display:none}
.gallery-login .login-top{grid-column:1/-1;padding:0;height:100px}
.gallery-nav-note{font-size:12px;color:#678092;letter-spacing:.05em}
.gallery-login .login-hero{position:relative;z-index:1;align-self:center;padding:54px 0 60px;max-width:680px;pointer-events:none}
.gallery-login .login-hero h1{font-size:clamp(36px,4.1vw,62px);font-weight:500;line-height:1.26;letter-spacing:-.04em;color:#20394f}
html.pro .login-stage.gallery-login .login-hero h1 span+span b{color:#69859a;text-shadow:none}
.gallery-login .login-hero>p:not(.gallery-eyebrow){font-size:15px;line-height:2.05;color:#597387;margin-top:28px}
.gallery-login .login-panel{position:relative;z-index:2;padding:30px 0;align-self:center;min-width:0}
html.pro .login-stage.gallery-login .login-card{border-radius:10px;padding:34px 32px 28px;background:rgba(255,255,255,.94);border:1px solid #ffffffd9;box-shadow:0 26px 80px #2b496b16;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px)}
html.pro .login-stage.gallery-login .login-brand b{font-size:26px;font-weight:500;color:#233e55}
html.pro .login-stage.gallery-login .login-brand small{color:#687e90;font-size:12px;margin-top:8px}
.gallery-login .login-form{margin-top:28px;gap:19px}
html.pro .gallery-login .login-form label{font-size:12px;color:#536e83}
html.pro .gallery-login .login-form input{height:47px;border:1px solid #dae3ea;background:#f8fafc;color:#29445a;border-radius:4px;box-shadow:none;font-size:13px;padding:12px}
html.pro .gallery-login .login-form .login-pwd input{padding-right:64px}
html.pro .gallery-login .login-form input:focus{border-color:#7b9db7;background:#fff}
html.pro .gallery-login .login-form button.primary{background:#294862;border-color:#294862;color:white;border-radius:4px;font-size:13px;font-weight:500;height:47px}
html.pro .gallery-login .login-form button.primary:hover{background:#395e7b}
html.pro .gallery-login .sms-code-row button{height:47px;padding:0 12px;background:#edf2f6;border:1px solid #e1e8ed;border-radius:4px;color:#45677f;font-size:12px}
html.pro .gallery-login .login-form .sms-note{font-size:11px;line-height:1.85;color:#697e8e}
html.pro .gallery-login :is(.login-foot,details){color:#647b8d}
.gallery-login-foot{grid-column:1/-1;position:relative;z-index:2;display:flex;align-items:center;justify-content:space-between;padding:12px 0 24px;font-size:11px;color:#617c90}
html.pro .gallery-login.wide{grid-template-columns:minmax(0,1fr);grid-template-rows:100px auto auto auto}
.gallery-login.wide .login-hero{padding:35px 0 0;max-width:none}.gallery-login.wide .login-hero h1{font-size:38px}.gallery-login.wide .login-hero h1 span{display:inline}.gallery-login.wide .login-hero>p:not(.gallery-eyebrow){margin-top:12px}.gallery-login.wide .login-panel{justify-self:center;width:min(100%,950px)}
@keyframes gallery-text-in{from{opacity:0;transform:translateY(26px)}to{opacity:1;transform:translateY(0)}}
@media(min-width:1600px){.gallery-copy{max-width:850px}.gallery-intro .gallery-hero{padding-left:9%}.gallery-intro .gallery-copy h1{font-size:88px}}
@media(max-width:1000px){.gallery-intro .gallery-copy h1{font-size:58px}.gallery-login .login-hero h1{font-size:39px}.gallery-nav-note{display:none}.gallery-about-head{gap:35px}.gallery-brand-line{grid-template-columns:115px 1fr}.gallery-values{gap:30px}.gallery-intro .gallery-nav{padding:0 6%}.gallery-hero-foot>a{display:none}}
@media(max-width:767px){.gallery-intro .gallery-nav,.gallery-login .login-top{height:78px}.gallery-intro .be-logo .be-word.money,.gallery-login .be-logo .be-word.money{width:130px}.gallery-nav>div{gap:0}.gallery-nav a{display:none}.gallery-intro .intro-login{padding:10px 17px;font-size:12px}.gallery-intro .gallery-hero{min-height:780px;height:100svh;padding:120px 7% 150px;align-items:flex-start}.gallery-copy{padding:35px 0 0;max-width:100%}.gallery-intro .gallery-copy h1{font-size:48px}.gallery-eyebrow,.gallery-login .login-hero .gallery-eyebrow{font-size:9px;letter-spacing:.12em;margin-bottom:22px}.gallery-intro .gallery-lede{font-size:14px;line-height:2}.gallery-intro .gallery-cta{margin-top:24px;padding:15px 20px;gap:40px}.gallery-hero-foot{left:7%;right:7%;bottom:68px}.gallery-hero-foot small{font-size:8px;letter-spacing:.08em}.gallery-hero-foot p{font-size:11px}.gallery-intro>.gallery-pause{right:7%;bottom:18px}.gallery-section{padding:65px 7%}.gallery-about-head,.gallery-partners-heading{grid-template-columns:1fr;gap:25px}.gallery-intro .gallery-section h2{font-size:34px}.gallery-about-head>p,.gallery-partners-heading>p{font-size:14px;justify-self:start}.gallery-values{grid-template-columns:1fr;margin-top:42px;gap:36px}.gallery-values article{padding-top:20px}.gallery-values h3{margin:18px 0 12px}.gallery-values p{max-width:none}.gallery-brand-line{grid-template-columns:1fr;gap:16px;padding:24px 0}.gallery-brand-line>div{gap:14px 24px}.gallery-brand-line b{font-size:17px}.gallery-end{padding-bottom:0;min-height:460px}.gallery-end footer{margin-top:70px;font-size:10px;padding-bottom:65px;gap:16px}
html.pro .login-stage.gallery-login{grid-template-columns:minmax(0,1fr);grid-template-rows:78px auto auto auto;gap:0;padding:0 6%;overflow:hidden}.gallery-login .login-hero{padding:30px 0 8px}.gallery-login .login-hero h1{font-size:32px}.gallery-login .login-hero>p:not(.gallery-eyebrow){display:none}.gallery-login .login-hero .gallery-eyebrow{margin-bottom:16px}.gallery-login .login-panel{width:100%;padding:26px 0 20px}html.pro .login-stage.gallery-login .login-card{padding:27px 23px 24px;border-radius:9px}html.pro .login-stage.gallery-login .login-brand b{font-size:23px}.gallery-login-foot{gap:12px;padding-bottom:22px;font-size:10px}.gallery-login.wide .login-hero h1 span{display:block}.gallery-login.wide .login-hero h1{font-size:30px}}
@media(prefers-reduced-motion:reduce){.gallery-intro *,.gallery-login *{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

.gallery-intro>.bg-gallery{height:100dvh;min-height:760px}
.gallery-pause{font:inherit;font-size:11px;color:#4b687e;background:#f7fafbd9;border:1px solid #bacbd770;border-radius:24px;padding:9px 14px;cursor:pointer;backdrop-filter:blur(10px)}
.gallery-pause:hover{background:#fff}.gallery-pause:disabled{cursor:default;color:#748a9a}
@media(max-width:767px){.gallery-intro>.bg-gallery{height:100svh;min-height:780px}}
@media(max-width:767px){.gallery-hero-foot{align-items:flex-start;flex-direction:column;gap:18px}.gallery-hero-foot>a{display:block;margin-right:0;font-size:11px}}

/* 两种登录方式同级，切换仅隐藏面板，保留已输入内容与验证码倒计时。 */
html.pro .gallery-login .login-method-tabs{display:flex;gap:26px;margin-top:26px;border-bottom:1px solid #dae3ea}
html.pro .gallery-login .login-method-tabs button{position:relative;flex:1;border:0;border-radius:0;padding:12px 0;background:transparent;color:#718697;font-size:14px;font-weight:500;box-shadow:none;white-space:nowrap}
html.pro .gallery-login .login-method-tabs button[aria-selected="true"]{color:#284b67}
html.pro .gallery-login .login-method-tabs button[aria-selected="true"]::after{content:"";position:absolute;bottom:-1px;left:0;right:0;height:2px;background:#355d7d}
html.pro .gallery-login .login-method-tabs button:hover{color:#284b67;background:#f3f7f940}
.gallery-login [role="tabpanel"] .login-form{margin-top:24px}


/* ===== web/src/css/77-workbench-refinement.css ===== */
/* 工作台精修 V1：限定已确认的六个页面和详情，沿用订单蓝灰视觉。 */
html.pro .workbench-refined { padding: 22px 24px 28px; }
html.pro .workbench-refined .compact-title { margin-bottom: 18px; align-items:center; }
html.pro .workbench-refined h1 { font-size:23px; letter-spacing:-.4px; }
html.pro .workbench-refined .card { border:1px solid #e2e7ee; border-radius:6px; box-shadow:none; }
html.pro .workbench-refined .table-card { overflow:visible; }
html.pro .workbench-refined .table-wrap { border-radius:0; }
html.pro .workbench-refined table th { background:#f5f7fa; color:#69768a; font-size:12px; height:43px; }
html.pro .workbench-refined table td { height:54px; border-bottom-color:#edf0f4; font-size:12.5px; }
html.pro .workbench-refined tbody tr:hover > td { background:#f1f8ff; }
html.pro .workbench-refined .id-link, html.pro .workbench-refined .tc-name { color:#2184e9; font-weight:500; }
html.pro .workbench-refined .table-tools { min-height:54px; padding:10px 16px; border-bottom:1px solid #e7ecf2; }
html.pro .workbench-refined .table-tools h3 { font-size:13px; }
.wb-toolbar { display:flex; flex-wrap:nowrap; align-items:center; gap:8px; padding:14px 16px; border-bottom:1px solid #e7ecf2; }
.wb-toolbar input, .wb-toolbar select, .wb-toolbar button { font-size:12px; height:34px; border-radius:4px; }
.wb-filter { display:flex; flex:0 0 auto; align-items:center; gap:3px; height:34px; padding-left:10px; border:1px solid #dce3ec; border-radius:4px; color:#7d8999; font-size:12px; white-space:nowrap; }
.wb-filter select { width:auto; min-width:64px; max-width:140px; border:0; box-shadow:none; color:#344358; background:transparent; padding:0 20px 0 5px; }
.wb-toolbar .wb-search { width:180px; min-width:110px; flex:1; margin-left:auto; border:1px solid #dce3ec; padding:0 10px; background:white; }
.wb-toolbar > button { flex-shrink:0; }
html.pro .workbench-refined .wb-summary { display:flex; gap:0; margin:0; padding:10px 14px; border-bottom:1px solid #e7ecf2; background:#f8fafc; }
html.pro .wb-summary .kpi { flex:1; min-width:0; border:0; border-radius:0; box-shadow:none; background:transparent; padding:5px 12px; }
html.pro .wb-summary .kpi + .kpi { border-left:1px solid #e2e8f0; }
html.pro .wb-summary .kpi .value, html.pro .wb-summary .kpi b, html.pro .wb-summary .kpi strong { font-size:18px; }
html.pro .wb-summary .kpi small { font-size:11px; }
.wb-footnote { padding:11px 18px; color:#8a96a6; font-size:11px; border-top:1px solid #e7ecf2; }
html.pro .workbench-refined .sf-flow { display:flex; gap:0; padding:0 8px; margin:0; border:1px solid #e2e7ee; background:#fff; border-radius:6px 6px 0 0; box-shadow:none; }
html.pro .workbench-refined .sf-step { display:flex; flex:1; align-items:center; gap:8px; min-height:62px; padding:10px; background:transparent; border:0; border-radius:0; box-shadow:none; }
html.pro .workbench-refined .sf-step + .sf-step { border-left:1px solid #f0f2f6; }
html.pro .workbench-refined .sf-step.on { background:#f0f7ff; color:#2587e9; }
html.pro .workbench-refined .sf-dot { width:22px; height:22px; font-size:11px; background:#f6f8fb; color:#8b98aa; border:1px solid #e3e8ef; }
html.pro .workbench-refined .sf-step.on .sf-dot { color:#fff; background:#348fe8; border-color:#348fe8; }
html.pro .workbench-refined .sf-st { display:flex; flex-wrap:wrap; align-items:baseline; gap:3px 7px; }
html.pro .workbench-refined .sf-st small { flex-basis:100%; font-size:12px; }
html.pro .workbench-refined .sf-st b { font-size:12px; font-weight:500; }
html.pro .workbench-refined .sf-st em { font-size:10px; color:#8d98a8; }
html.pro .workbench-refined .sf-you { font-size:9px; margin-left:5px; }
.wb-view-tabs { display:flex; gap:22px; padding:0 18px; background:#fff; border-bottom:1px solid #e4e9f0; }
.wb-view-tabs button { padding:13px 0; border:0; border-radius:0; background:none; color:#8590a1; font-size:12px; border-bottom:2px solid transparent; }
.wb-view-tabs button.on { color:#2587e9; border-bottom-color:#2587e9; }
.wb-detail-flow { display:flex; gap:9px; flex-wrap:wrap; padding:17px 16px; background:#fbfcfe; border:1px solid #edf0f5; border-radius:5px; }
.wb-detail-flow span { display:flex; align-items:center; flex:1; gap:6px; color:#99a3b1; font-size:11px; white-space:nowrap; }
.wb-detail-flow i { display:grid; place-items:center; width:19px; height:19px; border:1px solid #e0e6ef; border-radius:50%; font-style:normal; }
.wb-detail-flow .on { color:#2587e9; }
.wb-detail-flow .on i { background:#2587e9; color:white; border-color:#2587e9; }
.wb-current { margin:12px 0 17px; padding:12px 16px; background:#f1f7fe; border:1px solid #e6effb; color:#507399; font-size:12px; border-radius:4px; }
html.pro .tc-panel { width:min(880px,94vw); background:#fff; }
.tc-panel .tc-tabs { margin:0 -24px 16px; padding:0 24px; position:sticky; top:-24px; z-index:2; }
.tc-panel [data-tc-tab][hidden] { display:none !important; }
html.pro .tc-panel .mt-stats { background:#f8fafc; border:1px solid #edf0f5; border-radius:5px; padding:14px; }
html.pro .tc-panel .mt-stat { box-shadow:none; background:none; padding:6px 10px; border:0; }
html.pro .tc-panel .mt-stat b { font-size:17px; }
html.pro .tc-panel .mt-sec { border:0; padding:10px 0; }
html.pro .tc-panel .tc-grid { gap:0 26px; }
html.pro .tc-panel .tc-kv { padding:15px 0; border-bottom:1px solid #edf0f5; }
html.pro .workbench-refined .wb-month-summary { display:grid; grid-template-columns:1.8fr 1fr; padding:15px 18px; gap:0; background:white; border:1px solid #e2e7ee; border-radius:6px; margin-bottom:16px; }
html.pro .wb-month-summary .kpi { border:0; box-shadow:none; border-radius:0; background:transparent; padding:6px 16px; }
html.pro .wb-month-summary .kpi + .kpi { border-left:1px solid #e7ecf2; }
html.pro .wb-month-summary .kpi:not(:first-child) .num { font-size:22px; color:#7d8999; }
html.pro .month-refined .warn-notice { background:#fffcf5; border:1px solid #f1e8d3; font-size:12px; padding:10px 14px; }
html.pro .project-refined .ad-detail-head { display:flex; align-items:center; padding:0; margin:0 0 18px; border:0; box-shadow:none; background:transparent; }
html.pro .project-refined .ad-detail-head h1 { margin:6px 0; }
html.pro .project-refined .ad-detail-head p { font-size:12px; }
html.pro .project-refined .ad-back { font-size:12px; margin-bottom:12px; }
html.pro .project-refined .ad-tabs { margin:0; padding:0 18px; background:#fff; border:1px solid #e2e7ee; border-bottom:0; border-radius:6px 6px 0 0; }
html.pro .project-refined .ad-tabs button { font-size:12px; padding:13px 0; }
html.pro .project-refined .ad-task-cell.ad-col-now { background:#f3f8ff; }
html.pro .project-refined .ad-task-table th.ad-col-now { color:#2587e9; background:#edf5ff; }
html.pro .project-refined .ad-task-cell.ok { color:#485b70; }
@media(max-width:1150px) { .wb-toolbar { flex-wrap:wrap; } .wb-toolbar .wb-search { min-width:150px; } html.pro .workbench-refined .sf-flow { overflow-x:auto; } html.pro .workbench-refined .sf-step { flex:1 0 135px; } }
@media(max-width:700px) { html.pro .workbench-refined { padding:16px 12px; } html.pro .workbench-refined .wb-summary { flex-wrap:wrap; } html.pro .wb-summary .kpi { flex-basis:45%; } html.pro .workbench-refined .wb-month-summary { grid-template-columns:1fr; } html.pro .wb-month-summary .kpi + .kpi { border-left:0; border-top:1px solid #e7ecf2; } }

html.pro .metric-drawer:has(.wb-payment-progress) { width:min(1040px,96vw); background:#fff; }
html.pro .metric-drawer:has(.wb-payment-progress) .detail-top { padding:22px 26px 16px; }
html.pro .metric-drawer:has(.wb-payment-progress) .metric-body { padding:20px 26px; }
html.pro .metric-drawer:has(.wb-payment-progress) .doc-panel { border:0; box-shadow:none; padding:0; }
html.pro .metric-drawer:has(.wb-payment-progress) .doc-panel-head { background:#f8fafc; border-bottom:1px solid #e5ebf3; padding:12px; }
html.pro .metric-drawer:has(.wb-payment-progress) .doc-acts { position:sticky; bottom:-20px; background:#fff; padding:14px 0; z-index:3; border-top:1px solid #e5ebf3; }

html.pro .workbench-refined .wb-summary { border-radius:0; }
html.pro .wb-summary .metric-card { display:grid; grid-template-columns:1fr auto; gap:4px 8px; text-align:left; }
html.pro .wb-summary .metric-card small { grid-column:1 / -1; }
html.pro .wb-summary .metric-card b { font-size:14px; }

html.pro .wb-title-count { font-size:12px; color:#8995a5; font-weight:400; margin-left:12px; letter-spacing:0; }
html.pro .talents-refined .row-actions { min-width:90px; }
html.pro .talents-refined .tc-row td { padding-top:12px; padding-bottom:12px; }

html.pro .workbench-refined button.primary { background:#1684ef; border-color:#1684ef; color:#fff; }
html.pro .workbench-refined button.primary:hover { background:#0875dc; }
html.pro .workbench-refined .wb-summary .metric-card { min-height:0; grid-template-rows:auto auto; align-content:center; padding:4px 12px; }

/* 佣金付款进度：状态可追溯，未付款不使用待执行打款的强调色。 */

.ms-detail {padding:20px;}
.ms-detail-summary {display:flex;gap:32px;padding:0 0 20px;border-bottom:1px solid #e8edf2;}
.ms-detail-summary span {color:#7b8797;font-size:12px;}
.ms-detail-summary b {display:block;margin-top:8px;color:#27384d;font-size:22px;}
.ms-detail .unified-table {width:100%;margin-top:16px;}
.ms-detail-pager {display:flex;align-items:center;justify-content:flex-end;gap:10px;margin-top:16px;}
.ms-detail-pager span {margin-right:auto;color:#7b8797;}
html.pro .metric-drawer:has(.ms-detail) {width:min(1040px,94vw);background:#fff;}
.ms-detail td:first-child {min-width:240px;}
.ms-detail .tiny {white-space:nowrap;}
.ms-detail th {white-space:nowrap;}

html.pro .metric-drawer:has(.dy-rank-detail) {width:min(900px,94vw);}
.dy-rank-detail .dy-rk-sub {margin:0;border:0;background:#fff;}


/* ===== web/src/css/78-receipt-refinement.css ===== */
/* 稿费回款沿用稿费订单视觉；页面、权限、金额与操作保持原样。 */
html.pro .receipts-refined .compact-title { min-height: 40px; }
html.pro .receipts-refined .receipt-table-wrap { border-top: 1px solid #e4e9ef; overflow-x: auto; }
html.pro .receipts-refined .receipt-list { width: 100%; min-width: 1000px; table-layout: fixed; }
html.pro .receipts-refined .receipt-list th { color: #536175; padding: 12px 10px; }
html.pro .receipts-refined .receipt-list td { padding: 12px 10px; font-weight: 400; }
html.pro .receipts-refined .receipt-list td.money { font-variant-numeric: tabular-nums; text-align: right; }
html.pro .receipts-refined .receipt-list td.money b { font-weight: 500; }
html.pro .receipts-refined .receipt-list .receipt-project { min-width: 118px; max-width: 160px; white-space: normal; overflow-wrap: anywhere; }
html.pro .receipts-refined .receipt-list .receipt-talent { min-width: 70px; max-width: 100px; white-space: normal; overflow-wrap: anywhere; }
html.pro .receipts-refined .receipt-list .cell-sub { display: block; margin-top: 4px; font-size: 11px; color: #8995a6; }
html.pro .receipts-refined .receipt-list .cell-sub.warn { color: var(--red); }
html.pro .receipts-refined .receipt-list th:last-child,
html.pro .receipts-refined .receipt-list td.row-actions { position: static; box-shadow: none; background: inherit; }
html.pro .receipts-refined .receipt-list td.row-actions { min-width: 104px; max-width: 128px; white-space: normal; }
html.pro .receipts-refined .receipt-list .row-actions button { margin: 2px; padding: 4px 7px; border-radius: 4px; font-size: 12px; white-space: nowrap; }
html.pro .receipts-refined .wb-summary { padding: 10px 6px; border-top: 1px solid #e7ecf2; border-bottom: 0; flex-wrap: nowrap; overflow-x: auto; }
html.pro .receipts-refined .wb-summary .metric-card { display: flex; width: auto; min-width: max-content; flex: 1 0 auto; align-items: center; gap: 8px; padding: 3px 12px; white-space: nowrap; }
html.pro .receipts-refined .wb-summary .metric-card b { justify-self: start; align-self: center; font-size: 14px; }
html.pro .receipts-refined .wb-summary .metric-card span { font-size: 12px; }
html.pro .receipts-refined .wb-summary .metric-card small { margin: 0; font-size: 11px; line-height: 1.5; }
@media(max-width:1150px) { .receipts-refined .order-toolbar { flex-wrap: wrap; } }

html.pro .receipts-refined .receipt-list .cell-sub { white-space: normal; overflow-wrap: anywhere; line-height: 1.5; }
html.pro .receipts-refined .receipt-list td { white-space: normal; overflow-wrap: anywhere; }
html.pro .receipts-refined .receipt-list .id-link { white-space: nowrap; font-size: 12px; }
html.pro .receipts-refined .receipt-list .money { white-space: nowrap; }
html.pro .receipts-refined .wb-summary .metric-card span,
html.pro .receipts-refined .wb-summary .metric-card b { margin: 0; padding: 0; line-height: 1.5; align-self: center; }


/* ===== web/src/css/79-review-readability.css ===== */
/* 10-16评审：保持已确认布局，提高正文、控件和选中态的可读性。 */
html.pro:has(.shell) { --pro-bg:#dfe8f2; --pro-ink:#172536; --pro-ink-2:#354153; --pro-muted:#526174; --pro-faint:#657286; }
html.pro .shell { background:#dfe8f2; }
html.pro .content { color:#172536; }
html.pro .content :is(.table-card,.card) { background:#fff; border-color:#dce4ed; }
html.pro .content :is(.unified-table,.mini-table) :is(th,td) { font-size:15px; }
html.pro .content :is(.unified-table,.mini-table) th { color:#354153; background:#f0f4f8; font-weight:600; }
html.pro .content :is(.unified-table,.mini-table) td { color:#172536; }
html.pro .content :is(.brief-text,.ad-rule,.aw-cell-in) { color:#172536; font-size:15px; line-height:1.65; }
html.pro .content :is(button,input,select,textarea) { font-size:15px; }
html.pro .content :is(.tiny,.stage-edit,.badge,.pill) { font-size:14px; }
html.pro .content :is(.muted,.cell-sub,.field-hint) { color:#5b697c; }
html.pro .content button:focus-visible, html.pro .content :is(input,select,textarea):focus-visible { outline:2px solid #3389e5; outline-offset:2px; }
html.pro .content :is(.seg,.tabs,.order-view-seg) button { color:#46566a; background:#edf1f5; }
html.pro .content :is(.seg,.tabs,.order-view-seg) button:is(.active,.on) { color:#0869c4; background:#e0efff; font-weight:600; box-shadow:inset 0 0 0 1px #a8cdf3; }
html.pro .content :is(button,select):disabled { cursor:default; color:#687789; background:#f0f3f6; opacity:1; }
html.pro .order-toolbar { flex-wrap:wrap; gap:9px; }
html.pro .order-toolbar :is(select,input,button), html.pro .order-month-filter summary { min-height:38px; height:38px; }
html.pro .order-filter-field { height:38px; font-size:14px; color:#46566a; }
html.pro .order-toolbar .order-filter-field select { height:36px; min-height:36px; }
html.pro .order-month-filter { font-size:14px; color:#46566a; }
html.pro .order-refined .crm-list :is(th,td) { font-size:15px; }
html.pro .order-refined .crm-list th { color:#354153; background:#f0f4f8; }
html.pro .order-refined .crm-list td { height:58px; }
html.pro .order-refined .order-prog { min-width:126px; }
html.pro .order-refined .order-prog :is(b,em), html.pro .order-refined .crm-list .id-link { font-size:14px; }
html.pro .order-refined .order-view-seg button.on { color:#0869c4; background:#e0efff; }
html.pro .order-refined-detail .crm-kv :is(label,.label), html.pro .order-refined-detail .detail-top p { color:#526174; }
html.pro .content .stage-edit { min-height:34px; color:#205d94; background:#eef6ff; border-color:#b8d5f1; cursor:pointer; }
html.pro .content .stage-edit:hover { background:#e0efff; border-color:#87b8e7; }
@media(max-width:1100px) { html.pro .order-toolbar .order-search { flex:1 1 220px; } }

/* 操作列可见优先，长链接只缩略显示，复制仍取完整地址。 */
html.pro .content .aw-table :is(th,td) { padding-left:10px; padding-right:10px; }
html.pro .content .aw-link { display:flex; flex-direction:column; align-items:flex-start; gap:5px; }
html.pro .content .aw-url { max-width:150px; font-size:12px; }
html.pro .content .aw-table td:nth-child(7) { white-space:normal; min-width:90px; max-width:140px; }
html.pro .content .aw-note { min-width:115px; }
html.pro .content .aw-note .aw-cell-in { width:115px; }
html.pro .content .ad-shot-inline { min-width:100px; min-height:44px; padding:7px; border:1px dashed #aabdd0; border-radius:6px; background:#f6f9fc; text-align:center; }
html.pro .content .ad-shot-inline:focus, html.pro .content .ad-shot-inline:focus-within { outline:2px solid #3389e5; outline-offset:2px; background:#e8f3ff; }
html.pro .content .ad-shot-paste { display:flex; flex-direction:column; align-items:center; gap:3px; width:100%; padding:5px 4px; border:0; background:transparent; color:#176ab3; font-size:14px; white-space:nowrap; cursor:pointer; }
html.pro .content .ad-shot-paste small { font-size:11px; color:#657286; font-weight:400; }
html.pro .content .ad-shot-upload { display:block; padding:5px 4px 2px; border-top:1px solid #dce4ed; color:#176ab3; font-size:12px; white-space:nowrap; cursor:pointer; }
html.pro .content .aw-chip.v-blue, html.pro .content .aw-chip.v-purple { color:#145d9e; background-color:#e3effc; }
html.pro .content .aw-chip.v-gray { color:#526174; background-color:#edf1f5; }
html.pro .order-toolbar .order-search { min-width:220px; }

/* 网页里的达人预览顶栏使用浅底深字；微信容器仍由既有样式隐藏顶栏。 */
html.pro .main:has(> .phone-stage) > .top { background:#f7f5f8; color:#24212b; }
html.pro .main:has(> .phone-stage) > .top :is(.crumb,.crumb strong,.who b) { color:#24212b; }
html.pro .main:has(> .phone-stage) > .top .crumb span { color:#62596c; }

html.pro .content button.order-status-edit { display:inline-flex; align-items:center; gap:5px; border:0; background:transparent; padding:4px 2px; }
html.pro .content button.order-status-edit:hover { background:#e0efff; }
html.pro .content button.order-status-edit > span:last-child { color:#0869c4; }
html.pro .main:has(> .phone-stage) > .top .crumb strong { color:#24212b !important; }

/* Interface Design 精修：查找与操作为第一层，组合筛选为第二层。 */
html.pro .order-toolbar-grouped { display:block; padding:16px; }
html.pro .order-query-row { display:flex; align-items:center; gap:8px; padding-bottom:12px; }
html.pro .order-query-row .order-search { flex:1; width:auto; margin:0; min-width:160px; max-width:none; background:#f7f9fc; }
html.pro .order-query-row > button { flex-shrink:0; padding:0 16px; }
html.pro .order-query-row .order-reset { color:#526174; background:transparent; border-color:transparent; }
html.pro .order-query-row .order-reset:hover { background:#edf2f7; }
html.pro .order-filter-row { display:flex; flex-wrap:wrap; align-items:center; gap:8px; }
html.pro .order-filter-row .order-filter-field { border-color:#e3e8ef; background:#fafbfd; }
html.pro .order-filter-row .order-filter-field > span { color:#657286; }
html.pro .order-filter-row .order-month-filter summary { border-color:#e3e8ef; background:#fafbfd; }
html.pro .order-refined .crm-list :is(td.money,td .money,.order-prog,.id-link) { font-variant-numeric:tabular-nums; }
html.pro .order-refined .crm-list th { font-weight:500; background:#f6f8fb; }
html.pro .order-refined .crm-list td { border-bottom-color:#edf1f5; }
html.pro .order-refined .order-amount-summary { background:#fff; padding:16px 20px; }
html.pro .order-refined .order-amount-summary > span,
html.pro .order-refined .order-amount-summary small { color:#59697c; font-size:14px; }
html.pro .order-refined .order-amount-summary strong { font-size:20px; letter-spacing:-.3px; }
html.pro .order-refined .order-view-seg { display:flex; gap:4px; padding:4px; border-radius:8px; background:#e2e9f1; }
html.pro .order-refined .order-view-seg button { border-radius:5px; min-height:36px; }
html.pro .order-refined .order-view-seg button.on { background:#fff; color:#126bb8; box-shadow:0 1px 3px #233b5414; }
html.pro .shell:has(.order-query-row > button[onclick="openOrder()"]) .top-actions > button[onclick="openOrder()"] { display:none; }
@media(max-width:700px) {
  html.pro .order-query-row { flex-wrap:wrap; }
  html.pro .order-query-row .order-search { flex-basis:100%; }
  html.pro .order-filter-row .order-month-pop { left:0; right:auto; width:min(364px,calc(100vw - 64px)); }
}

/* 用户反馈：工作区背景更明确，表头与辅助文字增强可读性。 */
html.pro .shell > .main > #workspace { background:#dfe8f2; }
html.pro .order-refined .crm-list th { background:#eaf0f7; color:#34465c; font-weight:600; }
html.pro .order-toolbar-grouped { background:#f5f8fc; border-radius:6px 6px 0 0; }
html.pro .order-query-row .order-search,
html.pro .order-filter-row .order-filter-field,
html.pro .order-filter-row .order-month-filter summary { background:#fff; border-color:#cdd9e6; }
html.pro .order-filter-row .order-filter-field > span { color:#4c6076; }
html.pro .content :is(.muted,.cell-sub,.field-hint) { color:#4d6075; }
html.pro .order-refined .crm-list td { height:62px; }

/* 投放截图拖入时明确标出目标单元格。 */
html.pro .content .ad-shot-inline.is-dragover { outline:2px solid #3389e5; outline-offset:2px; background:#e8f3ff; }
html.pro .content .ad-shot-drop-hint { display:block; padding:3px 0; color:#176ab3; font-size:13px; }

/* 有图时收起操作提示，悬停、键盘聚焦或拖入时再展开。 */
html.pro .content .ad-shot-inline.has-preview:not(:hover):not(:focus-within):not(.is-dragover) > :is(.ad-shot-drop-hint,.ad-shot-paste,.ad-shot-upload) { display:none; }

html.pro .content .aw-video-link { flex-direction:row; align-items:center; gap:4px; width:150px; max-width:100%; }
html.pro .content .aw-video-link .aw-url { min-width:0; flex:1; max-width:none; background:transparent; border:0; padding:2px 0; font-family:inherit; text-decoration:none; }
html.pro .content .aw-video-link .aw-url:hover { text-decoration:underline; }
html.pro .content .aw-video-link .aw-copy { display:inline-flex; align-items:center; justify-content:center; flex:0 0 28px; width:28px; min-width:28px; height:28px; padding:4px; margin:0; border:0; background:transparent; color:#657286; }
html.pro .content .aw-video-link .aw-copy:hover { background:#e8f0f8; color:#176ab3; }
.ad-image-preview { border:0; border-radius:10px; padding:40px 16px 16px; max-width:92vw; max-height:92vh; background:#fff; }
.ad-image-preview::backdrop { background:rgba(15,23,42,.75); }
.ad-image-preview img { display:block; max-width:85vw; max-height:78vh; object-fit:contain; }
.ad-image-preview button { position:absolute; right:8px; top:4px; width:32px; height:32px; padding:0; border:0; background:transparent; font-size:26px; cursor:pointer; }
.aw-shot[role="button"] { cursor:zoom-in; }


/* ===== web/src/css/80-workspace-unified.css ===== */
/* 10-20 全电脑工作台：沿用蓝灰品牌，紧凑概览、安静表格、清晰主操作。 */
html.pro .shell #workspace {
  --desk-canvas:#f3f5f7;
  --desk-surface:#fff;
  --desk-tint:#f4f7fa;
  --desk-ink:#20364c;
  --desk-secondary:#4d6075;
  --desk-line:#e1e6eb;
  background:var(--desk-canvas);
}
html.pro .shell #workspace .content {
  background:var(--desk-canvas); color:var(--desk-ink);
  font-size:15px; line-height:1.6; padding:22px 24px 28px;
}
html.pro .shell #workspace .content .section-title { margin-bottom:18px; gap:12px; flex-wrap:wrap; }
html.pro .shell #workspace .content h1 { font-size:28px; font-weight:650; letter-spacing:-.5px; line-height:1.3; color:var(--desk-ink); }
html.pro .shell #workspace .content h2 { font-size:21px; line-height:1.4; }
html.pro .shell #workspace .content h3 { font-size:17px; line-height:1.4; }
html.pro .shell #workspace .content :is(.card,.table-card,.ad-card,.dy-sec) {
  background:var(--desk-surface); border-color:var(--desk-line); border-radius:10px;
  box-shadow:none;
}
html.pro .shell #workspace .content table :is(th,td) { font-size:15px; line-height:1.5; }
html.pro .shell #workspace .content table th { background:#fafbfc; color:#586a7c; font-size:15px; font-weight:500; padding-top:10px; padding-bottom:10px; }
html.pro .shell #workspace .content table td { padding-top:10px; padding-bottom:10px; border-bottom-color:#edf0f3; }
html.pro .shell #workspace .content :is(.unified-table,.crm-list,.receipt-list) td { height:50px; }
html.pro .shell #workspace .content :is(button,input,select,textarea) { font-size:15px; }
html.pro .shell #workspace .content :is(.wb-toolbar,.order-toolbar,.ad-filterbar,.table-tools) {
  background:var(--desk-surface); padding:12px 16px; gap:8px;
}
html.pro .shell #workspace .content :is(.wb-toolbar,.ad-filterbar,.table-tools) { flex-wrap:wrap; }
html.pro .shell #workspace .content :is(.wb-toolbar,.order-toolbar,.ad-filterbar) :is(input,select,button) { min-height:36px; }
html.pro .shell #workspace .content :is(.wb-filter,.order-filter-field) { height:36px; background:#fff; border-color:#cdd9e6; font-size:14px; color:var(--desk-secondary); }
html.pro .shell #workspace .content :is(.wb-filter,.order-filter-field) select { height:34px; }
html.pro .shell #workspace .content :is(.wb-search,.order-search) { min-width:200px; }
html.pro .shell #workspace .content :is(.tiny,.badge,.pill,.cell-sub,.field-hint,.wb-footnote,.wb-title-count,.aw-url) { font-size:14px; }
html.pro .shell #workspace .content :is(.muted,.cell-sub,.field-hint,.wb-footnote,.wb-title-count) { color:var(--desk-secondary); }
html.pro .shell #workspace .content :is(.wb-view-tabs,.ad-tabs,.tabs,.seg) button { font-size:15px; min-height:36px; }
html.pro .shell #workspace .content :is(.wb-summary,.wb-month-summary) { background:#fff; padding:12px; gap:8px; flex-wrap:wrap; }
html.pro .shell #workspace .content .wb-summary :is(.kpi,.metric-card) { min-width:150px; }
html.pro .shell #workspace .content :is(.wb-summary,.wb-month-summary) :is(small,span) { font-size:14px; }
html.pro .shell #workspace .content :is(.wb-summary,.wb-month-summary) :is(b,strong,.value) { font-size:22px; font-variant-numeric:tabular-nums; }
html.pro .shell #workspace .content :is(.kpi,.metric-card) :is(.num,.value) { font-variant-numeric:tabular-nums; }
html.pro .shell #workspace .content :is(.sf-st small,.sf-st b,.sf-st em,.sf-you,.wb-current,.ad-back) { font-size:14px; }
html.pro .shell #workspace .content .sf-step { min-height:76px; }
html.pro .shell #workspace .content :is(.sf-flow,.wb-summary) { overflow-x:auto; }
html.pro .shell #workspace .content .receipt-list .id-link { font-size:14px; }
html.pro .shell #workspace .content .receipt-list .cell-sub { font-size:14px; }
html.pro .shell #workspace .content .receipt-list .row-actions button { font-size:14px; min-height:34px; }
html.pro .shell:not(.side-folded) .side .nav button:not(.nav-group) { font-size:15px; padding-top:10px; padding-bottom:10px; }
html.pro .shell .side .nav button.nav-group { font-size:13px; }
html.pro .shell #workspace .content :is(button,input,select,textarea):focus-visible { outline:2px solid #3389e5; outline-offset:2px; }
@media(max-width:1100px) {
  html.pro .shell #workspace .content { padding:22px 20px 28px; }
  html.pro .shell #workspace .content .wb-toolbar .wb-search { flex:1 1 200px; }
}
@media(max-width:760px) {
  html.pro .shell #workspace .content { padding:18px 14px 24px; }
  html.pro .shell #workspace .content h1 { font-size:25px; }
}
/* 小程序管理用独立容器，编辑区跟随工作台，右侧手机预览保留原主题。 */
html.pro .shell #workspace > .mpa { padding:28px; font-size:15px; color:var(--desk-ink); }
html.pro .shell #workspace .mpa-top { margin-bottom:24px; }
html.pro .shell #workspace .mpa-col .card { border:1px solid var(--desk-line); border-radius:10px; background:#fff; box-shadow:none; }
html.pro .shell #workspace .mpa-col :is(button,input,select,textarea,p) { font-size:15px; }
html.pro .shell #workspace .mpa-col h3 { font-size:20px; }
html.pro .shell #workspace .mpa-col .muted { color:var(--desk-secondary); }
html.pro .shell #workspace .content .cell-sub.warn { color:var(--red); }
@media(max-width:760px) { html.pro .shell #workspace > .mpa { padding:18px 14px; } }

/* 已认可的结算样板推广：色彩负责层级，页面保留自己的业务结构。 */
html.pro:has(.shell #workspace :is(.content,.mpa)) {
  --pro-clay:#24669b; --pro-clay-hover:#1c527e; --pro-clay-ink:#235f91;
  --pro-clay-tint:#e7eff7; --pro-clay-tint-2:#dae7f2;
}
html.pro .shell:has(#workspace :is(.content,.mpa)) { background:#f3f5f7; }
html.pro .shell:has(#workspace :is(.content,.mpa)) > .side { background:#f7f9fb; border-right-color:#d4dee8; }
html.pro .shell:has(#workspace :is(.content,.mpa)) > .main > .top { background:#293b4d; }
html.pro .shell:has(#workspace :is(.content,.mpa)) .side .nav button.active { color:#225e8f; background:#e4edf6; box-shadow:inset 2px 0 #24669b; }
html.pro .shell:has(#workspace :is(.content,.mpa)) .side .nav button.active .ico { color:#225e8f; }
html.pro .shell #workspace .content ::selection { background:#c9dff0; color:#172536; }
html.pro .shell #workspace .content :is(.table-wrap,.crm-list-wrap,.receipt-table-wrap) { scrollbar-color:#a9bbcc #f1f5f8; }
html.pro .shell #workspace .content :is(.section-title p,.detail-top p) { font-size:14px; color:var(--desk-secondary); margin-top:6px; }
html.pro .shell #workspace .content :is(.table-tools,.wb-toolbar,.order-toolbar) { border-bottom:1px solid #e0e7ee; }
html.pro .shell #workspace .content .table-tools h3 { font-size:18px; color:var(--desk-ink); }
html.pro .shell #workspace .content .table-tools .count { background:#edf3f8; color:#365875; font-size:14px; margin-left:10px; }
html.pro .shell #workspace .content .primary { background:#24669b; border-color:#24669b; color:#fff; box-shadow:none; }
html.pro .shell #workspace .content .primary:hover:not(:disabled) { background:#1c527e; border-color:#1c527e; }
html.pro .shell #workspace .content .primary:disabled { background:#e9eef3; border-color:#d5dfe9; color:#65768a; }
html.pro .shell #workspace .content :is(.id-link,.tc-name,.st-name) { color:#235f91; }
html.pro .shell #workspace .content table :is(th,td):first-child { padding-left:16px; }
html.pro .shell #workspace .content table :is(th,td):last-child { padding-right:16px; }
html.pro .shell #workspace .content :is(.unified-table,.crm-list) tbody tr:hover > td { background:#f1f6fb; }
html.pro .shell #workspace .content :is(.order-toolbar-grouped,.ad-filterbar) { background:#fafbfc; }
html.pro .shell #workspace .content .order-amount-summary { background:#fff; padding:14px 16px; }
html.pro .shell #workspace .content .order-amount-summary strong { font-size:26px; color:var(--desk-ink); }
/* 汇总按用途定比例：待办并列、回款保持同行，结算沿用独立样板。 */
html.pro .shell #workspace .content > .kpis:not(.wb-month-summary) { gap:0; background:#fff; border:1px solid var(--desk-line); border-radius:10px; overflow:hidden; margin-bottom:16px; }
html.pro .shell #workspace .content > .kpis:not(.wb-month-summary) > .kpi { border:0; border-radius:0; box-shadow:none; background:transparent; padding:16px 20px; }
html.pro .shell #workspace .content > .kpis:not(.wb-month-summary) > .kpi + .kpi { border-left:1px solid #e3eaf1; }
html.pro .shell #workspace .content > .kpis:not(.wb-month-summary) .label { font-size:14px; color:var(--desk-secondary); }
html.pro .shell #workspace .content > .kpis:not(.wb-month-summary) .num { font-size:32px; line-height:1.3; letter-spacing:-.5px; margin:6px 0; }
html.pro .shell #workspace .content > .kpis:not(.wb-month-summary) .foot { font-size:14px; line-height:1.5; }
html.pro .shell #workspace .receipts-refined .wb-summary { flex-wrap:nowrap; gap:0; padding:16px 8px; background:#fafbfc; }
html.pro .shell #workspace .receipts-refined .wb-summary .metric-card { flex:1 0 auto; min-width:max-content; padding:8px 16px; }
html.pro .shell #workspace .content :is(.sf-flow,.wb-view-tabs,.ad-tabs) { border-color:var(--desk-line); }
html.pro .shell #workspace .content .sf-flow { border-radius:10px 10px 0 0; padding:0; }
html.pro .shell #workspace .content .sf-step { padding:12px; min-height:64px; }
html.pro .shell #workspace .content .sf-step.on { background:#edf4fb; color:#235f91; }
html.pro .shell #workspace .content .sf-step.on .sf-dot { background:#24669b; border-color:#24669b; }
html.pro .shell #workspace .content .sf-st em { color:var(--desk-secondary); }
html.pro .shell #workspace .content .sf-you { background:#24669b; color:white; }
/* 经营数据保留指标切换，用精确选中态替代装饰色块。 */
html.pro .shell #workspace .content .dy-hero { background:#fff; border:1px solid var(--desk-line); padding:18px; border-radius:10px; box-shadow:none; }
html.pro .shell #workspace .content .dy-kpi { border-color:var(--desk-line); background:#fff; box-shadow:none; padding:16px; }
html.pro .shell #workspace .content .dy-kpi.on { background:#edf4fb; border-color:#8daecb; box-shadow:inset 0 -2px #24669b; }
html.pro .shell #workspace .content .dy-kpi > b { font-size:28px; font-variant-numeric:tabular-nums; }
html.pro .shell #workspace .content .dy-kpi > span { color:var(--desk-secondary); font-size:14px; }
html.pro .shell #workspace .content .dy-sec > header { padding:14px 18px; border-bottom:1px solid #e0e7ee; }
html.pro .shell #workspace .content .ad-card { padding:18px; }
html.pro .shell #workspace .content .ad-kpis { border:1px solid var(--desk-line); background:#fff; border-radius:10px; margin-bottom:16px; }
/* 系统设置是人员名册，不放大成营销卡片。 */
html.pro .shell #workspace .content .pgrid { gap:16px; }
html.pro .shell #workspace .content .pcard { padding:16px; border:1px solid var(--desk-line); border-radius:10px; box-shadow:none; }
html.pro .shell #workspace .content .pc-name { font-size:16px; }
html.pro .shell #workspace .content :is(.pc-note,.sys-block-head h4 span) { font-size:13px; color:var(--desk-secondary); }
html.pro .shell #workspace .content .sys-block-head { margin:20px 0 12px; }
html.pro .shell #workspace .content .sys-block-head h4 { font-size:16px; }
html.pro .shell #workspace .content .pcard:hover { border-color:#9fb5c9; }
/* 小程序管理编辑区与桌面一致，预览不染色。 */
html.pro .shell #workspace .mpa-col .table-tools { padding:14px 18px; background:#fff; border-bottom:1px solid #e0e7ee; }
html.pro .shell #workspace .mpa-col .primary { background:#24669b; border-color:#24669b; color:#fff; }
html.pro .shell #workspace .mpa-col .primary:disabled { background:#e9eef3; color:#65768a; border-color:#d5dfe9; }
@media(max-width:760px) {
 html.pro .shell #workspace .content :is(.wb-toolbar,.order-toolbar,.ad-filterbar,.table-tools) { padding:16px; }
 html.pro .shell #workspace .content > .kpis:not(.wb-month-summary) > .kpi { padding:18px; }
 html.pro .shell #workspace .content .dy-kpi { padding:16px; }
}
/* 浅色导航使用现有深色字标；业务内容不逐块延迟出现。 */
html.pro .shell:has(#workspace :is(.content,.mpa)) .brand-text .bl-dark { display:none; }
html.pro .shell:has(#workspace :is(.content,.mpa)) .brand-text .bl-light { display:block; }
html.pro .shell #workspace .pro-rise { animation:none; }
html.pro .shell:has(#workspace :is(.content,.mpa)) .top button.primary { background:#24669b; border-color:#24669b; }
html.pro .shell:has(#workspace :is(.content,.mpa)) .top button.primary:hover { background:#1c527e; border-color:#1c527e; }
html.pro .shell #workspace .content .biz-hero { background:#293b4d; border-color:#293b4d; border-radius:10px; box-shadow:none; }
html.pro .shell #workspace .content .bh-grid { background:transparent; border-radius:0; }
html.pro .shell #workspace .content .bh-cell { background:transparent; border-color:#506071; }
html.pro .shell #workspace .content .bh-cell:hover { background:#344a60; }

/* 从列表进入详情，保持同样的阅读尺度；不作用于达人手机容器。 */
html.pro:has(.shell #workspace :is(.content,.mpa)) :is(.detail-drawer,.metric-drawer,.tc-panel) { background:#fff; color:#20364c; font-size:15px; }
html.pro:has(.shell #workspace :is(.content,.mpa)) :is(.detail-drawer,.metric-drawer,.tc-panel) :is(input,select,textarea,button,td) { font-size:15px; }
html.pro:has(.shell #workspace :is(.content,.mpa)) :is(.detail-drawer,.metric-drawer,.tc-panel) :is(.detail-top h2,.drill-top h3) { font-size:24px; color:#20364c; }
html.pro:has(.shell #workspace :is(.content,.mpa)) :is(.detail-drawer,.metric-drawer,.tc-panel) :is(.cell-sub,.field-hint,.crm-kv label,.tc-kv label) { font-size:14px; }
html.pro:has(.shell #workspace :is(.content,.mpa)) :is(.detail-drawer,.metric-drawer,.tc-panel) th { font-size:14px; color:#50657b; background:#f3f6fa; }
/* 勾选列沿用窄列尺寸，不能跟随文字首列的留白。 */
html.pro .shell #workspace .content table :is(th,td).pick-col,
html.pro .shell #workspace .content table :is(th,td):has(> input[type="checkbox"]) { padding-left:6px; padding-right:6px; text-align:center; }

/* 卡片的高度跟随内容，真正的宽表只在自己的容器内滚动。 */
html.pro .shell #workspace .content > :is(.card,.grid2,.grid3) { margin-bottom:16px; }
html.pro .shell #workspace .content .card-head { padding:14px 18px; }
html.pro .shell #workspace .content .card > .empty { min-height:0; padding:24px 18px; font-size:14px; }
html.pro .shell #workspace .content .msg-row { padding:12px 18px; }
html.pro .shell #workspace .content :is(.kpi,.metric-card) { min-width:0; }
html.pro .shell #workspace .content :is(.num,.amount,.money,.right,.st-money) { font-variant-numeric:tabular-nums; }
html.pro .shell #workspace .content :is(.table-wrap,.crm-list-wrap,.receipt-table-wrap) { max-width:100%; overflow-x:auto; }
html.pro .shell #workspace .content .kpi .num { overflow-wrap:anywhere; }
html.pro .shell #workspace .content .kpi:has(.num.zero) .label::before { background:#94a0ad; }
html.pro .shell #workspace .content .sf-step { min-width:0; }
html.pro .shell #workspace .content .sf-flow { max-width:100%; }
html.pro .shell #workspace .content .ad-card:hover { box-shadow:none; }
html.pro .shell #workspace .content .wb-scroll-nav { padding:6px 16px; min-height:36px; }
@media(max-width:760px) {
 html.pro .shell #workspace .content > .kpis:not(.wb-month-summary) { grid-template-columns:repeat(2,minmax(0,1fr)); }
 html.pro .shell #workspace .content > .kpis:not(.wb-month-summary) > .kpi { padding:14px; }
 html.pro .shell #workspace .content > .kpis:not(.wb-month-summary) > .kpi:nth-child(odd) { border-left:0; }
 html.pro .shell #workspace .content > .kpis:not(.wb-month-summary) > .kpi:nth-child(n+3) { border-top:1px solid var(--desk-line); }
 html.pro .shell #workspace .content > .kpis:not(.wb-month-summary) .num { font-size:24px; }
}

/* 10-20 纠正：保留已确认的阅读字号；作品表同一列的标题与内容同向对齐。 */
html.pro .shell #workspace .content .aw-table :is(th,td) { text-align:left; padding-left:10px; padding-right:10px; vertical-align:middle; }
html.pro .shell #workspace .content .aw-table :is(th,td):nth-child(-n+2) { text-align:center; }

/* 10-20 全页阅读尺度复核：仅桌面业务区，首页及手机预览不受影响。 */
html.pro .shell .side .nav button.nav-group { font-size:14px; }
html.pro .shell #workspace .content :is(.msg-main b,.review-content p,.biz-sec,.pq-fact,.ad-progress-label strong,.age-row b,.rank-row b) { font-size:15px; }
html.pro .shell #workspace .content :is(small,.msg-done,.msg-time,.todo-aside,.aw-chip,.row-count,.bh-label,.bh-note,.kpi-go,.trend-legend span,.trend-rate span,.barcol em,.barcol > span,.age-lab,.rk-name,.rk-role,.ad-symbol,.ad-card-top .muted,.ad-card-sub,.ad-progress-label span,.sf-dot,.sf-chip,.bs-label,.sys-bar-tail,.lg-meta,.lgrp-note,.pt-l,.pt-team,.pc-scope,.pc-scope b,.settings-foot,.pq-cat,.pq-days,.review-kind,.count,.pc-note,.sys-block-head h4 span,.wb-scroll-nav > span) { font-size:14px; }
html.pro .shell #workspace .content :is(.sys-block h5,.line-group h5) { font-size:15px; }
html.pro .shell #workspace .content :is(.dy-toolbar label,.dy-filterbar label,.ad-kpis span,.mini-kpis span,.bs-tab em,td .mono) { font-size:14px; }
html.pro .shell #workspace .content .receipt-list th.money { text-align:right; }
html.pro .shell #workspace .content :is(.receipt-list .row-actions button,.aw-chip select) { font-size:15px; }
html.pro .shell #workspace .content :is(.ad-shot-upload,.ad-detail-head p,.ck,.dy-raw-tools .muted) { font-size:14px; }
html.pro:has(.shell #workspace .content) :is(.detail-drawer,.metric-drawer,.tc-panel,.drill-panel) :is(small,time,.badge,.pill,.cell-sub,.field-hint,.muted,.crm-count,.al-tag,.fee-brief-warn,.wb-current,.sf-dot,.sf-chip,.wb-detail-flow span,.order-detail-overview span,.order-detail-overview em,.ms-detail-summary > span,.ms-m,.ms-m b) { font-size:14px; }
html.pro:has(.shell #workspace .content) :is(.detail-drawer,.metric-drawer,.tc-panel,.drill-panel) :is(th,td,input,select,textarea,button,.crm-dl > div > b) { font-size:15px; }
html.pro:has(.shell #workspace .content) .order-refined-detail .detail-top p { font-size:14px; }
html.pro .shell #workspace .content :is(.notice,.table-tools > .muted,.dy-bar label,.lgrp-head h5,.brand-switch button em,.brand-tabs button em) { font-size:14px; }
html.pro:has(.shell #workspace .content) :is(.detail-drawer,.metric-drawer,.tc-panel,.drill-panel) :is(.crm-dl > div > span,.crm-money-strip span,.due-flow i,.detail-top p,.detail-fields span,.mt-stat span,.fee-brief-head span,.fee-brief-row span) { font-size:14px; }
html.pro:has(.shell #workspace .content) :is(.detail-drawer,.metric-drawer,.tc-panel,.drill-panel) :is(p b,.proof-of h4,.rp-head b,.fee-brief-head b) { font-size:15px; }
html.pro .shell #workspace .content :is(.sys-bar > span,.role-pick .chip b,.who-id,.who-also,.rv-label,.pv-chip,.perm-row,.cfg-perm-sum,.cfg-group,.cfg-num span,.bt-row i,.ad-card-foot span,.pq-note span,.pq-fact em,.pq-chip b) { font-size:14px; }
html.pro:has(.shell #workspace .content) :is(.detail-drawer,.metric-drawer,.tc-panel,.drill-panel) :is(.ex-stat span,.ex-none,.ex-stage-txt,.field-locked) { font-size:14px; }
html.pro:has(.shell #workspace .content) .detail-drawer .order-timeline li > b { font-size:15px; }
/* 旧组件把说明字号标成 important，限定桌面覆盖该旧值。 */
html.pro .shell #workspace .content .table-tools > .muted { font-size:14px !important; }
html.pro:has(.shell #workspace .content) .detail-drawer :is(.order-timeline li > p,.fee-brief-row b) { font-size:15px; }
html.pro .shell #workspace .content :is(.who-id b,.cfg-num em) { font-size:14px; }
html.pro .shell #workspace .mpa-col .mpa-form :is(label > span,.mpa-lbl,small,small b,.muted) { font-size:14px; }


/* ===== web/src/css/81-month-polish.css ===== */
/* Impeccable polish：保留结算结构，通过比例、数字与表格对齐建立阅读顺序。 */
html.pro .shell #workspace .month-refined { --month-navy:#203c5b; --month-muted:#50657b; }
html.pro .shell #workspace .month-refined .section-title { margin-bottom:18px; }
html.pro .shell #workspace .month-refined .section-title p { margin-top:10px; font-size:14px; color:var(--month-muted); }
html.pro .shell #workspace .month-refined .wb-month-summary {
  grid-template-columns:minmax(0,2fr) minmax(190px,1fr); gap:0;
  padding:0; margin-bottom:16px; overflow:hidden; background:#fff;
  border:1px solid #cfdae7; border-radius:12px; box-shadow:none;
}
html.pro .shell #workspace .month-refined .wb-month-summary .kpi { padding:18px 22px; }
html.pro .shell #workspace .month-refined .wb-month-summary .kpi .label { font-size:15px; font-weight:500; color:var(--month-muted); }
html.pro .shell #workspace .month-refined .wb-month-summary .kpi:first-child .num { font-size:44px; font-weight:650; line-height:1.25; letter-spacing:-1px; color:var(--month-navy); margin:8px 0; overflow-wrap:anywhere; }
html.pro .shell #workspace .month-refined .wb-month-summary .foot { font-size:14px; line-height:1.7; color:var(--month-muted); }
html.pro .shell #workspace .month-refined .wb-month-summary .kpi + .kpi { display:flex; flex-direction:column; justify-content:center; background:#f5f8fc; border-left:1px solid #dde6ef; }
html.pro .shell #workspace .month-refined .wb-month-summary .kpi:not(:first-child) .num { font-size:26px; color:var(--month-navy); margin-top:12px; }
html.pro .shell #workspace .month-refined .warn-notice { border-radius:8px; padding:12px 16px; margin-bottom:16px; font-size:14px; background:#fffaf1; border-color:#e9dcbf; }
html.pro .shell #workspace .month-refined .table-card { overflow:hidden; box-shadow:none; }
html.pro .shell #workspace .month-refined .table-tools { padding:14px 18px; background:#fff; border-bottom:1px solid #e0e8f1; }
html.pro .shell #workspace .month-refined .table-tools h3 { font-size:18px; color:var(--month-navy); }
html.pro .shell #workspace .month-refined .table-tools .count { background:#edf3f9; color:#365875; font-size:14px; margin-left:10px; }
html.pro .shell #workspace .month-refined table :is(th,td):first-child { padding-left:24px; }
html.pro .shell #workspace .month-refined table :is(th,td):last-child { padding-right:24px; }
html.pro .shell #workspace .month-refined table th { font-size:15px; background:#f3f6fa; color:var(--month-muted); }
html.pro .shell #workspace .month-refined table td { height:58px; }
html.pro .shell #workspace .month-refined table td:nth-child(5) { color:var(--month-navy); font-size:17px; font-variant-numeric:tabular-nums; }
html.pro .shell #workspace .month-refined .st-name { font-weight:600; color:var(--month-navy); }
html.pro .shell #workspace .month-refined .cell-sub { margin-top:5px; font-size:14px; color:var(--month-muted); }
html.pro .shell #workspace .month-refined .table-wrap { scrollbar-color:#aebfd1 #f3f6fa; }
html.pro .shell #workspace .month-refined ::selection { background:#c9dff5; color:#172536; }
@media(max-width:760px) {
 html.pro .shell #workspace .month-refined .wb-month-summary { grid-template-columns:minmax(0,1fr); }
 html.pro .shell #workspace .month-refined .wb-month-summary .kpi { padding:22px; }
 html.pro .shell #workspace .month-refined .wb-month-summary .kpi:first-child .num { font-size:36px; }
 html.pro .shell #workspace .month-refined .wb-month-summary .kpi + .kpi { border-left:0; border-top:1px solid #dde6ef; }
}


/* ===== web/src/css/81-settlement-detail.css ===== */
/* 2026-10-21 已确认样板：只在结算详情内容存在时生效。
   回款指标、消息等共用抽屉不受影响；正文 15px / 辅助 14px / 标题 28px。 */
.metric-drawer:has(.sd-content) {
  width: min(1120px, 100vw) !important;
  max-width: 100vw !important;
  background: #fcfcfb !important;
  display: flex;
  flex-direction: column;
  overflow: hidden !important;
}
.metric-drawer:has(.sd-content) .detail-top { padding: 16px 28px !important; background: #fff; border-bottom: 1px solid #e3e7eb; flex-shrink: 0; }
.metric-drawer:has(.sd-content) #metricTitle { font-size: 28px !important; line-height: 1.3; }
.metric-drawer:has(.sd-content) #metricSub { font-size: 14px !important; margin-top: 8px; color: #627080; }
#metricBody:has(> .sd-content) { display: flex; flex-direction: column; padding: 0 !important; flex: 1; min-height: 0; overflow: hidden !important; }
.sd-content { padding: 20px 28px 24px; flex: 1; min-height: 0; overflow: auto; }
.sd-overview { display: grid; grid-template-columns: 270px 1fr; gap: 28px; padding: 17px 20px; background: #edf3f7; border: 1px solid #dce5eb; border-radius: 10px; margin: 0 0 14px; }
.sd-amount { display: flex; flex-direction: column; gap: 6px; }
.sd-amount > span { font-size: 15px; color: #425c73; }
.sd-amount strong { font-size: 32px; line-height: 1.2; font-weight: 650; font-variant-numeric: tabular-nums; letter-spacing: -.7px; color: #20364c; }
.sd-amount small { font-size: 14px; color: #526b7d; }
.sd-equation { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.sd-equation > div { display: flex; flex-direction: column; gap: 10px; text-align: right; }
.sd-equation span { font-size: 14px; color: #586a79; white-space: nowrap; }
.sd-equation b { font-size: 16px; font-variant-numeric: tabular-nums; white-space: nowrap; }
.sd-equation i { font-style: normal; color: #8796a3; }
.sd-content .wb-payment-progress { margin-bottom: 10px; }
.sd-content .wb-detail-flow { background: transparent !important; border: none !important; padding: 0 !important; gap: 10px; }
.sd-content .wb-current { margin-top: 8px; padding: 8px 12px !important; background: #f0f3f5 !important; border-left: 3px solid #496c89; border-radius: 3px !important; font-size: 14px !important; }
.sd-content .pay-tabs { margin: 0 0 14px !important; position: sticky; top: -1px; z-index: 3; background: #fcfcfb; padding-top: 0; }
.sd-content .payment-detail { padding: 0 !important; background: transparent !important; }
.sd-content .doc-panel { padding: 0 !important; border: 0 !important; background: transparent !important; margin: 0 !important; }
.sd-section-heading { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin: 0 0 10px; }
.sd-section-heading h3 { font-size: 17px !important; font-weight: 650; margin: 0 !important; color: #20364c; }
.sd-section-heading > span { font-size: 14px; color: #697885; }
.sd-account { background: #fff; border: 1px solid #e1e6eb; border-radius: 8px; padding: 12px 16px; margin-bottom: 18px; }
.sd-account.has-notices { background: #fffaf5; border-color: #ead8c5; border-left: 3px solid #ad753c; }
.sd-bank { display: flex; align-items: center; gap: 24px; font-size: 15px; }
.sd-bank > span { color: #657281; font-size: 14px; }
.sd-bank b { overflow-wrap: anywhere; }
.sd-content .sd-account .doc-bad { font-size: 14px !important; line-height: 1.7 !important; background: transparent !important; padding: 6px 0 0 !important; margin: 6px 0 0 !important; border-top: 1px solid #ebdfd1; color: #8a4828 !important; }
.sd-content .sb { background: #fff; border: 1px solid #e1e6eb; border-radius: 8px; padding: 0 16px; }
.sd-content .sb-blk summary { padding: 16px 4px !important; }
.sd-content .sb-blk summary b { font-size: 15px !important; }
.sd-content .sb-blk small { font-size: 14px !important; }
.sd-content .sb-tb th, .sd-content .sb-tb td { font-size: 15px !important; white-space: nowrap; }
.sd-content .sb-tb th.num, .sd-content .sb-tb td.num { text-align: right !important; padding-right: 16px !important; }
.sd-content .sb-sum { padding: 18px 4px !important; }
.sd-content .sb-sum strong { font-size: 22px !important; }
.sd-content .sb-tools { padding-bottom: 14px; }
#metricBody > .sd-actions { position: relative !important; inset: auto !important; margin: 0 !important; padding: 12px 28px !important; background: #fff !important; border-top: 1px solid #dce2e7; box-shadow: 0 -4px 12px #20364c06; display: flex !important; gap: 10px; flex-shrink: 0; }
#metricBody > .sd-actions :is(button, .btn-like) { font-size: 15px !important; min-height: 40px; padding: 9px 15px !important; border-radius: 6px !important; }
#metricBody > .sd-actions .primary { order: 10; margin-left: auto; background: #315a77 !important; border-color: #315a77 !important; }
.metric-drawer:has(.sd-content) button:focus-visible { outline: 3px solid #7398b4; outline-offset: 3px; }
.sd-content .sb-scroll { max-width: 100%; overflow-x: auto; }
.sd-content .sb-tb { min-width: 670px; }
.sd-content .sb-blk.is-empty { opacity: .8; }
.sd-content .sb-blk.is-empty summary { padding: 12px 4px !important; }
.sd-content .sb-blk.is-empty summary i { background: #a1aab2 !important; }
.sd-content .apv-actions { display: flex; gap: 10px; }
.sd-content .al-item { font-size: 15px; }
.sd-content .wb-detail-flow span { font-size: 14px !important; }
.sd-content .wb-detail-flow span.on { color: #315a77 !important; }
.metric-drawer:has(.sd-content) .close { min-width: 36px; min-height: 36px; }
@media (max-width: 850px) {
  .sd-overview { grid-template-columns: 1fr; gap: 22px; padding: 18px; }
  .sd-equation { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
  .sd-equation > div { text-align: left; }
  .sd-equation i { display: none; }
  .sd-content { padding: 18px 18px 20px; }
  .metric-drawer:has(.sd-content) .detail-top { padding: 18px !important; }
  #metricBody > .sd-actions { padding: 12px 18px !important; flex-wrap: wrap; }
  #metricBody > .sd-actions .primary { margin-left: 0; }
  .sd-content .wb-detail-flow { flex-wrap: wrap; }
  .sd-section-heading { align-items: flex-start; flex-wrap: wrap; }
  .sd-bank { flex-wrap: wrap; gap: 10px; }
  .sd-content .pay-tabs { overflow-x: auto; white-space: nowrap; }
  .sd-content .pay-tabs button { flex-shrink: 0; }
}
@media (max-width: 600px) {
  .metric-drawer:has(.sd-content) .detail-top { padding: 16px 18px !important; }
  .sd-overview { gap: 16px; }
  .sd-content .wb-detail-flow { row-gap: 10px; }
  #metricBody > .sd-actions button { padding: 8px 10px !important; }
  #metricBody > .sd-actions .primary { width: 100%; order: -1; }
}


/* ===== web/src/css/82-payments-view.css ===== */
/* 仅财务付款页，沿用已确认的 28/15/14 字号。 */
.pf-page{--pf-ink:#243c32;--pf-muted:#67706b;max-width:1600px;margin:auto}.pf-page .pf-sub{font-size:15px;color:var(--pf-muted);margin:7px 0 0}.pf-stage{display:flex;justify-content:space-between;align-items:center;gap:18px;margin:28px 0 18px}.pf-page .pf-stage h2{font-size:20px!important;font-weight:650;margin:0 0 7px}.pf-stage p{font-size:15px;color:var(--pf-muted);margin:0;line-height:1.7}.pf-role{font-size:14px;color:var(--pf-muted);white-space:nowrap}.pf-selection{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));border-bottom:1px solid #e0e4df;background:#fafbf8;padding:22px 8px}.pf-selection>div{padding:0 24px;border-right:1px solid #e1e5df}.pf-selection>div:last-child{border:0}.pf-selection span{display:block;font-size:14px;color:var(--pf-muted);margin-bottom:8px}.pf-selection strong{font-size:28px;font-weight:650;letter-spacing:-.5px;color:var(--pf-ink);font-variant-numeric:tabular-nums}.pf-selection .pf-warning strong{color:#946820}.pf-page .sf-batch{overflow:visible;border:1px solid #dce2db;border-radius:9px;box-shadow:none}.pf-page .table-wrap{overflow-x:auto;max-width:100%}.pf-page .sf-batch table{min-width:980px}.pf-page .sf-batch td{padding-top:19px!important;padding-bottom:19px!important;font-size:15px!important}.pf-page .sf-batch th{font-size:14px!important}.pf-page .sf-batch .cell-sub{font-size:14px!important;margin-top:6px}.pf-page .sf-batch .tiny{font-size:15px!important}.pf-page .pf-picked td{background:#f7faf6}.pf-page .sf-bar{position:sticky;bottom:0;z-index:3;background:#f0f4ee;border-top:1px solid #d5dfd0;box-shadow:0 -3px 12px #243c3206;padding:18px 22px;display:flex;gap:18px;flex-wrap:wrap;border-radius:0 0 9px 9px}.pf-page .sf-bar small{display:block;font-size:14px;color:#666e65;margin-top:6px}.pf-page .sf-bar button{min-height:40px;font-size:15px!important}.pf-missing{display:block;font-size:14px;color:#946820;margin-bottom:8px}.pf-export-note{font-size:14px;color:#757d77;line-height:1.8;margin:14px 0}.pf-page button:focus-visible,.pf-page input:focus-visible{outline:2px solid #3f7253;outline-offset:3px}.pf-page .num{font-variant-numeric:tabular-nums}.pf-page .sf-bar .primary{background:#345c45;border-color:#345c45}.pf-page .sf-bar .primary:disabled{opacity:.45}
@media(max-width:700px){.pf-stage{align-items:flex-start;flex-direction:column}.pf-selection{grid-template-columns:1fr;padding:0 18px}.pf-selection>div{border-right:0;border-bottom:1px solid #e1e5df;padding:16px 0}.pf-page .sf-bar{position:relative;padding:16px}.pf-page .section-title{flex-wrap:wrap}.pf-role{white-space:normal}}
.pf-page .section-title{margin-bottom:18px}.pf-page .pf-stage{margin:18px 0 14px}.pf-page .pf-selection{padding-top:16px;padding-bottom:16px}.pf-page .sf-batch td{padding-top:14px!important;padding-bottom:14px!important}
.pf-page .sf-batch td:nth-child(3),.pf-page .sf-batch td:nth-child(4){white-space:nowrap}
.pf-page .sf-bar>span>b{font-size:15px!important}


/* ===== web/src/css/82-workspace-visibility.css ===== */
/* 固定浮层必须使用与底部工具栏相同的可用视口；高度随换行和缩放更新。 */
body:has(#devbar) { padding-bottom:var(--devbar-height,46px); }
@media(min-width:761px) {
  body:has(#devbar) .side { bottom:auto; height:calc(100dvh - var(--devbar-height,46px)); }
}
:is(.modal,.detail-mask,.metric-mask,.peek-mask,.drill-mask) { bottom:var(--devbar-height,0px); }
.modal .dialog { max-height:calc(100dvh - var(--devbar-height,0px) - 36px); }
:is(.detail-drawer,.metric-drawer,.drill-panel) { overscroll-behavior:contain; }

/* 常用条件留在首层；补充条件在页面内展开，避免浮层遮住列表。 */
html.pro .order-filter-row { align-items:flex-start; }
.order-more-filters { min-width:0; max-width:100%; }
.order-more-filters > summary { display:flex; align-items:center; gap:10px; min-height:42px; padding:8px 12px; border:1px solid #cdd9e6; border-radius:6px; background:#fff; color:#294963; cursor:pointer; list-style:none; }
.order-more-filters > summary::-webkit-details-marker { display:none; }
.order-more-filters > summary > span { flex-shrink:0; font-weight:600; }
.order-more-filters > summary b { font-weight:400; color:#52677b; overflow-wrap:anywhere; }
.order-more-filters > summary i { margin-left:auto; font-style:normal; }
.order-more-filters[open] > summary i { transform:rotate(180deg); }
.order-more-filters[open] { flex-basis:100%; }
.order-more-fields { display:flex; flex-wrap:wrap; gap:10px; padding:14px 0 0; }
.order-more-fields .order-filter-field { max-width:100%; }
html.pro .order-more-fields .order-filter-field select { min-width:0; max-width:280px; }
html.pro .order-filter-row .order-month-filter[open] { flex-basis:100%; max-width:100%; }
html.pro .order-filter-row .order-month-filter[open] summary { width:fit-content; max-width:100%; }
html.pro .order-filter-row .order-month-pop { position:static; width:min(440px,100%); max-width:100%; margin-top:10px; padding:16px; box-shadow:none; background:#f4f7fa; }
html.pro .order-filter-row .order-month-pop p { color:#53687c; font-size:14px; }
html.pro .order-filter-row .order-month-inputs input { min-width:0; }
.order-more-filters > summary:focus-visible,.order-month-filter > summary:focus-visible { outline:2px solid #24669b; outline-offset:3px; }

/* 详情长文本完整展示，金额和状态保持各自的对齐。 */
.dy-peek .metric-drawer:has(.dy-bp) { width:min(820px,96vw); }
.dy-peek-row.dy-bp-row { gap:16px; align-items:start; }
.dy-bp-row > div:first-child { min-width:0; }
.dy-bp-row > div:first-child small { white-space:normal; overflow:visible; overflow-wrap:anywhere; }
.dy-bp-row .mono { overflow-wrap:anywhere; }
.dy-peek .metric-body { padding-bottom:28px; }
.dy-bp-bar { flex-wrap:wrap; }
@media(max-width:600px) {
  .dy-peek-row.dy-bp-row { grid-template-columns:minmax(0,1fr) auto; }
  .dy-bp-row > div:first-child { grid-column:1/-1; }
  .dy-bp-row .num { text-align:left; }
  .dy-bp-bar .seg { margin-left:0; flex-wrap:wrap; }
  .order-more-fields .order-filter-field { flex:1 1 180px; }
}

/* 主回款表横向滚动时保留操作入口，其他回款子表不套用。 */
html.pro .receipts-refined [data-scope="receipts"] .receipt-list th:last-child,
html.pro .receipts-refined [data-scope="receipts"] .receipt-list td.row-actions { position:sticky; right:0; z-index:2; background:#fff; box-shadow:-1px 0 0 #d3dee7; }
html.pro .receipts-refined [data-scope="receipts"] .receipt-list th:last-child { z-index:5; background:#f3f6fa; }
html.pro .receipts-refined [data-scope="receipts"] .receipt-list tr:hover td.row-actions { background:#f1f6fa; }

.wb-scroll-nav[hidden] { display:none; }
.wb-scroll-nav { display:flex; align-items:center; justify-content:flex-end; gap:8px; padding:8px 16px; background:#f4f7fa; border-top:1px solid #e2e9ef; color:#4d6075; }
.wb-scroll-nav > span { margin-right:auto; font-size:13px; }
html.pro .shell #workspace .content .wb-scroll-nav button { min-width:36px; height:30px; padding:0 10px; border:1px solid #cdd9e6; border-radius:5px; background:#fff; color:#294963; font-size:18px; }
.wb-scroll-nav button:disabled { opacity:.35; cursor:default; }

/* 四项统计保持同一行，说明在各自单元内换行，不再藏到横向滚动区。 */
html.pro .shell #workspace .receipts-refined .wb-summary { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); overflow:visible; gap:0; padding:16px 8px; }
html.pro .shell #workspace .receipts-refined .wb-summary .metric-card { display:flex; flex-wrap:wrap; align-content:center; justify-content:flex-start; min-width:0; width:auto; gap:4px 8px; padding:6px 12px; white-space:normal; }
html.pro .shell #workspace .receipts-refined .wb-summary .metric-card small { flex-basis:100%; overflow-wrap:anywhere; }
.dy-peek .detail-top { position:sticky; top:0; z-index:3; background:#fff; border-bottom:1px solid #d3dee7; }
.dy-bp-row, .dy-bp-row .mono, .dy-bp-row small { font-size:14px; line-height:1.55; }
@media(max-width:600px) { html.pro .shell #workspace .receipts-refined .wb-summary { grid-template-columns:repeat(2,minmax(0,1fr)); } }

/* 其他工作台的长详情、表头筛选和宽表同样使用可用视口。 */
.column-filter { max-width:calc(100vw - 16px); overflow:auto; overscroll-behavior:contain; }
.column-filter .cf-list { min-height:48px; }
.column-filter .cf-foot { position:sticky; bottom:-12px; padding:10px 0 2px; background:#fff; border-top:1px solid #e2e9ef; }
.column-filter :is(input,button,select) { font-size:14px; }
.column-filter .cf-opt { white-space:normal; overflow-wrap:anywhere; }
.metric-drawer > .detail-top { position:sticky; top:0; z-index:8; background:#fff; border-bottom:1px solid #d3dee7; }
.metric-drawer > .detail-top > div { min-width:0; }
.metric-drawer > .detail-top p { white-space:normal; overflow-wrap:anywhere; }
.metric-drawer > .detail-top .close { flex-shrink:0; }
.metric-mask:has(.ms-detail) .metric-drawer { width:min(960px,96vw); }
.ms-detail .table-wrap { min-height:0; max-height:none; overflow-x:auto; }
.ms-detail .table-wrap table { min-width:640px; }
.ms-detail .ms-product-wrap td:first-child { min-width:220px; max-width:420px; white-space:normal; overflow-wrap:anywhere; }
.ms-detail-pager { display:flex; flex-wrap:wrap; gap:10px; align-items:center; }
.drill-panel,.peek-panel { min-height:0; }
.drill-top,.peek-top { flex-shrink:0; }
.drill-body { min-height:0; overscroll-behavior:contain; }
html.pro:has(.shell) :is(.metric-drawer,.drill-panel) :is(.drill-tb,.tc-kv,.dw-kv,.payment-detail) { font-size:14px; }
html.pro:has(.shell) :is(.metric-drawer,.drill-panel) :is(.tc-kv span,.dw-kv small,.drill-tb th,.drill-top p) { color:#50657b; font-size:14px; }
html.pro:has(.shell) .modal .dialog-head { position:sticky; top:0; z-index:8; background:#fff; }
html.pro .shell #workspace .content .aw-filters { align-items:flex-start; }
.aw-filters > .al-search { flex:1 1 260px; min-width:180px; }
.aw-filters .order-more-filters { flex:0 1 auto; }
.aw-filters .order-more-filters[open] { flex-basis:100%; }
.aw-filters .order-more-fields select { max-width:100%; min-width:150px; flex:1 1 180px; }
html.pro:has(.shell) .wb-scroll-nav button { min-width:36px; height:30px; padding:0 10px; border:1px solid #cdd9e6; border-radius:5px; background:#fff; color:#294963; font-size:18px; }
html.pro:has(.shell) .wb-scroll-nav button:disabled { opacity:.35; }

/* 操作提示避开本地身份栏，不能只露出上半行。 */
body:has(.shell) #toastStack { bottom:calc(var(--devbar-height,0px) + 24px); max-width:calc(100vw - 32px); }
body:has(.shell) #toast.toast { bottom:calc(var(--devbar-height,0px) + 24px); }


/* ===== web/src/css/83-ad-collaboration.css ===== */
.ad-auth-cell{display:flex;flex-direction:column;align-items:flex-start;gap:5px;min-width:88px}
.collab-work-row{display:flex;width:100%;gap:12px;align-items:center;text-align:left;padding:14px 0;border:0;border-bottom:1px solid var(--line,#e8ebef);background:transparent;color:inherit;cursor:pointer}
.collab-work-row .collab-row-main{display:flex;flex:1;min-width:0;flex-direction:column;gap:5px}
.collab-row-main b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px}
.collab-row-main small{color:#727d8b;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.collab-work-row .wk-badge{flex-shrink:0;font-size:11px;max-width:115px;white-space:normal}
.collab-work-row .collab-arrow{color:#9aa3af;font-size:20px}
.collab-detail{padding:8px 2px 0;min-width:0;overflow-wrap:anywhere}.collab-detail .t5-kv{gap:12px}.collab-detail .t5-kv b{min-width:0;text-align:right}
.collab-detail section{margin:20px 0}.collab-detail h4{margin:0 0 9px;font-size:14px}.collab-text{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.75;font-size:14px;margin:8px 0;color:#344053}
.collab-shot{display:block;max-width:100%;height:auto;border-radius:10px}.collab-wide{width:100%;margin:14px 0}.collab-warning{color:#b93838;background:#fff1f0;border-radius:8px;padding:10px}
.collab-filter{display:flex;gap:8px;margin:10px 0;min-width:0}.collab-filter select{min-width:0;flex:1;max-width:100%;font-size:13px}.collab-filter .collab-month{flex:1.2}
.collab-requirement{display:flex;align-items:center;gap:8px;justify-content:space-between;margin-bottom:10px}.collab-detail details{padding:10px 0;border-top:1px solid #edf0f4}.collab-detail summary{cursor:pointer;font-size:13px;color:#526073}
.mpn-choice-list{display:flex;flex-wrap:wrap;gap:8px;max-height:160px;overflow:auto;padding:10px 0}.mpn-choice-list label{display:flex;align-items:center;gap:5px;font-size:13px}.mpn-choice-list input{width:auto}

.collab-filter input {min-width:0;max-width:100%;}
/* 旧封面墙的状态角标是绝对定位；列表和详情必须跟随正文排版。 */
.collab-work-row .wk-badge,.collab-detail > .wk-badge{position:static;display:inline-block;left:auto;bottom:auto;line-height:1.35;padding:4px 7px;backdrop-filter:none;color:#657082;background:#eef0f4}
.collab-work-row .wk-badge.green,.collab-detail > .wk-badge.green{color:#28714b;background:#e8f5ec}
.collab-work-row .wk-badge.orange,.collab-detail > .wk-badge.orange{color:#926417;background:#fff3dd}
.collab-work-row .wk-badge.red,.collab-detail > .wk-badge.red{color:#b54545;background:#fff0f0}
.collab-detail > .wk-badge{margin-bottom:12px}
.collab-filter .collab-month{height:33px;border:1px solid #e3e4e8;border-radius:8px;background:#fff;color:inherit;padding:5px 8px;font:inherit;font-size:13px;box-sizing:border-box}


/* ===== web/src/css/84-talent-insights.css ===== */
/* 10-20 已认可的统计原型：概览紧凑，任务进度只呈现一次，图表按实际数据收紧。 */
html .phone.t5.tv .st-refined { padding-bottom:16px; }
html .phone.t5.tv .st-heading { display:flex; align-items:center; justify-content:space-between; gap:8px; padding:8px 0 0; }
html .phone.t5.tv .st-heading h2 { margin:0; font-size:22px; font-weight:650; white-space:nowrap; }
html .phone.t5.tv .st-datebar { display:flex; align-items:center; gap:2px; min-width:0; }
html .phone.t5.tv .st-datebar b { font-size:14px; font-weight:600; white-space:nowrap; font-variant-numeric:tabular-nums; }
html .phone.t5.tv .st-datebar button { display:grid; place-items:center; width:44px; height:44px; border:0; border-radius:8px; background:transparent; padding:12px; color:var(--t5-accent); }
html .phone.t5.tv .st-datebar button:disabled { color:#c8bfce; }
html .phone.t5.tv .st-datebar svg { width:16px; height:16px; }
html .phone.t5.tv .st-scope { color:var(--t5-sub); font-size:12px; line-height:1.5; margin:0 0 12px; overflow-wrap:anywhere; }
html .phone.t5.tv .st-overview { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); align-items:start; background:#fff; border:1px solid var(--t5-line); border-radius:14px; margin-bottom:12px; padding:14px 16px; }
html .phone.t5.tv .st-overview button { border:0; background:none; border-radius:0; padding:0; margin:0; font:inherit; color:inherit; text-align:left; min-width:0; min-height:60px; }
html .phone.t5.tv .st-overview button + button { padding-left:20px; margin-left:8px; border-left:1px solid var(--t5-line); }
html .phone.t5.tv .st-overview button > span { display:flex; align-items:center; gap:4px; font-size:12px; color:var(--t5-sub); line-height:1.5; }
html .phone.t5.tv .st-overview svg { width:12px; height:12px; }
html .phone.t5.tv .st-overview strong { display:block; font-size:30px; line-height:1.25; font-weight:600; font-variant-numeric:tabular-nums; margin:4px 0; letter-spacing:-.5px; }
html .phone.t5.tv .st-overview strong small { font-size:14px; font-weight:400; margin-left:5px; color:var(--t5-sub); letter-spacing:0; }
html .phone.t5.tv .st-refined .st-card { padding:16px; border-radius:14px; margin-bottom:12px; box-shadow:none; }
html .phone.t5.tv .st-refined .st-h { align-items:center; gap:8px; margin-bottom:8px; }
html .phone.t5.tv .st-refined .st-h > b { font-size:16px; font-weight:650; }
html .phone.t5.tv .st-text-link { display:inline-flex; align-items:center; justify-content:flex-end; gap:2px; min-height:44px; margin:-10px 0; padding:0; border:0; background:none; color:var(--t5-accent); font-size:12px; white-space:nowrap; }
html .phone.t5.tv .st-text-link svg { width:13px; height:13px; }
html .phone.t5.tv .st-task-summary { display:flex; justify-content:space-between; align-items:center; gap:8px; font-size:13px; color:var(--t5-sub); margin-top:12px; }
html .phone.t5.tv .st-task-summary b { color:var(--t5-ink); }
html .phone.t5.tv .st-task-summary small { font-size:12px; }
html .phone.t5.tv .st-task-track { display:block; height:5px; background:#eee8f1; border-radius:3px; overflow:hidden; margin:10px 0 4px; }
html .phone.t5.tv .st-task-track i { display:block; height:100%; background:var(--t5-accent); border-radius:3px; }
html .phone.t5.tv .st-task-row { width:100%; display:flex; flex-direction:column; gap:6px; border:0; border-bottom:1px solid var(--t5-line); border-radius:0; background:none; padding:12px 0; text-align:left; color:var(--t5-ink); }
html .phone.t5.tv .st-task-row:last-child { border-bottom:0; padding-bottom:0; }
html .phone.t5.tv .st-task-row > b { display:flex; align-items:center; gap:6px; font-size:14px; font-weight:600; line-height:1.5; overflow-wrap:anywhere; }
html .phone.t5.tv .st-task-row > b svg { flex:none; width:14px; height:14px; color:var(--t5-sub); }
html .phone.t5.tv .st-task-count { display:flex; flex-wrap:wrap; justify-content:space-between; align-items:center; gap:4px 8px; width:100%; }
html .phone.t5.tv .st-task-row small { color:var(--t5-sub); font-size:12px; font-variant-numeric:tabular-nums; }
html .phone.t5.tv .st-task-row em { font-size:12px; font-style:normal; color:var(--t5-accent); }
html .phone.t5.tv .st-task-row em.ok { color:var(--t5-ok); }
html .phone.t5.tv .st-task-row em.late { color:var(--t5-warn); }
html .phone.t5.tv .st-task-meter { display:flex; width:100%; align-items:center; gap:10px; }
html .phone.t5.tv .st-task-meter .st-task-track { flex:1; margin:0; }
html .phone.t5.tv .st-subhead { display:flex; align-items:center; justify-content:space-between; gap:8px; margin:8px 0 2px; }
html .phone.t5.tv .st-subhead b { font-size:13px; font-weight:600; }
html .phone.t5.tv .st-subhead small { font-size:12px; color:var(--t5-sub); }
html .phone.t5.tv .st-distribution + .st-trend { margin-top:6px; border-top:1px solid var(--t5-line); }
html .phone.t5.tv .st-refined .st-trow { grid-template-columns:62px minmax(20px,1fr) 88px; min-height:44px; padding:6px 0; gap:8px; }
html .phone.t5.tv .st-refined .st-tbar { height:5px; }
html .phone.t5.tv .st-refined .st-tbar i.all { opacity:.85; }
html .phone.t5.tv .st-refined .st-tval { display:flex; align-items:center; gap:2px; justify-content:flex-end; font-size:12px; }
html .phone.t5.tv .st-refined .st-tval small { margin-left:4px; font-size:12px; min-width:28px; text-align:right; }
html .phone.t5.tv .st-refined .st-tval svg { width:12px; height:12px; }
html .phone.t5.tv .st-refined .st-cols { padding-top:4px; margin-top:6px; background:none; }
html .phone.t5.tv .st-refined .st-col { opacity:1; min-width:0; }
html .phone.t5.tv .st-refined .st-col em { font-weight:400; }
html .phone.t5.tv .st-refined .st-stack { width:20px; min-height:2px; background:#e8e1ec; border-radius:3px 3px 0 0; }
html .phone.t5.tv .st-refined .st-col small { font-size:12px; color:var(--t5-sub); padding:4px; }
html .phone.t5.tv .st-refined .st-col.on small { color:var(--t5-accent); font-weight:600; }
html .phone.t5.tv .st-refined .st-legend { justify-content:flex-start; margin:10px 0 0; gap:12px; font-size:12px; flex-wrap:wrap; }
html .phone.t5.tv .st-refined button:focus-visible { outline:2px solid var(--t5-accent); outline-offset:2px; }
@media(max-width:360px) {
  html .phone.t5.tv .st-heading { flex-wrap:wrap; gap:0; }
  html .phone.t5.tv .st-heading h2 { font-size:20px; }
  html .phone.t5.tv .st-datebar { margin-left:auto; }
  html .phone.t5.tv .st-datebar b { font-size:13px; }
  html .phone.t5.tv .st-refined .st-card { padding:14px; }
}
html .phone.t5.tv .st-refined .st-advice-card { padding-bottom:0; overflow:hidden; border-color:#ded0e7; }
html .phone.t5.tv .st-advice-latest { display:block; width:100%; text-align:left; padding:14px; background:#f7f3fa; color:var(--t5-ink); border:0; border-radius:12px; margin-bottom:16px; }
html .phone.t5.tv .st-advice-meta { display:flex; flex-direction:column; gap:6px; }
html .phone.t5.tv .st-advice-meta > span { font-size:11px; font-weight:600; color:var(--t5-accent); }
html .phone.t5.tv .st-advice-meta small { font-size:10px; color:var(--t5-sub); }
html .phone.t5.tv .st-advice-latest p { font-size:14px; line-height:1.8; white-space:pre-wrap; overflow:hidden; display:-webkit-box; -webkit-line-clamp:4; -webkit-box-orient:vertical; margin:10px 0 12px; overflow-wrap:anywhere; }
html .phone.t5.tv .st-advice-open { display:flex; align-items:center; gap:2px; font-size:11px; color:var(--t5-accent); }
html .phone.t5.tv .st-advice-open svg { width:13px; height:13px; }
html .phone.t5.tv .st-advice-older button { display:flex; align-items:center; width:100%; gap:10px; padding:12px 0; background:none; border:0; border-top:1px solid var(--t5-line); border-radius:0; text-align:left; }
html .phone.t5.tv .st-advice-older button > span { flex:1; min-width:0; }
html .phone.t5.tv .st-advice-older small { color:var(--t5-sub); font-size:10px; }
html .phone.t5.tv .st-advice-older b { display:block; font-weight:400; font-size:12px; line-height:1.6; color:var(--t5-ink); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; margin-top:3px; }
html .phone.t5.tv .st-advice-older svg { width:14px; height:14px; color:var(--t5-sub); }
html .phone.t5.tv .st-advice-empty { padding:0 0 16px; }
html .phone.t5.tv .st-advice-empty b { font-size:13px; font-weight:500; }
html .phone.t5.tv .st-advice-empty p { color:var(--t5-sub); font-size:12px; line-height:1.7; margin:6px 0 0; }
html .phone.t5.tv .st-advice-history button { display:block; position:relative; width:100%; border:0; border-bottom:1px solid var(--t5-line); border-radius:0; background:none; text-align:left; padding:16px 22px 16px 0; }
html .phone.t5.tv .st-advice-history small { font-size:11px; color:var(--t5-sub); }
html .phone.t5.tv .st-advice-history p { margin:8px 0 0; font-size:14px; line-height:1.8; color:var(--t5-ink); white-space:pre-wrap; overflow-wrap:anywhere; }
html .phone.t5.tv .st-advice-history svg { position:absolute; right:0; top:20px; width:15px; height:15px; color:var(--t5-sub); }
html .phone.t5.tv .st-shipment-detail .t5-kv b { min-width:0; overflow-wrap:anywhere; }
html .phone.t5.tv .st-shipment-note { color:var(--t5-sub); font-size:12px; line-height:1.8; margin:12px 0; }
html .phone.t5.tv .st-shipment-trace { margin-top:20px; border-top:1px solid var(--t5-line,#eee8f1); padding-top:16px; }
html .phone.t5.tv .st-trace-head { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:14px; }
html .phone.t5.tv .st-trace-head h3 { font-size:16px; margin:0; }
html .phone.t5.tv .st-trace-head button { min-height:36px; padding:6px 0 6px 12px; font-size:13px; }
html .phone.t5.tv .st-trace-message, html .phone.t5.tv .st-trace-empty { border-radius:12px; padding:14px; background:var(--t5-bg,#f7f5f8); color:var(--t5-sub); font-size:13px; line-height:1.7; margin:0 0 16px; }
html .phone.t5.tv .st-trace-empty p { margin:6px 0 0; }
html .phone.t5.tv .st-shipment-trace .trace-list { margin:0 0 0 5px; gap:20px; padding-left:20px; border-left-color:#e7e0eb; }
html .phone.t5.tv .st-shipment-trace .trace-list li { font-size:13px; line-height:1.7; color:var(--t5-sub); gap:4px; overflow-wrap:anywhere; }
html .phone.t5.tv .st-shipment-trace .trace-list li::before { left:-25px; top:8px; background:#d4cbd9; box-shadow:0 0 0 4px #fff; }
html .phone.t5.tv .st-shipment-trace .trace-list li:first-child { color:var(--t5-text,#27212d); }
html .phone.t5.tv .st-shipment-trace .trace-list li:first-child::before { background:var(--t5-accent); }
html .phone.t5.tv .st-shipment-trace .trace-list small { color:var(--t5-sub); font-size:11px; }
html .phone.t5.tv .st-trace-source { margin:16px 0 0; color:var(--t5-sub); font-size:11px; }
html .phone.t5.tv .st-trace-alert { color:#a33c36; background:#fff3f1; border-radius:8px; padding:10px 12px; font-size:13px; }
.express-add select.express-company, .express-item select.express-company { width:104px; min-width:90px; max-width:100%; font-size:12px; }
.express-add { flex-wrap:wrap; }

html .phone.t5.tv .st-refined .st-analysis { padding-top:12px; padding-bottom:12px; }

html .phone.t5.tv .st-guidance-source { display:block; color:var(--t5-sub); font-size:11px; margin-top:-6px; }
html .phone.t5.tv .st-guidance-summary { font-size:14px; line-height:1.8; margin:14px 0; overflow-wrap:anywhere; }
html .phone.t5.tv .st-guidance-step { display:flex; align-items:flex-start; gap:10px; padding:14px 0; border-top:1px solid var(--t5-line); }
html .phone.t5.tv .st-guidance-step > div { min-width:0; flex:1; }
html .phone.t5.tv .st-guidance-index { flex:0 0 22px; height:22px; border-radius:50%; background:var(--t5-bg); color:var(--t5-accent); text-align:center; font-size:12px; line-height:22px; }
html .phone.t5.tv .st-guidance-step b { font-size:14px; line-height:1.6; }
html .phone.t5.tv .st-guidance-step p { margin:7px 0; color:var(--t5-sub); font-size:13px; line-height:1.8; overflow-wrap:anywhere; }
html .phone.t5.tv .st-guidance-step .st-text-link { white-space:normal; text-align:left; min-height:32px; }


/* ===== web/src/css/85-desktop-refinement.css ===== */
/* 电脑端局部精简：保留操作入口，空内容不撑开卡片。 */
html.pro .shell #workspace .section-title { margin-bottom: 20px; }
html.pro .shell #workspace :is(.wb-toolbar,.order-toolbar,.ad-filterbar,.table-tools) { padding: 12px 16px; gap: 8px; align-items: center; }
html.pro .shell #workspace .card-head { gap: 12px; flex-wrap: wrap; }
html.pro .shell #workspace .card-head > h3 { margin: 0; }
html.pro .shell #workspace .card-head :is(button,label.ad-upload) { display: inline-flex; align-items: center; justify-content: center; min-height: 34px; line-height: 1.35; }
html.pro .shell #workspace .ad-brief .padded:empty,
html.pro .shell #workspace .ad-brief .chips:empty,
html.pro .shell #workspace .ad-brief .brief-text:empty,
html.pro .shell #workspace .so-brief-main:empty,
html.pro #importPreview:empty { display: none; }
html.pro .shell #workspace .ad-brief > .ad-brief-side:only-child { grid-column: 1 / -1; }
html.pro .shell #workspace .ad-brief:has(> .so-brief-main:empty) { grid-template-columns: 1fr; }
html.pro .shell #workspace .desk-chart-grid > .card:only-child { grid-column: 1 / -1; }
html.pro .mt-panel .mt-amount-action { display: flex; justify-content: flex-end; padding: 0 0 16px; }
html.pro .mt-panel .mt-sec > h4 { display: none; } /* 页签已标示同一标题和数量 */
html.pro .mt-panel .mt-sec .empty { padding: 20px 16px; min-height: 0; }
html.pro .shell #workspace .ad-brief :is(.notice-add,.sample-add) { gap: 10px; align-items: start; }

html.pro .shell #workspace .ad-brief-compact { grid-template-columns: 1fr; gap: 16px; }
html.pro .shell #workspace .ad-brief-compact > .ad-req .card-head { padding: 14px 20px; }
html.pro .shell #workspace .ad-brief-compact > .ad-brief-side { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 16px; align-items: start; }
html.pro .shell #workspace .ad-brief-compact > .ad-brief-side > .card:only-child { grid-column: 1 / -1; }
@media(max-width:760px) { html.pro .shell #workspace .ad-brief-compact > .ad-brief-side { grid-template-columns: 1fr; } }

/* 没有补充条件的订单工具栏只留搜索行，不保留空白筛选区。 */
html.pro .order-toolbar-grouped > .order-query-row:only-child { padding-bottom:0; }
/* 日期筛选统一走表头后，笔记本宽度也必须保留下单日期列。 */
html.pro .crm-order-list .c-date { display:table-cell; white-space:nowrap; }
/* 项目概览仅展示有内容的统计，剩余卡片均分可用宽度。 */
html.pro .shell #workspace .ad-kpis.ad-summary-active {
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
}


/* ===== web/src/css/86-brand-metal.css ===== */
/* Approved silver-blue gallery; shared homepage and login. */
.chrome-stage{position:absolute;width:66%;height:100%;right:-3%;top:0;pointer-events:none;opacity:0;transition:opacity .35s}
.chrome-stage canvas{display:block;width:100%!important;height:100%!important;}
.shader-ready .chrome-stage{opacity:1}
.shader-ready .bg-gallery-art{opacity:0}
.enhanced .bg-gallery-veil{background:linear-gradient(90deg,#eef2f5 0%,#eef2f5eb 23%,#eef2f54d 44%,transparent 62%)}
.enhanced .bg-gallery{background:radial-gradient(ellipse at 72% 34%,#fff 0%,#eff4f8 43%,#dce6ee 100%)}
.enhanced .gallery-copy{max-width:650px}
.enhanced .gallery-cta{border-radius:7px;box-shadow:0 10px 28px #20394f1c}
.enhanced .gallery-nav .intro-login{background:#ffffff6b;backdrop-filter:blur(14px)}
.enhanced .gallery-hero-foot{bottom:38px}
.enhanced .gallery-lede{color:#597084}
.enhanced .gallery-copy h1 em{color:#6b8599}
@media(max-width:767px){
  .chrome-stage{width:115%;height:480px;top:325px;right:-24%}
  .enhanced .bg-gallery-veil{background:linear-gradient(180deg,#eef2f5 0%,#eef2f5ed 23%,#eef2f540 48%,transparent 66%)}
  .enhanced .gallery-hero{align-items:flex-start;padding-top:142px;min-height:850px}
  .enhanced .gallery-copy{padding-top:0;max-width:100%}
  .enhanced .gallery-copy h1{font-size:46px;margin-bottom:20px}
  .enhanced .gallery-lede{font-size:13px;line-height:1.9}
  .enhanced .gallery-eyebrow{font-size:9px;letter-spacing:.12em;margin-bottom:22px}
  .enhanced .gallery-cta{padding:13px 18px;margin-top:22px;gap:38px}
  .enhanced .gallery-hero-foot{bottom:32px;gap:12px}
  .enhanced>.bg-gallery{min-height:850px}
  .enhanced .bg-gallery-art{top:340px;height:470px}
}
@media(prefers-reduced-motion:reduce){.chrome-stage{transition:none}}
/* The same material supports the login form, with quieter contrast behind copy. */
.gallery-login.enhanced .chrome-stage{width:60%;height:85%;right:14%;top:22%}
.gallery-login.enhanced.shader-ready .chrome-stage{opacity:.68}
.gallery-login.enhanced .bg-gallery-veil{background:linear-gradient(110deg,#eef2f5ed 0%,#eef2f5a8 34%,#eef2f510 62%,#eef2f54d 100%)}
.gallery-login.enhanced .login-card{border:1px solid #ffffffd9;border-radius:14px;background:#ffffffeb;box-shadow:0 24px 80px #25456312}
.gallery-login.enhanced .login-hero h1{color:#263f55}
.gallery-login.enhanced .login-hero>p:last-child{color:#597084}
.gallery-login.enhanced .login-card .btn{border-radius:7px}
@media(max-width:767px){
 .gallery-login.enhanced .chrome-stage{width:105%;height:440px;right:-38%;top:-25px}
 .gallery-login.enhanced.shader-ready .chrome-stage{opacity:.36}
 .gallery-login.enhanced .bg-gallery-veil{background:linear-gradient(105deg,#eef2f5eb 0%,#eef2f580 62%,#eef2f520 100%)}
 .gallery-login.enhanced .bg-gallery-art{top:-20px;height:440px;right:-38%}
 .gallery-login.enhanced .login-hero{padding-top:22px}
}

/* Keep one animated sculpture active; avoid filtering the full GPU canvas. */
.enhanced .bg-gallery-art{transition:opacity .35s,visibility 0s .35s,transform 1.6s cubic-bezier(.18,.6,.28,1)}
.enhanced.shader-ready .bg-gallery-art{visibility:hidden}
.enhanced.shader-ready .bg-gallery-art *{animation-play-state:paused!important}
.enhanced.warping .bg-gallery{filter:none}

/* One scene travels between entry pages; text and form arrive on one beat. */
.chrome-stage{transform-origin:0 0}
.gallery-continuing .chrome-stage{transition:none}
.gallery-login.enhanced .login-hero h1 b,
.gallery-login.enhanced .login-hero p,
html.pro .login-stage.gallery-login.enhanced .login-card:not(.shake),
.gallery-intro.gallery-continuing .gallery-copy h1>span,
.gallery-intro.gallery-continuing .gallery-lede{animation:none}
.gallery-login.enhanced .login-hero,
.gallery-login.enhanced .login-panel,
.gallery-intro.gallery-continuing .gallery-copy{animation:gallery-content-arrive .35s cubic-bezier(.22,1,.36,1) both}
@keyframes gallery-content-arrive{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){
 .gallery-login.enhanced .login-hero,.gallery-login.enhanced .login-panel,
 .gallery-intro.gallery-continuing .gallery-copy{animation:none}
}


/* ===== web/src/css/86-watermark.css ===== */
/* 覆盖工作台、手机业务页、弹窗和抽屉，不截获点击或文本选择。 */
#session-watermark {
  position: fixed;
  inset: 0;
  z-index: 2147483647;
  pointer-events: none;
  user-select: none;
  background-repeat: repeat;
  background-size: 280px 200px;
}
@media (max-width: 600px) {
  #session-watermark { background-size: 220px 157px; }
}


/* ===== web/src/css/87-brand-preview-login.css ===== */
/* Approved desktop composition: one silver-blue studio and one connected form. */
html.pro .login-stage.gallery-login.brand-entry-login {
  --entry-inset:clamp(20px,2.4vw,44px);
  display:block;
  min-height:100dvh;
  padding:0 var(--entry-inset) 12px;
  overflow-x:clip;
  overflow-y:auto;
  background:radial-gradient(ellipse at 25% 38%,#f7fbfe 0,#edf5f9 58%,#e9f2f7 100%);
}
.brand-entry-login .login-top {
  width:min(100%,1680px);height:84px;margin:0 auto;padding:0;
  border-bottom:1px solid #cadce788;
}
.brand-entry-login .login-top .login-home{height:84px}
.brand-entry-login .login-top .be-word.money{width:160px}
.brand-entry-login .login-return {
  display:inline-flex;align-items:center;gap:20px;
  background:transparent;border:0;padding:12px 0;
  color:#6c8295;font-size:12px;cursor:pointer;transition:color .2s;
}
.brand-entry-login .login-return:hover{color:#28485f}
.brand-entry-login .login-composition {
  position:relative;isolation:isolate;
  display:grid;grid-template-columns:minmax(0,1.45fr) minmax(380px,1fr);
  width:min(100%,1800px);
  min-height:clamp(560px,calc(100dvh - 170px),980px);
  margin:24px auto 0;
  border:1px solid #ffffffec;border-radius:28px;
  background:#fff;box-shadow:0 18px 55px #567c9620;
}
.brand-entry-login .login-hero {
  position:relative;z-index:0;isolation:isolate;overflow:hidden;
  width:auto;min-width:0;max-width:none;height:auto;min-height:100%;
  padding:clamp(42px,5.2vw,72px) clamp(32px,4.4vw,64px);
  align-self:stretch;pointer-events:auto;
  border-radius:27px 0 0 27px;
  background:radial-gradient(ellipse at 12% 16%,#f1f8fc 0,#e6f0f8 42%,#d4e3ee 100%);
}
.brand-entry-login .login-introduction{position:relative;z-index:3;pointer-events:none}
.brand-entry-login .login-hero .gallery-eyebrow {
  margin:0 0 25px;font-size:10px;line-height:1.8;
  letter-spacing:.15em;color:#55738b;
}
html.pro .brand-entry-login .login-hero h1 {
  font-size:clamp(42px,4.3vw,66px);line-height:1.27;
  font-weight:600;letter-spacing:-.045em;margin:0;color:#24475f;
}
.brand-entry-login .login-hero h1 span{display:block}
.brand-entry-login .login-hero h1 b{font-weight:600}
.brand-entry-login .login-introduction>p:last-child {
  margin:23px 0 0;font-size:15px;line-height:1.85;color:#648197;
}
.brand-entry-login .login-brand-signoff {
  position:absolute;bottom:38px;left:clamp(32px,4.4vw,64px);
  z-index:3;font-size:12px;color:#6d8a9e;
}
.brand-entry-login .login-hero .bg-gallery{z-index:2;background:none;overflow:visible}
.brand-entry-login .bg-gallery-light,.brand-entry-login .bg-gallery-floor,.brand-entry-login .bg-gallery-veil{display:none}
.brand-entry-login .login-brand-scenery{position:absolute;inset:0;z-index:1;pointer-events:none;overflow:hidden}
.brand-entry-login .login-brand-scenery>svg{width:100%;height:100%;display:block}
.brand-entry-login .login-studio-light {
  position:absolute;inset:-20% -30%;
  background:linear-gradient(118deg,transparent 27%,#fff9 45%,#ffffff15 57%,transparent 70%);
  opacity:.45;transform:translateX(-8%);
  animation:login-studio-drift 16s ease-in-out infinite alternate;
}
.brand-entry-login .login-sculpture-ground {
  position:absolute;width:52%;height:14%;right:5%;bottom:12%;
  border-radius:50%;transform:rotate(-9deg);
  background:radial-gradient(ellipse,#7d98ae30 0,#aec5d324 28%,transparent 68%);
}
.gallery-login.brand-entry-login.enhanced .chrome-stage,
.gallery-login.brand-entry-login .bg-gallery-art {
  width:82%;height:auto;aspect-ratio:1.36;right:-1%;top:auto;bottom:35px;
}
.gallery-login.brand-entry-login.enhanced .chrome-stage{opacity:0}
.gallery-login.brand-entry-login.enhanced.shader-ready .chrome-stage{opacity:1}
.gallery-login.brand-entry-login .bg-gallery-art{opacity:1}
.gallery-login.brand-entry-login.shader-ready .bg-gallery-art{opacity:0}
.brand-entry-login .login-panel {
  position:relative;width:auto;min-width:0;align-self:stretch;
  display:flex;align-items:center;padding:46px clamp(30px,3.4vw,50px);
  background:#fff;border-radius:0 27px 27px 0;
}
html.pro .login-stage.brand-entry-login .login-card {
  width:100%;max-width:520px;margin:0 auto;padding:0;border:0;border-radius:0;
  background:transparent;box-shadow:none;backdrop-filter:none;animation:none;
}
html.pro .brand-entry-login .login-brand{margin:0}
html.pro .login-stage.brand-entry-login .login-brand b{font-size:32px;line-height:1.3;font-weight:600;letter-spacing:-.035em}
html.pro .login-stage.brand-entry-login .login-brand small{font-size:13px;line-height:1.6;margin-top:8px;color:#7a90a0}
html.pro .brand-entry-login .login-method-tabs {
  position:relative;gap:0;padding:4px;margin-top:28px;
  border:0;background:#eff4f7;border-radius:9px;isolation:isolate;
}
html.pro .brand-entry-login .login-method-tabs:before {
  content:"";position:absolute;left:4px;top:4px;bottom:4px;
  width:calc(50% - 4px);border-radius:6px;background:#fff;box-shadow:0 2px 7px #2642560a;
  transform:translateX(0);transition:transform 240ms cubic-bezier(.22,1,.36,1);z-index:-1;
}
html.pro .brand-entry-login .login-method-tabs[data-method=password]:before{transform:translateX(100%)}
html.pro .brand-entry-login .login-method-tabs button{padding:10px 4px;font-size:14px;line-height:1.5;color:#8295a3;background:transparent;border-radius:6px;transition:color .2s}
html.pro .brand-entry-login .login-method-tabs button[aria-selected=true]{color:#2d4a60;background:transparent}
html.pro .brand-entry-login .login-method-tabs button:after{display:none}
.brand-entry-login .login-panels{display:grid;align-items:stretch}
.brand-entry-login .login-panels>[role=tabpanel]{grid-area:1/1;min-width:0}
.brand-entry-login .login-panels>[hidden]{display:block!important;visibility:hidden;pointer-events:none}
html.pro .brand-entry-login .login-panels .login-form {
  display:grid;grid-template-columns:minmax(0,1fr);
  grid-template-rows:72px 72px minmax(24px,auto) minmax(18px,auto) 50px minmax(40px,auto);
  gap:10px;margin:24px 0 0;align-content:start;
}
html.pro .brand-entry-login .login-form>label{display:flex;flex-direction:column;gap:7px;font-size:13px;line-height:17px;margin:0;color:#647d8f}
html.pro .brand-entry-login .login-form>label:nth-of-type(1){grid-row:1}
html.pro .brand-entry-login .login-form>label:nth-of-type(2){grid-row:2}
html.pro .brand-entry-login .login-form input{height:48px;min-height:48px;padding:11px 13px;border:1px solid #dfe7ed;border-radius:8px;background:#f8fafc;box-shadow:none;font-size:15px;line-height:20px;transition:background .18s,border-color .18s,box-shadow .18s}
html.pro .brand-entry-login .login-form input:focus{outline:none;border-color:#7d9fb8;background:#fff;box-shadow:0 0 0 3px #b7cddd2d}
html.pro .brand-entry-login .sms-code-row{gap:8px}
html.pro .brand-entry-login .sms-code-row button{height:48px;padding:0 12px;border-radius:8px;font-size:12px;white-space:nowrap}
html.pro .brand-entry-login .login-form .sms-note{margin:0;font-size:10px;line-height:1.7;color:#7e91a0;grid-row:3;align-self:center}
html.pro .brand-entry-login .login-form .sms-note:last-child{grid-row:6;align-self:start;padding-top:4px;font-size:11px;line-height:1.8}
html.pro .brand-entry-login .login-form .login-err{grid-row:4;min-height:18px;margin:0;padding:0;font-size:11px;line-height:18px;align-self:center}
html.pro .brand-entry-login .login-form>button.primary{grid-row:5;height:50px;margin:0;padding:0 14px;line-height:50px;border-radius:8px;font-size:14px;box-shadow:0 4px 12px #25465f12;transition:background .2s,box-shadow .2s,transform .15s}
html.pro .brand-entry-login .login-form>button.primary:hover{box-shadow:0 6px 15px #25465f20;transform:translateY(-1px)}
html.pro .brand-entry-login .login-form>button.primary:active{transform:translateY(0)}
html.pro .brand-entry-login .login-eye{height:48px;top:0;right:4px;padding:0 10px;color:#6f8799;font-size:11px}
html.pro .brand-entry-login .dev-pwd{margin-top:24px;padding-top:18px;border-top:1px solid #e8eef2;font-size:11px;color:#8999a6}
html.pro .brand-entry-login .dev-pwd summary{font-size:11px;line-height:16px;cursor:pointer}
.brand-entry-login .gallery-login-foot{width:min(100%,1800px);margin:0 auto;padding:16px 0 0;justify-content:flex-end;font-size:11px;line-height:28px;color:#8ba0af}
.brand-entry-login .gallery-pause{display:inline-flex;align-items:center;gap:9px;padding:7px 14px;font-size:11px;line-height:18px;box-shadow:none;color:#7a91a3;background:#ffffff8c;border:1px solid #d7e2ea88;border-radius:20px}
.brand-entry-login .gallery-pause:before{content:"";width:7px;height:11px;border-left:2px solid currentColor;border-right:2px solid currentColor}
.brand-entry-login .gallery-pause[aria-pressed=true]:before{width:0;height:0;border:5px solid transparent;border-right:0;border-left:7px solid currentColor}
.brand-entry-login .gallery-pause:disabled:before{display:none}
.brand-entry-login.gallery-motion-paused .login-studio-light{animation-play-state:paused}
.gallery-login.brand-entry-login.enhanced .login-hero,.gallery-login.brand-entry-login.enhanced .login-panel{animation:none}
.brand-entry-login .login-composition{animation:gallery-content-arrive .35s cubic-bezier(.22,1,.36,1) both}
@keyframes login-studio-drift{to{transform:translateX(8%);opacity:.7}}

/* Keep the same desktop composition in smaller laptop windows. */
@media(max-height:800px) {
  .brand-entry-login .login-top,.brand-entry-login .login-top .login-home{height:72px}
  .brand-entry-login .login-composition{margin-top:16px;min-height:max(560px,calc(100dvh - 148px))}
  .brand-entry-login .login-hero{padding-top:38px}
  html.pro .brand-entry-login .login-hero h1{font-size:46px}
  .brand-entry-login .login-hero .gallery-eyebrow{margin-bottom:18px}
  .brand-entry-login .login-introduction>p:last-child{font-size:13px;margin-top:18px}
  .brand-entry-login .login-panel{padding-top:28px;padding-bottom:28px}
  html.pro .login-stage.brand-entry-login .login-brand b{font-size:29px}
  html.pro .login-stage.brand-entry-login .login-brand small{font-size:12px;margin-top:5px}
  html.pro .brand-entry-login .login-method-tabs{margin-top:22px}
  html.pro .brand-entry-login .login-panels .login-form{grid-template-rows:62px 62px minmax(24px,auto) minmax(18px,auto) 44px minmax(36px,auto);gap:8px;margin-top:20px}
  html.pro .brand-entry-login .login-form>label{gap:5px}
  html.pro .brand-entry-login .login-form input{height:41px;min-height:41px;font-size:13px}
  html.pro .brand-entry-login .sms-code-row button,html.pro .brand-entry-login .login-eye{height:41px}
  html.pro .brand-entry-login .login-form>button.primary{height:44px;line-height:44px}
  html.pro .brand-entry-login .dev-pwd{margin-top:18px;padding-top:16px}
  .brand-entry-login .login-brand-signoff{bottom:28px;font-size:11px}
  .gallery-login.brand-entry-login.enhanced .chrome-stage,.gallery-login.brand-entry-login .bg-gallery-art{bottom:24px}
  .brand-entry-login .gallery-login-foot{padding-top:12px}
}
@media(max-width:1100px) {
  html.pro .login-stage.gallery-login.brand-entry-login{--entry-inset:20px}
  .brand-entry-login .login-composition{grid-template-columns:minmax(0,1.35fr) minmax(350px,1fr)}
  .brand-entry-login .login-hero{padding-left:32px;padding-right:24px}
  .brand-entry-login .login-panel{padding-left:28px;padding-right:28px}
  html.pro .brand-entry-login .login-hero h1{font-size:41px}
  .brand-entry-login .login-hero .gallery-eyebrow{font-size:8px;letter-spacing:.12em}
  .brand-entry-login .login-brand-signoff{left:32px}
}
@media(max-width:900px) {
  .gallery-login.brand-entry-login.enhanced .chrome-stage,.gallery-login.brand-entry-login .bg-gallery-art{width:138%;right:-16%;bottom:56px}
}
@media(prefers-reduced-motion:reduce){.brand-entry-login *,.brand-entry-login *:before{animation:none!important;transition:none!important}}


/* ===== web/src/css/88-brand-site.css ===== */
/* Brand website styles are scoped to the public entry. */
.brand-site{--paper:#edf3f7;--white:#fbfdff;--ink:#263e53;--muted:#647e92;--line:#c8d6e0;--deep:#183343;--ease:cubic-bezier(.22,1,.36,1);font-family:"PingFang SC","Microsoft YaHei",sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none}
.brand-site *{box-sizing:border-box}
.brand-site{scroll-behavior:smooth;scroll-padding-top:86px}
.brand-site{margin:0}
.brand-site a{color:inherit;text-decoration:none}
.brand-site button{font:inherit;cursor:pointer}
.brand-site button,.brand-site a{-webkit-tap-highlight-color:transparent}
.brand-site button:focus-visible,.brand-site a:focus-visible,.brand-site [tabindex]:focus-visible{outline:2px solid #477c9d;outline-offset:6px}
.brand-site ::selection{background:#b8d2e4}
.brand-site .skip{position:fixed;left:16px;top:-80px;z-index:100;background:white;padding:16px}
.brand-site .skip:focus{top:12px}
.brand-site .nav{height:80px;padding:0 6%;display:flex;align-items:center;justify-content:space-between;position:fixed;inset:0 0 auto;z-index:30;background:#edf3f7e8;border-bottom:1px solid #c8d6e055;backdrop-filter:blur(12px)}
.brand-site .logo img{width:156px;display:block;filter:grayscale(1) brightness(.55)}
.brand-site .nav nav{display:flex;align-items:center;gap:30px;font-size:13px}
.brand-site .nav a{transition:color .2s}
.brand-site .nav a:hover{color:#648ca9}
.brand-site .nav-entry{border:1px solid #c8d6e0;background:#ffffff70;padding:12px 18px;border-radius:5px}
.brand-site .nav-entry span{margin-left:22px}
.brand-site .reading-progress{position:absolute;bottom:-1px;left:0;width:100%;height:2px;background:#6d95b1;transform:scaleX(0);transform-origin:left}
.brand-site .hero{position:relative;min-height:820px;height:100svh;max-height:1100px;display:flex;align-items:center;padding:112px 8% 100px;overflow:hidden;background:radial-gradient(ellipse at 77% 35%,#fff 0%,#eff5f9 45%,#e2ebf2 100%)}
.brand-site .hero-copy{position:relative;z-index:2;width:52%}
.brand-site .eyebrow{font-size:11px;letter-spacing:.15em;line-height:1.8;margin:0 0 30px;font-weight:500}
.brand-site .hero h1{font-size:clamp(48px,5.6vw,88px);font-weight:600;line-height:1.17;letter-spacing:-.065em;margin:0 0 32px}
.brand-site h1 span,.brand-site h2 span{color:var(--muted)}
.brand-site .hero-description{font-size:15px;line-height:2;color:#587185;margin:0}
.brand-site .primary{display:inline-flex;align-items:center;gap:38px;margin-top:36px;padding:18px 23px;background:var(--ink);color:#fff;border-radius:5px;font-size:13px;box-shadow:0 8px 20px #263e5310;transition:transform .25s var(--ease),background .25s}
.brand-site .primary span{transition:transform .25s var(--ease)}
.brand-site .primary:hover{transform:translateY(-3px);background:#3b5a72}
.brand-site .primary:hover span{transform:translate(2px,2px)}
.brand-site .hero-bottom{position:absolute;bottom:36px;left:8%;right:8%;display:flex;justify-content:space-between;font-size:11px;letter-spacing:.08em;color:var(--muted)}
.brand-site .hero-bottom a span{display:inline-block;margin-left:16px;animation:brand-hint 2.6s ease-in-out infinite}
.brand-site .metal-wrap{position:absolute;width:min(59vw,780px);aspect-ratio:1;right:0;top:50%;transform:translateY(-50%);will-change:transform;pointer-events:none}
.brand-site .metal-wrap canvas,.brand-site .metal-fallback{width:100%!important;height:100%!important;position:absolute;inset:0;display:block}
.brand-site .metal-wrap canvas{opacity:0;transition:opacity .6s}
.brand-site .metal-ready canvas{opacity:1}
.brand-site .metal-ready .metal-fallback{opacity:0}
.brand-site .metal-fallback{transition:opacity .6s}
.brand-site .metal-ground{position:absolute;left:15%;right:10%;bottom:12%;height:5%;background:radial-gradient(ellipse,#687f9226,transparent 68%);transform:rotate(-8deg)}
.brand-site .metal-caption{position:absolute;bottom:5%;left:25%;font-family:Georgia,serif;font-style:italic;font-size:13px;letter-spacing:.03em;color:#8ba0af}
.brand-site .hero-halo{position:absolute;inset:15% -15% 0 35%;border:1px solid #c2d3df44;border-radius:50%;transform:rotate(-28deg);pointer-events:none}
.brand-site .section-pad{padding:110px 8%}
.brand-site h2{font-size:clamp(36px,4vw,60px);font-weight:500;line-height:1.24;letter-spacing:-.045em;margin:0}
.brand-site .reveal{opacity:1}
.brand-site.js-motion .reveal{opacity:0;transform:translateY(12px);transition:opacity .5s var(--ease),transform .5s var(--ease)}
.brand-site.js-motion .reveal.visible{opacity:1;transform:none}
.brand-site .partners{background:var(--white)}
.brand-site .partners-heading{display:flex;justify-content:space-between;align-items:end;margin-bottom:55px}
.brand-site .partners-heading>p{font-size:14px;line-height:2;color:var(--muted);margin:0 0 4px}
.brand-site .brand-tabs{display:flex;gap:8px;flex-wrap:wrap;border-bottom:1px solid #d6e1e9;padding-bottom:18px}
.brand-site .brand-tabs button{padding:10px 18px;border:1px solid transparent;background:transparent;border-radius:30px;color:var(--muted);font-size:12px;transition:background .25s,color .25s}
.brand-site .brand-tabs button[aria-selected=true]{background:#263e53;color:#fff}
.brand-site .brand-tabs button:hover{border-color:#afc3d2}
.brand-site .brand-panel{display:grid;grid-template-columns:repeat(4,1fr);min-height:226px;align-items:center;gap:1px;padding:34px 0}
.brand-site .brand-name{min-height:80px;display:grid;place-items:center;font-size:clamp(19px,2vw,29px);font-weight:600;letter-spacing:-.04em;animation:brand-arrive .45s var(--ease) both;animation-delay:calc(var(--i)*35ms);transition:color .2s,transform .2s}
.brand-site .brand-name:hover{color:#7096b0;transform:translateY(-3px)}
.brand-site .brand-foot{border-top:1px solid #d6e1e9;display:flex;justify-content:space-between;padding-top:20px;margin:0;font-size:11px;color:#758c9d}
.brand-site .brand-foot span{font-size:9px;letter-spacing:.12em}
.brand-site .ending{background:var(--deep);color:#f1f6fa;position:relative;overflow:hidden;padding-top:100px;padding-bottom:90px;min-height:620px}
.brand-site .ending h2{font-size:clamp(45px,5.4vw,80px);position:relative}
.brand-site .ending h2 span{color:#9cb8cc}
.brand-site .ending>.eyebrow{color:#9ab1c2}
.brand-site .ending>p:not(.eyebrow){font-size:14px;color:#a6bdcd;line-height:1.8;position:relative}
.brand-site .primary.light{background:#ecf3f8;color:var(--deep);position:relative}
.brand-site .end-ring{position:absolute;right:-10%;top:0;width:700px;height:700px;border:1px solid #8eb6d033;border-radius:50%;box-shadow:0 0 0 70px #7ca4c007,0 0 0 140px #7ca4c007;transform:translateY(15%);will-change:transform}
.brand-site .ending footer{display:flex;justify-content:space-between;align-items:center;border-top:1px solid #a6bdcd25;margin-top:100px;padding-top:30px;position:relative;color:#9db4c5;font-size:11px}
.brand-site .ending footer img{width:135px}
.brand-site .preview-tools{position:fixed;bottom:18px;right:22px;z-index:40;border:1px solid #bdceda80;background:#f4f8fbed;border-radius:30px;display:flex;align-items:center;box-shadow:0 5px 20px #263e5308;font-size:10px;color:#75899a;padding:5px 5px 5px 13px;gap:10px}
.brand-site .preview-tools button{border:0;padding:8px 12px;background:white;border-radius:24px;font-size:11px;color:#425f75}
.brand-site .preview-tools button:disabled{cursor:default}
.brand-site.motion-off{scroll-behavior:auto}
.brand-site.motion-off *{animation:none!important;transition:none!important}
.brand-site.motion-off .reveal{opacity:1;transform:none}
@keyframes brand-arrive{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}
@keyframes brand-hint{0%,100%{transform:translateY(0)}50%{transform:translateY(5px)}}
@media(min-width:1600px){.brand-site .hero,.brand-site .section-pad{padding-left:max(8%,calc((100% - 1360px)/2));padding-right:max(8%,calc((100% - 1360px)/2))}
.brand-site .metal-wrap{right:calc((100% - 1500px)/2)}
}
@media(max-width:1050px){.brand-site .hero{min-height:720px}
.brand-site .hero h1{font-size:56px}
.brand-site .metal-wrap{width:60vw;right:-3%}
.brand-site .section-pad{padding-left:7%;padding-right:7%}
}
@media(prefers-reduced-motion:reduce){.brand-site{scroll-behavior:auto}
.brand-site *,.brand-site *:before,.brand-site *:after{animation:none!important;transition:none!important}
.brand-site.js-motion .reveal{opacity:1;transform:none}
}
.brand-site{--duration-fast:250ms;--duration-quick:150ms;--duration-reveal:500ms;--distance-reveal:12px}
.brand-site .nav{transition:background var(--duration-fast),box-shadow var(--duration-fast)}
.brand-site .nav.scrolled{background:#edf3f7f2;box-shadow:0 8px 30px #263e5306}
.brand-site .nav nav>a[aria-current=location]{color:#263e53}
.brand-site .nav nav>a:not(.nav-entry){position:relative}
.brand-site .nav nav>a:not(.nav-entry):after{content:"";height:1px;background:currentColor;position:absolute;bottom:-7px;left:0;right:0;transform:scaleX(0);transform-origin:left;transition:transform var(--duration-fast) var(--ease)}
.brand-site .nav nav>a:hover:after,.brand-site .nav nav>a[aria-current=location]:after{transform:scaleX(1)}
.brand-site .hero{min-height:730px;max-height:1000px}
.brand-site .hero-copy{width:55%}
.brand-site .hero-description{max-width:430px}
.brand-site .hero-secondary{display:block;width:max-content;font-size:12px;color:#6c8294;margin-top:23px;transition:color var(--duration-fast)}
.brand-site .hero-secondary span{display:inline-block;margin-left:14px;transition:transform var(--duration-fast)}
.brand-site .hero-secondary:hover{color:#263e53}
.brand-site .hero-secondary:hover span{transform:translateY(4px)}
.brand-site .orbit-label{position:absolute;border:1px solid #ffffffc9;background:#f5f9fbc9;backdrop-filter:blur(10px);padding:12px 17px;border-radius:40px;color:#6b8598;font-size:11px;letter-spacing:.05em;box-shadow:0 12px 25px #55758c08;animation:brand-label-float 7s ease-in-out infinite}
.brand-site .orbit-label:before{content:"";display:inline-block;width:5px;height:5px;border-radius:50%;background:#829fb3;margin-right:8px}
.brand-site .orbit-label-a{top:20%;left:16%}
.brand-site .orbit-label-b{right:8%;bottom:19%;animation-delay:-3.5s}
@keyframes brand-label-float{0%,100%{translate:0 0}50%{translate:0 -9px}}
.brand-site .brand-ribbon{overflow:hidden;border-top:1px solid #bfd0dd77;border-bottom:1px solid #bfd0dd77;padding:21px 0;background:#e4eef5;color:#5b798f}
.brand-site .ribbon-track{display:flex;width:max-content;animation:brand-brand-drift 38s linear infinite}
.brand-site .ribbon-track>span{display:flex;align-items:center;gap:38px;padding-right:38px;white-space:nowrap;font:13px Georgia,serif;letter-spacing:.16em}
.brand-site .ribbon-track i{font:20px Georgia,serif;font-style:normal;color:#87a5ba}
.brand-site .brand-ribbon:hover .ribbon-track{animation-play-state:paused}
@keyframes brand-brand-drift{to{transform:translateX(-50%)}}
.brand-site .partners{padding-top:100px;padding-bottom:90px}
.brand-site .partners-heading{gap:30px;margin-bottom:42px}
.brand-site .partners-heading h2{font-size:clamp(34px,3.6vw,54px)}
.brand-site .brand-field{display:grid;grid-template-columns:26% 1fr;gap:5%;padding:36px 0;align-items:center}
.brand-site .industry-note{min-height:240px;padding:18px 0;display:flex;flex-direction:column;align-items:start}
.brand-site .industry-en{font:10px Georgia,serif;letter-spacing:.12em;color:#829aaa}
.brand-site .industry-note h3{font-size:24px;line-height:1.5;font-weight:500;letter-spacing:-.03em;margin:22px 0 14px}
.brand-site .industry-note p{font-size:12px;line-height:1.9;color:#728b9c;max-width:240px;margin:0 0 20px}
.brand-site .industry-note a{margin-top:auto;font-size:11px;border-bottom:1px solid #a7bfce;padding:7px 0}
.brand-site .industry-note a span{margin-left:20px}
.brand-site .brand-panel{padding:0;min-height:260px;gap:10px;grid-template-columns:repeat(4,minmax(0,1fr));align-items:stretch}
.brand-site .brand-name{font-size:clamp(17px,1.7vw,26px);border:1px solid #e3eaf0;border-radius:7px;min-height:116px;background:#fff9;position:relative;overflow:hidden;animation-duration:var(--duration-reveal);transition:color var(--duration-fast),background var(--duration-fast),border-color var(--duration-fast)}
.brand-site .brand-name:hover{color:#274d68;transform:none;background:white;border-color:#a4bfce}
.brand-site .brand-name:after{content:"";width:36%;height:190%;position:absolute;top:-45%;left:-70%;background:linear-gradient(90deg,transparent,#ddeaf666,transparent);transform:rotate(28deg);transition:translate .55s var(--ease);pointer-events:none}
.brand-site .brand-name:hover:after{translate:480% 0}
.brand-site.js-motion .reveal{transform:translateY(var(--distance-reveal));transition-duration:var(--duration-reveal)}
.brand-site .studio{background:#142c3c;color:#f2f6f9;position:relative;padding-top:100px;padding-bottom:45px;overflow:hidden}
.brand-site .studio-heading{display:flex;justify-content:space-between;gap:30px;align-items:end;margin-bottom:48px}
.brand-site .studio .eyebrow{color:#9cb5c7}
.brand-site .studio h2 span{color:#9db7ca}
.brand-site .studio-heading>p{font-size:14px;line-height:2;color:#a5bac8;margin:0 0 6px}
.brand-site .scene-tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;background:#68839744;border:1px solid #68839744;border-radius:10px 10px 0 0;overflow:hidden}
.brand-site .scene-tabs button{color:#91aaba;background:#172f3f;border:0;text-align:left;padding:23px 27px;position:relative;transition:background var(--duration-fast),color var(--duration-fast);min-width:0}
.brand-site .scene-tabs button>span{display:block;font-size:18px;letter-spacing:.03em}
.brand-site .scene-tabs small{display:block;font:9px Georgia,serif;letter-spacing:.1em;margin-top:8px;color:#7794a8}
.brand-site .scene-tabs i{font-style:normal;position:absolute;right:26px;top:26px;font-size:20px;transition:transform var(--duration-fast)}
.brand-site .scene-tabs button[aria-selected=true]{background:#e2edf5;color:#213e54}
.brand-site .scene-tabs button[aria-selected=true] i{transform:rotate(45deg)}
.brand-site .scene-tabs button:hover:not([aria-selected=true]){background:#294556;color:#e1edf5}
.brand-site .scene-panel{--accent:#c0d6e6;display:grid;grid-template-columns:57% 43%;border:1px solid #68839744;border-top:0;border-radius:0 0 10px 10px;overflow:hidden;background:#1b3546}
.brand-site .creative-display{min-height:590px;position:relative;perspective:1200px;background:radial-gradient(ellipse at var(--spot-x,45%) var(--spot-y,35%),#5a79904d,transparent 65%),#203e51;overflow:hidden}
.brand-site .display-grid{position:absolute;inset:0;background-image:linear-gradient(#8eb4ce08 1px,transparent 1px),linear-gradient(90deg,#8eb4ce08 1px,transparent 1px);background-size:55px 55px;mask-image:radial-gradient(ellipse,black,transparent 72%)}
.brand-site .artwork{position:absolute;inset:0;transform:rotateX(var(--tilt-x,0deg)) rotateY(var(--tilt-y,0deg));transform-style:preserve-3d;transition:transform .35s var(--ease)}
.brand-site .art-poster{position:absolute;width:56%;height:75%;top:8%;left:16%;border-radius:3px;padding:21px;background:#dbe7ef;color:#25465c;transform:rotate(-7deg) translateZ(15px);box-shadow:20px 25px 45px #05131f55;overflow:hidden}
.brand-site .poster-top{font:8px Georgia,serif;letter-spacing:.13em;position:relative;z-index:2}
.brand-site .poster-type{font:clamp(42px,4.6vw,76px)/.88 Georgia,serif;letter-spacing:-.055em;margin-top:28px;position:relative;z-index:1}
.brand-site .poster-type em{font-weight:400;color:#7a9aaf}
.brand-site .poster-foot{position:absolute;bottom:20px;left:21px;font-size:9px;line-height:1.8;letter-spacing:.04em;z-index:3}
.brand-site .product-orbit{position:absolute;left:5%;top:35%;width:110%;aspect-ratio:1;border:1px solid #6f96b26b;border-radius:50%;box-shadow:0 0 0 18px #9fbacc19,0 0 0 36px #9fbacc19;transform:rotateX(60deg) rotate(-25deg)}
.brand-site .product-bottle{position:absolute;width:105px;height:225px;left:52%;top:38%;transform:rotate(14deg);z-index:2;filter:drop-shadow(20px 20px 12px #18384935)}
.brand-site .bottle-cap{height:40px;width:76px;border-radius:13px 13px 3px 3px;margin:0 auto;background:linear-gradient(90deg,#4b697d,#cadce8 20%,#f1f8fd 28%,#7a98ad 64%,#44647c);position:relative;z-index:3;border-top:1px solid #fff}
.brand-site .bottle-body{position:relative;height:185px;border-radius:22px 22px 28px 28px;background:linear-gradient(100deg,#8ca6b8,#e8f4fd 23%,#c7dce9 40%,#99b2c2 72%,#e3f0f9 90%,#8ba4b5);border:1px solid #e9f7ff;box-shadow:inset 10px 0 18px #faffffbb,inset -8px 0 12px #29485d33;display:flex;align-items:center;justify-content:center}
.brand-site .bottle-body>span{font:60px/.8 Georgia,serif;color:#47687e;letter-spacing:-.12em;text-align:center}
.brand-site .bottle-body>span>span{display:block;font:5px/2 Georgia,serif;letter-spacing:.16em;margin:20px 0 0}
.brand-site .poster-shine{position:absolute;inset:-50%;background:linear-gradient(115deg,transparent 40%,#ffffff55 48%,transparent 58%);transform:translateX(-70%);animation:brand-poster-light 9s ease-in-out infinite;pointer-events:none;z-index:4}
@keyframes brand-poster-light{0%,55%,100%{transform:translateX(-70%)}75%{transform:translateX(70%)}}
.brand-site .art-note-card{position:absolute;right:7%;bottom:14%;width:45%;padding:23px 22px 18px;background:#f5f8fbed;color:#25465c;border-radius:5px;transform:rotate(6deg) translateZ(55px);box-shadow:0 20px 35px #091b2855;z-index:4}
.brand-site .art-note-card small{font:8px Georgia,serif;letter-spacing:.1em;color:#7d96a9}
.brand-site .art-note-card>span{display:block;font-size:20px;line-height:1.5;margin:20px 0 8px;font-weight:500;letter-spacing:-.02em}
.brand-site .art-note-card i{display:block;font:28px Georgia,serif;text-align:right;color:#819eaf}
.brand-site .art-stamp{position:absolute;top:14%;right:8%;height:83px;width:83px;border-radius:50%;border:1px solid #b1c9da77;display:flex;align-items:center;justify-content:center;flex-direction:column;font:10px/1.6 Georgia,serif;letter-spacing:.07em;color:#b8cedb;transform:rotate(12deg) translateZ(20px);box-shadow:0 0 0 6px #9ebfd608}
.brand-site .art-stamp b{font-weight:400}
.brand-site .display-foot{position:absolute;bottom:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;padding:18px 23px;border-top:1px solid #7696ad22;color:#87a3b6;font-size:10px;z-index:5}
.brand-site .replay-scene{border:0;background:none;color:#c0d5e3;font-size:11px;padding:5px}
.brand-site .replay-scene span{display:inline-block;margin-left:8px;transition:transform .4s var(--ease)}
.brand-site .replay-scene:hover span{transform:rotate(-180deg)}
.brand-site .scene-detail{padding:45px 38px 30px;display:flex;flex-direction:column;min-width:0}
.brand-site .scene-kicker{font:10px Georgia,serif;color:#8fadc1;letter-spacing:.1em}
.brand-site .scene-detail h3{font-size:clamp(24px,2.6vw,38px);line-height:1.4;letter-spacing:-.035em;font-weight:500;margin:24px 0 20px}
.brand-site .scene-description{font-size:13px;color:#a9bdca;line-height:1.95;margin:0 0 26px}
.brand-site .scene-points>div{border-top:1px solid #8dabbc26;padding:15px 0;display:grid;grid-template-columns:68px 1fr;gap:12px;align-items:start}
.brand-site .scene-points>div>span{color:#e2edf5;font-size:11px;padding-top:2px}
.brand-site .scene-points p{color:#90aabb;font-size:12px;line-height:1.8;margin:0}
.brand-site .scene-pagination{display:flex;justify-content:space-between;align-items:center;border-top:1px solid #8dabbc26;margin-top:auto;padding-top:24px;font:11px Georgia,serif;color:#7b9baf}
.brand-site .scene-pagination b{font-size:24px;font-weight:400;color:#c3d9e6;padding-right:5px}
.brand-site .next-scene{background:transparent;border:0;color:#c3d9e6;font-size:11px;padding:9px 0}
.brand-site .next-scene span{margin-left:15px;display:inline-block;transition:transform var(--duration-fast)}
.brand-site .next-scene:hover span{transform:translateX(4px)}
.brand-site .studio-summary{display:flex;align-items:center;justify-content:center;gap:28px;padding:33px 0 0;font-size:12px;color:#8da7b9}
.brand-site .studio-summary i{font-size:20px;color:#54798f;font-style:normal}
.brand-site .studio-summary strong{font-weight:500;color:#d0e2ed}
.brand-site .scene-panel[data-scene="1"] .creative-display{background:radial-gradient(ellipse at var(--spot-x,45%) var(--spot-y,35%),#a18d6d44,transparent 65%),#384b4d}
.brand-site .scene-panel[data-scene="1"] .art-poster{background:#e7ddcb;color:#585e52;transform:rotate(5deg) translateZ(15px)}
.brand-site .scene-panel[data-scene="1"] .poster-type em{color:#ab9a7b}
.brand-site .scene-panel[data-scene="1"] .product-bottle{top:39%;left:39%;width:150px;transform:rotate(-12deg)}
.brand-site .scene-panel[data-scene="1"] .bottle-cap{width:160px;height:20px;border-radius:12px;background:linear-gradient(90deg,#9b8972,#f9f5eb 40%,#d3c6ad);margin-left:-5px}
.brand-site .scene-panel[data-scene="1"] .bottle-body{height:170px;border-radius:0 0 28px 28px;background:linear-gradient(90deg,#c7b89f,#f5ecdc 35%,#d9cbb3 75%,#c2ae91);clip-path:polygon(0 0,100% 0,88% 100%,12% 100%);border:0;box-shadow:none}
.brand-site .scene-panel[data-scene="1"] .bottle-body>span{color:#9c896d}
.brand-site .scene-panel[data-scene="1"] .product-orbit{border-color:#b5a48a;box-shadow:0 0 0 18px #b5a48a15,0 0 0 36px #b5a48a15}
.brand-site .scene-panel[data-scene="1"] .art-note-card{background:#f8f3e9;color:#635d50;transform:rotate(-6deg) translateZ(55px)}
.brand-site .scene-panel[data-scene="2"] .creative-display{background:radial-gradient(ellipse at var(--spot-x,45%) var(--spot-y,35%),#62869c55,transparent 65%),#253549}
.brand-site .scene-panel[data-scene="2"] .art-poster{background:#adc4da;color:#253b54;transform:rotate(-4deg) translateZ(15px)}
.brand-site .scene-panel[data-scene="2"] .poster-type{font-size:clamp(38px,4vw,65px);z-index:3}
.brand-site .scene-panel[data-scene="2"] .poster-type em{color:#f0f6fb}
.brand-site .scene-panel[data-scene="2"] .product-bottle{top:41%;left:41%;width:150px;transform:rotate(25deg)}
.brand-site .scene-panel[data-scene="2"] .bottle-cap{display:none}
.brand-site .scene-panel[data-scene="2"] .bottle-body{width:155px;height:155px;border-radius:8px;background:linear-gradient(135deg,#dbe9f3,#7392b3);box-shadow:inset 12px 10px 24px #ecf6ff55,inset -12px -10px 24px #1f3d6055}
.brand-site .scene-panel[data-scene="2"] .bottle-body:before,.brand-site .scene-panel[data-scene="2"] .bottle-body:after{content:"";position:absolute;background:linear-gradient(90deg,#466c8b,#edf7ff 50%,#719cbe);width:16px;inset:0 auto 0 69px}
.brand-site .scene-panel[data-scene="2"] .bottle-body:after{inset:69px 0 auto;width:auto;height:16px;background:linear-gradient(#466c8b,#edf7ff 50%,#719cbe)}
.brand-site .scene-panel[data-scene="2"] .bottle-body>span{display:none}
.brand-site .scene-panel[data-scene="2"] .product-orbit{width:125%;left:-5%;top:36%;transform:rotateX(55deg) rotate(30deg)}
.brand-site .scene-panel[data-scene="2"] .art-note-card{transform:rotate(7deg) translateZ(55px)}
.brand-site .approach{background:#f8fbfd;display:grid;grid-template-columns:43% 52%;gap:5%;padding-top:110px;padding-bottom:95px}
.brand-site .approach-heading .eyebrow{color:#758e9f}
.brand-site .approach-note{font-size:13px;line-height:2;color:#7d93a3;margin:25px 0}
.brand-site .approach-list{padding-top:9px}
.brand-site .approach-item{border-top:1px solid #cbdbe5}
.brand-site .approach-item:last-child{border-bottom:1px solid #cbdbe5}
.brand-site .approach-item h3{margin:0}
.brand-site .approach-item h3 button{display:flex;align-items:center;justify-content:space-between;width:100%;padding:25px 0;background:none;border:0;text-align:left;gap:20px;color:#2e4c62;font-size:clamp(16px,1.6vw,23px);font-weight:400;line-height:1.5}
.brand-site .approach-item h3 small{display:block;color:#879dab;font:9px Georgia,serif;letter-spacing:.1em;margin-bottom:7px}
.brand-site .approach-item h3 i{font-size:22px;font-style:normal;font-weight:300;color:#7c97a9}
.brand-site .approach-item h3 button:hover{color:#7197b1}
.brand-site .advantage-panel{display:grid;grid-template-rows:0fr;transition:grid-template-rows var(--duration-fast) var(--ease);visibility:hidden}
.brand-site .advantage-panel>div{overflow:hidden}
.brand-site .approach-item.open .advantage-panel{grid-template-rows:1fr;visibility:visible}
.brand-site .advantage-panel p{font-size:13px;color:#728b9d;line-height:2;margin:0 35px 20px 0}
.brand-site .advantage-tags{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:28px}
.brand-site .advantage-tags span{color:#5d7e96;font-size:10px;padding:7px 10px;border:1px solid #dae6ed;border-radius:4px;background:#eaf2f7}
.brand-site .connection-art{position:relative;height:210px;max-width:350px;margin-top:38px}
.brand-site .connection-ring{position:absolute;top:15px;width:170px;height:170px;border:1px solid #8ba8bc;border-radius:50%;display:grid;place-items:center;box-shadow:inset 0 0 0 7px #dfebf440,0 0 0 7px #dfebf440;transition:transform .6s var(--ease)}
.brand-site .connection-ring span{font-size:11px;color:#67869b}
.brand-site .ring-brand{left:0;transform:translateX(calc(var(--join,0)*25px))}
.brand-site .ring-creator{left:140px;transform:translateX(calc(var(--join,0)*-25px));border-color:#b8ccd9}
.brand-site .connection-center{position:absolute;top:91px;left:145px;font-size:11px;opacity:var(--join,0);color:#325b77}
.brand-site .belief{background:#e5eff6;padding-top:88px;padding-bottom:92px;overflow:hidden;position:relative}
.brand-site .belief .eyebrow{color:#7794a9}
.brand-site .belief-line{display:flex;flex-wrap:wrap;font-size:clamp(32px,4.6vw,72px);font-weight:500;line-height:1.4;letter-spacing:-.06em;gap:10px}
.brand-site .belief-line>span{color:#bdcfdc;transition:color .6s ease}
.brand-site .belief-line>span.lit{color:#294c65}
.brand-site .belief-note{margin:28px 0 0;font-size:13px;color:#7390a5;line-height:2}
.brand-site .ending{min-height:580px}
.brand-site .ending h2{z-index:1}
.brand-site .end-ring{border-color:#8eb6d04d}
.brand-site [data-motion-section]:not(.is-on-screen) .ribbon-track,.brand-site [data-motion-section]:not(.is-on-screen) .poster-shine,.brand-site [data-motion-section]:not(.is-on-screen) .orbit-label{animation-play-state:paused}
.brand-site.motion-off *:before,.brand-site.motion-off *:after{animation:none!important;transition:none!important}
.brand-site.motion-off .artwork{transform:none}
.brand-site.motion-off .belief-line>span{color:#294c65}
.brand-site.motion-off .connection-art{--join:1}
@media(max-width:1100px){.brand-site .brand-field{grid-template-columns:26% 1fr;gap:4%}
.brand-site .brand-panel{grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}
.brand-site .brand-name{min-height:110px;font-size:18px}
.brand-site .industry-note h3{font-size:21px}
.brand-site .scene-detail{padding:35px 25px 28px}
.brand-site .scene-detail h3{font-size:26px}
.brand-site .creative-display{min-height:590px}
.brand-site .art-poster{width:62%;left:10%;height:70%;top:12%}
.brand-site .art-note-card{width:49%;right:5%;padding:18px}
.brand-site .art-note-card>span{font-size:17px}
.brand-site .poster-type{font-size:56px}
.brand-site .art-stamp{right:4%;width:65px;height:65px;font-size:8px}
.brand-site .product-bottle{left:43%}
.brand-site .approach{grid-template-columns:40% 55%}
}
@media(max-width:850px){.brand-site .nav nav{gap:18px;font-size:12px}
.brand-site .logo img{width:140px}
.brand-site .nav-entry{padding:11px 14px}
.brand-site .nav-entry span{margin-left:12px}
.brand-site .hero-copy{width:58%}
.brand-site .hero h1{font-size:51px}
.brand-site .hero-description{font-size:13px}
.brand-site .orbit-label{padding:9px 11px;font-size:9px}
.brand-site .orbit-label-a{top:17%;left:24%}
.brand-site .orbit-label-b{right:6%;bottom:18%}
.brand-site .partners-heading>p,.brand-site .studio-heading>p{font-size:12px}
.brand-site .brand-field{grid-template-columns:1fr;gap:20px}
.brand-site .industry-note{display:grid;grid-template-columns:1fr 1.4fr;min-height:0;gap:12px 30px;padding:0}
.brand-site .industry-en{grid-column:1/-1}
.brand-site .industry-note h3{margin:0;font-size:23px}
.brand-site .industry-note p{margin:0;max-width:none;align-self:center}
.brand-site .industry-note a{display:none}
.brand-site .brand-panel{min-height:210px}
.brand-site .brand-name{min-height:100px;font-size:23px}
.brand-site .scene-panel{grid-template-columns:1fr}
.brand-site .creative-display{min-height:540px}
.brand-site .art-poster{width:43%;left:24%;height:76%;top:7%}
.brand-site .poster-type{font-size:64px}
.brand-site .art-note-card{width:34%;right:11%;bottom:15%}
.brand-site .art-stamp{right:13%;top:15%}
.brand-site .scene-detail{display:grid;grid-template-columns:1fr 1fr;gap:0 30px;padding:34px}
.brand-site .scene-kicker{grid-column:1}
.brand-site .scene-detail h3{grid-column:1;font-size:27px}
.brand-site .scene-description{grid-column:1}
.brand-site .scene-points{grid-column:2;grid-row:1/4}
.brand-site .scene-points>div{grid-template-columns:1fr;gap:7px;padding:12px 0}
.brand-site .scene-pagination{grid-column:1/-1;margin-top:10px}
.brand-site .scene-tabs button{padding:20px}
.brand-site .scene-tabs button>span{font-size:16px}
.brand-site .scene-tabs i{right:19px;top:20px}
.brand-site .scene-tabs small{font-size:8px}
.brand-site .studio-summary{gap:16px;font-size:11px}
.brand-site .approach{gap:5%;grid-template-columns:40% 55%}
.brand-site .approach h2{font-size:34px}
.brand-site .approach-note{font-size:12px}
.brand-site .approach-item h3 button{font-size:16px}
.brand-site .advantage-panel p{font-size:12px;margin-right:0}
.brand-site .connection-art{transform:scale(.75);transform-origin:left top;margin-bottom:-50px}
.brand-site .scene-panel[data-scene="2"] .poster-type{font-size:54px}
}
@media(prefers-reduced-motion:reduce){.brand-site .belief-line>span{color:#294c65}
.brand-site .connection-art{--join:1}
.brand-site .artwork{transform:none}
}
.brand-site.page-hidden *,.brand-site.page-hidden *:before,.brand-site.page-hidden *:after{animation-play-state:paused!important}
.brand-site .studio{overflow:clip}
.brand-site .scene-tabs{position:sticky;top:80px;z-index:12}
.brand-site .hero-bottom{bottom:64px}
.brand-site .replay-scene:disabled{opacity:.4;cursor:default}
.brand-site .replay-scene:disabled span{transform:none}


/* Final composition: one clear sequence, one shared live brand object. */
.brand-site{background:#edf3f7;scroll-behavior:smooth;scroll-padding-top:96px;line-height:1.5;--site-inset:max(6%,calc((100% - 1240px)/2))}
.brand-site h1,.brand-site h2,.brand-site h3,.brand-site p{max-width:none}
.brand-site h1,.brand-site h2,.brand-site h3{color:inherit}
.brand-site .nav{height:76px;padding-left:var(--site-inset);padding-right:var(--site-inset);box-shadow:none}
.brand-site .nav nav{background:transparent;padding:0;width:auto;border:0}
.brand-site .nav a{font-size:12px}
.brand-site .nav .logo img{width:150px;height:auto;filter:brightness(0) saturate(100%);opacity:.86}
.brand-site .nav-entry{padding:10px 17px;border-radius:7px}
.brand-site .hero.gallery-hero{height:100dvh;min-height:660px;max-height:960px;padding:110px var(--site-inset) 110px;pointer-events:auto}
.brand-site .hero-copy{width:56%;padding:0;opacity:var(--hero-copy-opacity,1);translate:0 var(--hero-copy-y,0px)}
.brand-site .hero h1{font-size:clamp(48px,5.1vw,78px);line-height:1.22;font-weight:500;letter-spacing:-.055em;margin:0 0 26px}
.brand-site .eyebrow{color:#6f879a;font-size:10px;letter-spacing:.13em;margin-bottom:22px}
.brand-site .hero-description{font-size:14px;line-height:1.95}
.brand-site .hero .primary{padding:15px 20px;margin-top:28px;font-size:12px;color:white}
.brand-site .hero-secondary{margin-top:20px;font-size:11px}
.brand-site .hero-bottom{bottom:30px;left:var(--site-inset);right:var(--site-inset);font-size:10px;z-index:2;opacity:var(--hero-hint-opacity,1)}
.brand-site .hero-bottom-content{display:flex;justify-content:space-between;width:100%}
.brand-site .hero-halo{inset:18% -8% 7% 43%;opacity:.5;z-index:1}
.brand-site .hero-material{position:absolute;inset:0;z-index:0;pointer-events:none}
.brand-site[data-metal-state=loading] .bg-gallery-art,.brand-site[data-metal-state=initializing] .bg-gallery-art{opacity:0}
.brand-site[data-metal-state=fallback] .bg-gallery-camera{animation:brand-sculpture-reveal 3.6s cubic-bezier(.45,0,.2,1) both,brand-sculpture-orbit 12s 3.6s ease-in-out infinite}
.brand-site.gallery-from-login[data-metal-state=fallback] .bg-gallery-camera{animation:brand-sculpture-orbit 12s ease-in-out infinite}
.brand-site .hero .bg-gallery{z-index:0;opacity:var(--hero-art-opacity,1);translate:0 var(--hero-art-y,0px)}
.brand-site .hero:after{content:"";position:absolute;inset:auto 0 0;height:96px;z-index:1;pointer-events:none;background:linear-gradient(0deg,#fbfdff,transparent)}
.brand-site .hero h1 .hero-line{display:block;color:inherit}
.brand-site .hero-enter{animation:brand-hero-enter 880ms var(--enter-delay,0ms) var(--ease) backwards}
.brand-site .hero .eyebrow{--enter-delay:40ms}
.brand-site .hero-line:first-child{--enter-delay:120ms}
.brand-site .hero-line:last-child{--enter-delay:210ms}
.brand-site .hero-description{--enter-delay:280ms}
.brand-site .hero .primary{--enter-delay:350ms}
.brand-site .hero-secondary{--enter-delay:400ms}
.brand-site .hero-bottom-content{--enter-delay:440ms;animation-duration:700ms}
.brand-site .hero-copy:focus-within,.brand-site .hero-bottom:focus-within{opacity:1}
@keyframes brand-hero-enter{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}
@keyframes brand-sculpture-reveal{from{opacity:0;transform:perspective(1200px) translateY(62px) rotateY(-68deg) rotateZ(12deg)}to{opacity:1;transform:perspective(1200px) translateY(0) rotateY(0) rotateZ(0)}}
@keyframes brand-sculpture-orbit{0%,100%{transform:perspective(1200px) translateY(0) rotateY(0) rotateZ(0)}25%{transform:perspective(1200px) translateY(-15px) rotateY(18deg) rotateZ(3deg)}75%{transform:perspective(1200px) translateY(12px) rotateY(-18deg) rotateZ(-3deg)}}
.brand-site.enhanced .chrome-stage{width:62%;height:90%;right:-2%;top:5%}
.brand-site .bg-gallery-art{width:62%;height:90%;right:-2%;top:5%}
.brand-site.enhanced .bg-gallery-veil{background:linear-gradient(90deg,#edf3f7 0%,#edf3f7ee 26%,#edf3f74d 45%,transparent 62%)}
.brand-site .section-pad{padding:88px var(--site-inset)}
.brand-site h2{font-size:clamp(34px,3.5vw,54px);line-height:1.3}
.brand-site .partners-heading,.brand-site .studio-heading{margin-bottom:38px;gap:35px}
.brand-site .partners-heading>p,.brand-site .studio-heading>p{font-size:13px;line-height:1.9}
.brand-site .brand-tabs button{font-size:12px;padding:9px 16px}
.brand-site .brand-field{margin-top:28px;grid-template-columns:30% 1fr;gap:5%}
.brand-site .brand-panel{min-height:230px;padding:0;gap:12px}
.brand-site .brand-name{min-height:106px;font-size:clamp(18px,1.8vw,26px);background:#f1f5f8;border-radius:6px;color:#426076}
.brand-site .industry-note{padding:15px 0;min-height:230px}
.brand-site .industry-note h3{font-size:25px;line-height:1.5;font-weight:400;margin:20px 0 14px}
.brand-site .industry-note p{font-size:12px;line-height:1.9}
.brand-site .brand-foot{margin-top:28px}
.brand-site .studio>.studio-heading .eyebrow{color:#8da9ba}
.brand-site .scene-tabs{top:76px}
.brand-site .creative-display{min-height:530px}
.brand-site .scene-detail{padding:36px 34px}
.brand-site .scene-detail h3{font-size:30px;line-height:1.4}
.brand-site .scene-description{font-size:13px;line-height:1.9}
.brand-site .scene-points p{font-size:12px}
.brand-site .studio-summary{margin-top:30px}
.brand-site .approach{grid-template-columns:42% 52%;gap:6%}
.brand-site .approach-item h3 button{font-size:20px}
.brand-site .approach-note{font-size:13px;line-height:1.9}
.brand-site .ending{min-height:500px;padding-top:76px;padding-bottom:34px}
.brand-site .ending h2{font-size:clamp(42px,4.6vw,68px)}
.brand-site .ending .eyebrow{color:#a4bdcc}
.brand-site .ending .primary.light{font-size:12px;color:#183343;margin-top:24px;padding:15px 20px}
.brand-site .ending footer{margin-top:64px;font-size:10px}
.brand-site .site-tools{position:fixed;right:24px;bottom:18px;z-index:40}
.brand-site .site-tools .gallery-pause{border:1px solid #b9cbd970;padding:7px 12px;border-radius:24px;background:#f4f8fbe8;color:#698295;font-size:10px;box-shadow:none;line-height:18px}
.brand-site .primary,.brand-site .replay-scene,.brand-site .next-scene,.brand-site .brand-tabs button,.brand-site .scene-tabs button{cursor:pointer}
@media(max-width:1100px){.brand-site .hero h1{font-size:54px}.brand-site .nav nav{gap:20px}.brand-site .scene-detail{padding:30px 26px}.brand-site .scene-detail h3{font-size:27px}.brand-site .approach-item h3 button{font-size:17px}}
@media(max-width:850px){.brand-site{--site-inset:5%}.brand-site .nav nav{gap:16px}.brand-site .nav a{font-size:11px}.brand-site .nav .logo img{width:125px}.brand-site .hero-copy{width:60%}.brand-site .hero h1{font-size:46px}.brand-site .hero-description{font-size:12px}.brand-site .section-pad{padding-top:68px;padding-bottom:68px}.brand-site .brand-field{grid-template-columns:1fr;gap:20px}.brand-site .industry-note{min-height:0;padding:0}.brand-site .industry-note h3{margin:0;font-size:22px}.brand-site .brand-name{min-height:90px;font-size:22px}.brand-site .creative-display{min-height:500px}.brand-site .scene-detail h3{font-size:26px}.brand-site .approach-item h3 button{font-size:15px}}

html.pro .brand-site .hero a.primary{background:#294862;border-color:#294862;color:#fff;box-shadow:0 6px 18px #29486210}
html.pro .brand-site .hero a.primary:hover{background:#3b5e78}
html.pro .brand-site .ending a.primary.light{background:#ecf3f8;border-color:#ecf3f8;color:#183343}
.brand-site .hero-bottom{padding-right:120px}
