
:root{
  --bg:#faf9fc; --surface:#ffffff; --ink:#241f2c; --muted:#6f6880;
  --line:#e7e3ef; --accent:#6d4fc4; --accent-ink:#ffffff; --accent-soft:#f0ecfa;
  --warn:#a16a10; --warn-soft:#faf2e2; --bad:#b03a3a; --bad-soft:#fbecec;
  --ok:#2e7d4f; --ok-soft:#e6f4ec;
}
@media (prefers-color-scheme: dark){:root{
  --bg:#151220; --surface:#1e1a2b; --ink:#eae6f4; --muted:#9a92ad;
  --line:#2e2840; --accent:#a98ff0; --accent-ink:#1a1426; --accent-soft:#2a2340;
  --warn:#d9a24a; --warn-soft:#332a18; --bad:#e08585; --bad-soft:#3a2224;
  --ok:#6fbf8f; --ok-soft:#1c2f24;
}}
:root[data-theme="dark"]{
  --bg:#151220; --surface:#1e1a2b; --ink:#eae6f4; --muted:#9a92ad;
  --line:#2e2840; --accent:#a98ff0; --accent-ink:#1a1426; --accent-soft:#2a2340;
  --warn:#d9a24a; --warn-soft:#332a18; --bad:#e08585; --bad-soft:#3a2224;
  --ok:#6fbf8f; --ok-soft:#1c2f24;
}
:root[data-theme="light"]{
  --bg:#faf9fc; --surface:#ffffff; --ink:#241f2c; --muted:#6f6880;
  --line:#e7e3ef; --accent:#6d4fc4; --accent-ink:#ffffff; --accent-soft:#f0ecfa;
  --warn:#a16a10; --warn-soft:#faf2e2; --bad:#b03a3a; --bad-soft:#fbecec;
  --ok:#2e7d4f; --ok-soft:#e6f4ec;
}
*{box-sizing:border-box}
/* 给纵向滚动条常留位置：内容变多变少时滚动条出现/消失会把整页横向挤动十几像素，
   点筛选 chip 时看着就是「页面抖一下、右边被切掉」 */
html{scrollbar-gutter:stable}
/* 手机上表单一行塞不下：label 单独一行、控件占满宽度。
   按钮行不是 .formrow，不受影响 */
@media(max-width:720px){
  dialog{width:96vw;max-width:none!important;padding:16px}
  dialog .formrow{flex-direction:column;align-items:stretch;gap:6px;margin-bottom:12px}
  dialog .formrow>label{min-width:0!important}
  dialog .formrow input:not([type=checkbox]),dialog .formrow select,dialog .formrow .dd{width:100%!important;flex:none!important}
  dialog .formrow input[type=file]{max-width:100%}
  dialog .formrow>label:has(input[type=checkbox]){display:flex;align-items:center;gap:8px}
}
body{margin:0;background:var(--bg);color:var(--ink);
  font:15px/1.6 -apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Segoe UI",sans-serif}
/* 宽度自适应：大屏铺开、小屏留边。以前锁 960px，2000 宽的屏幕只用中间一条，表格只能左滑右滑 */
.wrap{max-width:1760px;margin:0 auto;padding:16px clamp(14px,2vw,34px) 64px}
h1{font-size:20px;margin:0}
h2{font-size:16px;margin:18px 0 10px}
a{color:var(--accent)}
header.top{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:14px}
header.top .sp{margin-left:auto;display:flex;gap:10px;align-items:center;color:var(--muted);font-size:13px}
button{font:inherit;cursor:pointer}
.btn{border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:8px;padding:6px 14px;font-size:14px}
.btn.pri{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600}
.btn.sm{padding:3px 10px;font-size:12.5px;border-radius:7px}
.btn.danger{color:var(--bad)}
.btn:disabled{opacity:.5;cursor:not-allowed}
input,select,textarea{font:inherit;padding:7px 10px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink)}
input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:1px;border-color:transparent}
.tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.tab{border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:999px;padding:5px 14px;font-size:14px;cursor:pointer}
.tab.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
/* 一级：明星网格（等宽卡片，按库存量降序） */
.lv1{display:grid;grid-template-columns:repeat(auto-fill,minmax(172px,1fr));gap:8px;margin-bottom:16px}
.t1{border:1.5px solid var(--line);background:var(--surface);color:var(--ink);border-radius:12px;
  padding:9px 13px 8px;cursor:pointer;text-align:left;line-height:1.4;min-width:0;
  display:flex;flex-direction:column;gap:1px}
.t1 .nm{font-size:14.5px;font-weight:700;letter-spacing:.01em;display:flex;align-items:baseline;gap:6px;min-width:0}
.t1 .nm .name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.t1 .nm .n{margin-left:auto;flex:none;font-size:12px;font-weight:600;color:var(--accent);
  background:var(--accent-soft);border-radius:999px;padding:0 8px;font-variant-numeric:tabular-nums}
.t1 .sub{font-size:12px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.t1.on{border-color:var(--accent);background:var(--accent-soft)}
.t1.on .nm .name{color:var(--accent)}
.t1.on .nm .n{background:var(--accent);color:var(--accent-ink)}
@media(max-width:600px){.lv1{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}}
/* 选明星的其它交互形态（随风格切换） */
/* sunset：大卡网格（流畅，无横滑） */
.picksun{display:grid;grid-template-columns:repeat(auto-fill,minmax(158px,1fr));gap:11px;margin-bottom:14px}
.suncard{position:relative;text-align:left;cursor:pointer;border:none;padding:15px 15px 13px;overflow:hidden;
  background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 12%,var(--surface)),var(--surface));
  box-shadow:0 8px 22px -16px color-mix(in srgb,var(--accent) 55%,transparent);transition:transform .16s,box-shadow .16s;display:flex;flex-direction:column;gap:3px}
.suncard:hover{transform:translateY(-3px);box-shadow:0 14px 28px -16px color-mix(in srgb,var(--accent) 60%,transparent)}
.suncard .sunt{font-size:15.5px;font-weight:800;letter-spacing:.01em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.suncard .sunv{font-size:12px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.suncard .sunn{position:absolute;top:11px;right:11px;font-size:11px;font-weight:700;color:#fff;background:linear-gradient(120deg,#ff9a52,var(--accent));border-radius:999px;padding:2px 9px}
.suncard.on{outline:2px solid var(--accent);outline-offset:-2px}
.suncard.on .sunt{color:var(--accent)}
/* neon：命令面板（折叠一行，浮层搜索） */
.cmd{position:relative;margin-bottom:14px;max-width:460px}
.cmdbtn{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;cursor:pointer;
  background:rgba(255,255,255,.04);border:1px solid var(--line);border-radius:11px;padding:11px 16px;color:var(--ink)}
.cmdbtn:hover{border-color:var(--accent)}
.cmd.open .cmdbtn{border-color:var(--accent);box-shadow:0 0 18px -4px color-mix(in srgb,var(--accent) 60%,transparent)}
.cmdcur{font-size:15px;font-weight:700;color:var(--accent);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cmdmeta{font-size:12px;color:var(--muted);white-space:nowrap}
.cmdpanel{position:absolute;left:0;right:0;top:calc(100% + 6px);z-index:40;background:var(--surface);
  border:1px solid var(--accent);border-radius:12px;padding:8px;box-shadow:0 0 28px -8px color-mix(in srgb,var(--accent) 55%,transparent);
  opacity:0;transform:translateY(-6px);pointer-events:none;transition:opacity .15s,transform .15s}
.cmd.open .cmdpanel{opacity:1;transform:none;pointer-events:auto}
.cmdin{width:100%;margin-bottom:6px}
.cmdlist{max-height:280px;overflow:auto}
.cmdopt{display:flex;justify-content:space-between;gap:10px;width:100%;text-align:left;cursor:pointer;background:none;border:none;border-radius:8px;padding:9px 12px;color:var(--ink)}
.cmdopt:hover{background:color-mix(in srgb,var(--accent) 12%,transparent)}
.cmdopt.on{color:var(--accent);font-weight:700}
.cmdopt .n{color:var(--accent);font-variant-numeric:tabular-nums}
/* 悬浮选择器：一枚浮动药丸 + 点开的浮层小卡（不贴边，灵动简洁） */
#ftrigger{position:fixed;top:70px;left:22px;z-index:70;display:flex;align-items:center;gap:8px;cursor:pointer;font:inherit;
  background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:8px 15px 8px 13px;color:var(--ink);
  max-width:min(72vw,320px);box-shadow:0 10px 26px -10px rgba(20,20,40,.3);transition:transform .15s,box-shadow .15s,border-color .15s}
#ftrigger:hover{transform:translateY(-1px);border-color:var(--accent);box-shadow:0 14px 30px -10px rgba(20,20,40,.38)}
#ftrigger.on{border-color:var(--accent)}
#ftrigger .fdot{width:8px;height:8px;border-radius:50%;background:var(--accent);flex:none;box-shadow:0 0 9px var(--accent)}
#ftrigger b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:700}
#ftrigger .fsub{color:var(--muted);font-size:12px;white-space:nowrap;border-left:1px solid var(--line);padding-left:8px}
#ftrigger .fchev{color:var(--accent);margin-left:2px;transition:transform .2s}
#ftrigger.on .fchev{transform:rotate(180deg)}
#fpanel{position:fixed;top:114px;left:22px;z-index:69;width:270px;max-height:min(72vh,540px);overflow:auto;
  background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:12px 13px 14px;
  box-shadow:0 22px 50px -18px rgba(20,20,40,.42);opacity:0;transform:translateY(-8px) scale(.98);transform-origin:top left;
  pointer-events:none;transition:opacity .17s cubic-bezier(.2,.8,.3,1),transform .17s cubic-bezier(.2,.8,.3,1)}
#fpanel.open{opacity:1;transform:none;pointer-events:auto}
.docklabel{font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin:9px 2px 3px}
.docklabel:first-child{margin-top:0}
.dockpick{display:flex;flex-direction:column;gap:3px}
.dockpick button{display:flex;justify-content:space-between;align-items:center;gap:8px;text-align:left;width:100%;
  background:none;border:1px solid transparent;border-radius:10px;padding:7px 11px;color:var(--ink);cursor:pointer;font:inherit}
.dockpick button:hover{background:var(--accent-soft)}
.dockpick button.on{background:var(--accent);color:var(--accent-ink)}
.dockpick .dpn{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:600}
.dockpick .n{flex:none;opacity:.7;font-size:11px;font-variant-numeric:tabular-nums}
.dockpick button.on .n{opacity:.9}
.dsearch{width:100%;margin-bottom:4px}
.dockpick button.hl{background:var(--accent-soft);border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}
#fpanel .seg{display:flex;flex-wrap:wrap;border:none;background:none;gap:5px;margin:0}
#fpanel .seg button{border:1px solid var(--line);border-radius:999px;background:var(--surface);padding:5px 12px}
#fpanel .seg button.on{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
#fpanel .subtabs,#cmdbody .subtabs{display:flex;flex-wrap:wrap;gap:5px;border:none;margin:0;overflow:visible}
#fpanel .subtabs button,#cmdbody .subtabs button{border:1px solid var(--line);border-radius:999px;padding:4px 11px;margin:0;color:var(--ink)}
#fpanel .subtabs button.on,#cmdbody .subtabs button.on{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
#cmdbody .seg{display:flex;flex-wrap:wrap;border:none;background:none;gap:5px;margin:0}
#cmdbody .seg button{border:1px solid var(--line);border-radius:999px;background:var(--surface);padding:5px 12px}
#cmdbody .seg button.on{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
@media(max-width:760px){#ftrigger,#fpanel{display:none!important}}
/* neon：赛博命令面板（⌘K） —— 结构在此，霓虹发光在主题覆盖里 */
#cmdtrig{position:fixed;left:22px;bottom:22px;z-index:71;display:flex;align-items:center;gap:9px;cursor:pointer;font:inherit;
  border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:12px;padding:9px 13px;max-width:min(60vw,320px);
  box-shadow:0 14px 34px -14px rgba(20,20,40,.4);transition:transform .16s,box-shadow .2s,border-color .2s;overflow:hidden}
#cmdtrig:hover{transform:translateY(-2px)}
#cmdtrig .ck{flex:none;font-size:11px;font-weight:800;letter-spacing:.05em;padding:2px 7px;border-radius:7px;background:var(--accent-soft);color:var(--accent);border:1px solid var(--accent)}
#cmdtrig .ctxt{display:flex;align-items:baseline;gap:8px;min-width:0}
#cmdtrig .ctxt b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13.5px;font-weight:700}
#cmdtrig .ctxt i{flex:none;font-style:normal;font-size:11.5px;color:var(--muted);border-left:1px solid var(--line);padding-left:8px}
#cmdtrig .cbeam{display:none}
#cmdovl{position:fixed;inset:0;z-index:120;display:flex;align-items:flex-start;justify-content:center;padding-top:14vh;
  background:rgba(6,6,20,.5);backdrop-filter:blur(4px);opacity:0;pointer-events:none;transition:opacity .16s}
#cmdovl.open{opacity:1;pointer-events:auto}
#cmdbox{position:relative;width:min(560px,92vw);max-height:70vh;overflow:hidden auto;border-radius:16px;padding:16px 16px 18px;
  background:var(--surface);border:1px solid var(--line);box-shadow:0 40px 90px -30px rgba(0,0,0,.6);
  transform:translateY(-14px) scale(.985);transition:transform .18s cubic-bezier(.2,.8,.3,1)}
#cmdovl.open #cmdbox{transform:none}
#cmdbox .scan{display:none}
#cmdbody .dsearch{font-size:15px;padding:11px 13px;margin-bottom:10px}
#cmdbody .dockpick{gap:2px}
#cmdbody .dockpick button{padding:9px 12px}
@media(max-width:760px){#cmdtrig,#cmdovl{display:none!important}}
/* azure：自定义下拉 */
.dd{position:relative;margin-bottom:16px;max-width:360px}
.ddbtn{display:flex;align-items:center;gap:12px;width:100%;text-align:left;cursor:pointer;
  background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:11px 15px;
  box-shadow:0 2px 8px -4px rgba(20,30,60,.15);transition:border-color .15s,box-shadow .15s}
.ddbtn:hover{border-color:var(--accent)}
.dd.open .ddbtn{border-color:var(--accent);box-shadow:0 4px 14px -4px color-mix(in srgb,var(--accent) 45%,transparent)}
.ddcur{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}
.ddcur b{font-size:15.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ddsub{font-size:12px;color:var(--muted)}
.ddchev{color:var(--accent);font-size:14px;transition:transform .18s}.dd.open .ddchev{transform:rotate(180deg)}
/* 菜单宽度不再被触发器锁死：min-width 保证至少和触发器一样宽，width:max-content 让它按
   最长的一条选项撑开。原来写死 left:0;right:0，窄触发器（如「归属」那个）里选项名会被
   右边的 meta 挤到 0 宽，ellipsis 一吃就只剩「利润分成 · 826单」，看不见是谁。 */
.ddmenu{position:absolute;left:0;top:calc(100% + 6px);min-width:100%;width:max-content;
  max-width:min(420px,90vw);z-index:40;background:var(--surface);
  border:1px solid var(--line);border-radius:12px;box-shadow:0 16px 40px -14px rgba(20,30,60,.35);
  padding:5px;max-height:320px;overflow:auto;opacity:0;transform:translateY(-6px);pointer-events:none;transition:opacity .16s,transform .16s}
.dd.open .ddmenu{opacity:1;transform:none;pointer-events:auto}
.ddopt{display:flex;align-items:center;gap:10px;width:100%;text-align:left;cursor:pointer;background:none;border:none;border-radius:8px;padding:9px 12px;color:var(--ink)}
.ddopt:hover{background:var(--accent-soft)}
.ddopt.on{background:var(--accent-soft)}.ddopt.on .ddnm{color:var(--accent);font-weight:700}
/* 名字优先保底 4.5em，meta 才是可以被压缩省略的那个——反过来会看不见选的是谁 */
.ddopt .ddnm{flex:1 1 auto;min-width:4.5em;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ddopt .ddmeta{flex:0 1 auto;min-width:0;font-size:11.5px;color:var(--muted);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ddopt .n{flex:none;font-size:12px;font-weight:700;color:var(--accent);background:var(--accent-soft);border-radius:999px;padding:1px 9px;font-variant-numeric:tabular-nums}
/* mono：紧凑编号索引（多列） */
.picklist{display:grid;grid-template-columns:repeat(auto-fill,minmax(228px,1fr));gap:0 26px;margin-bottom:20px;border-top:2px solid var(--ink)}
.pickrow{display:flex;align-items:baseline;gap:11px;width:100%;text-align:left;background:none;border:none;border-bottom:1px solid var(--line);padding:8px 2px;cursor:pointer;color:var(--ink);font:inherit}
.pickrow .idx{font-family:ui-monospace,Menlo,Consolas,monospace;color:var(--muted);font-size:11.5px;min-width:20px;letter-spacing:.04em}
.pickrow .pnm{flex:1;font-weight:600;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pickrow .pvn{font-size:11px;color:var(--muted)}
.pickrow .n{color:var(--accent);font-weight:700;font-size:12.5px;font-variant-numeric:tabular-nums}
.pickrow:hover .pnm{color:var(--accent)}.pickrow.on .pnm,.pickrow.on .idx{color:var(--accent)}
/* forest：单行横滑标签条 */
.pickchips{display:flex;flex-wrap:nowrap;gap:7px;margin-bottom:14px;overflow-x:auto;padding-bottom:6px}
.pickchips::-webkit-scrollbar{height:6px}.pickchips::-webkit-scrollbar-thumb{background:var(--line);border-radius:99px}
.pickchip{flex:none;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:999px;padding:6px 14px;font-size:13px;cursor:pointer;display:inline-flex;gap:6px;align-items:center;white-space:nowrap}
.pickchip .n{opacity:.6;font-size:11px;font-variant-numeric:tabular-nums}
.pickchip.on{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
.pickchip.on .n{opacity:.85}
/* 二级：地点分段器 */
.seg{display:inline-flex;flex-wrap:wrap;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--surface);margin-bottom:14px}
.seg button{border:none;background:transparent;color:var(--ink);padding:7px 16px;font-size:14px;cursor:pointer;border-right:1px solid var(--line);font-variant-numeric:tabular-nums}
.seg button:last-child{border-right:none}
.seg button .n{color:var(--muted);font-size:12px;margin-left:4px}
.seg button.on{background:var(--accent);color:var(--accent-ink);font-weight:600}
.seg button.on .n{color:var(--accent-ink);opacity:.75}
/* 三级：日期下划线页签 */
.subtabs{display:flex;gap:2px;border-bottom:1px solid var(--line);margin-bottom:14px;overflow-x:auto;scrollbar-width:none}
.subtabs::-webkit-scrollbar{display:none}
.subtabs button{border:none;background:none;padding:7px 13px 9px;font-size:14px;color:var(--muted);cursor:pointer;
  border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap;font-variant-numeric:tabular-nums}
.subtabs button .n{font-size:12px;opacity:.8;margin-left:3px}
.subtabs button.on{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}
/* 场次公告 */
.notice{border:1.5px solid var(--accent);background:var(--accent-soft);border-radius:12px;
  padding:12px 16px;margin:2px 0 14px;font-size:15.5px;font-weight:600;line-height:1.7;
  white-space:pre-wrap;display:flex;gap:10px;align-items:flex-start}
.notice .ic{font-size:18px;line-height:1.5}
.num{font-variant-numeric:tabular-nums}
/* 结算看板：整体行距宽松 + 合计行独立分隔 */
.board table.tight td,.board table.tight th{padding:11px 12px}
.board table.tight tfoot .sum td{border-top:2px solid var(--accent)}
/* 数字列表头与数据都居中（票面/成本/金额/张数等）；文字列保持左对齐。
   表头跟数据同一对齐方式，不再出现表头右、数据左的错位 */
#mine .num,#mine th.num,#ptBody .num,#ptBody th.num{text-align:center}
.tblwrap{overflow-x:auto;border:1px solid var(--line);border-radius:10px;background:var(--surface);margin-bottom:16px;
  /* 触控板两指左滑 / 手机手指左滑直接看右边的列：
     overscroll-behavior-x:contain 防止横向手势被浏览器当成「后退/前进」抢走；
     touch-action 明确允许双向平移；-webkit-overflow-scrolling 给 iOS 惯性滚动 */
  overscroll-behavior-x:contain;touch-action:pan-x pan-y;-webkit-overflow-scrolling:touch}
table{border-collapse:collapse;width:100%}
th,td{padding:8px 11px;text-align:left;white-space:nowrap;font-size:14px}
th{color:var(--muted);font-weight:500;font-size:12px;letter-spacing:.05em;border-bottom:1px solid var(--line)}
td{border-bottom:1px solid var(--line);font-variant-numeric:tabular-nums}
tr:last-child td{border-bottom:none}
.pill{display:inline-block;border-radius:999px;padding:1px 9px;font-size:12.5px;font-weight:600;background:var(--accent-soft);color:var(--accent)}
.pill.warn{background:var(--warn-soft);color:var(--warn)}
.pill.bad{background:var(--bad-soft);color:var(--bad)}
.pill.ok{background:var(--ok-soft);color:var(--ok)}
.pill.gray{background:var(--line);color:var(--muted)}
tr.held td{opacity:.5}
tr.rvrow td{background:var(--warn-soft)}
.rvtag{display:inline-block;font-size:10.5px;font-weight:700;color:#fff;background:var(--warn);border-radius:5px;padding:1px 6px;white-space:nowrap}
.muted{color:var(--muted);font-size:13px}
.card{border:1px solid var(--line);border-radius:12px;background:var(--surface);padding:16px;margin-bottom:14px}
.formrow{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:10px}
.formrow label{font-size:13.5px;color:var(--muted)}
dialog{border:1px solid var(--line);border-radius:14px;background:var(--surface);color:var(--ink);padding:20px;max-width:400px;width:92vw}
dialog::backdrop{background:rgba(20,15,35,.45)}
/* ===== 对账表 ===== */
.rc-block{border:1px solid var(--line);border-radius:11px;padding:12px 14px;margin-bottom:14px}
.rc-head{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.rc-head .sp{flex:1}
.rc-sec{margin-top:10px}
.rc-sec>summary{cursor:pointer;font-size:13px;padding:5px 0;list-style:none}
.rc-sec>summary::-webkit-details-marker{display:none}
.rc-sec>summary::before{content:'▸';display:inline-block;width:14px;color:var(--muted)}
.rc-sec[open]>summary::before{content:'▾'}
.rc-sec .tblwrap{margin-top:4px}
tr.rc-bad td{background:var(--bad-soft)}
tr.rc-warn td{background:var(--warn-soft)}

/* ===== 确认框（替掉浏览器原生 confirm/alert）===== */
#dlgAsk{max-width:min(94vw,440px);padding:0;overflow:hidden}
.ask-h{padding:18px 20px 0}
.ask-t{font-size:16px;font-weight:700;margin:0 0 10px;display:flex;align-items:center;gap:8px}
.ask-b{padding:0 20px 4px;font-size:13.5px;line-height:1.7;max-height:52vh;overflow:auto;color:var(--ink)}
.ask-b .li{padding-left:12px;text-indent:-12px;color:var(--muted)}
.ask-b .warn{color:var(--warn);font-weight:600}
.ask-b b{font-weight:700}
.ask-f{display:flex;gap:8px;justify-content:flex-end;padding:14px 20px;margin-top:12px;border-top:1px solid var(--line);background:var(--bg)}
.btn.pri.danger{background:var(--bad);border-color:var(--bad);color:#fff}

/* ===== 上架向导 ===== */
#dlgMts{max-width:min(96vw,940px);padding:0;overflow:hidden}
.wz{display:flex;flex-direction:column;max-height:90vh}
.wz-head{padding:16px 20px 14px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:12px}
.wz-title{font-size:17px;font-weight:700;margin:0 0 2px}
.wz-sub{font-size:12.5px;color:var(--muted);margin:0}
.wz2{display:grid;grid-template-columns:216px 1fr;flex:1;min-height:0}
.wz-rail{background:var(--bg);border-right:1px solid var(--line);padding:12px 10px;display:flex;flex-direction:column;gap:2px;overflow:auto}
.wz-rs{display:flex;gap:10px;align-items:flex-start;padding:9px 10px;border-radius:10px;text-align:left;background:none;
  border:1px solid transparent;color:var(--muted);cursor:default;font:inherit;width:100%}
.wz-rs.ok{color:var(--ink);cursor:pointer}
.wz-rs.ok:hover{background:var(--accent-soft)}
.wz-rs.on{background:var(--surface);border-color:var(--line);color:var(--ink);box-shadow:0 2px 8px -6px rgba(0,0,0,.3)}
.wz-rs .n{width:22px;height:22px;border-radius:50%;border:1.5px solid var(--line);display:grid;place-items:center;
  font-size:11.5px;font-weight:700;flex:none;line-height:1;margin-top:1px}
.wz-rs.on .n{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.wz-rs.ok .n{background:var(--ok-soft);border-color:var(--ok);color:var(--ok)}
.wz-rs>div{min-width:0}
.wz-rs b{display:block;font-size:13px;font-weight:650}
.wz-rs i{display:block;font-style:normal;font-size:11.5px;color:var(--muted);margin-top:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wz-rs.on i{color:var(--accent)}
.wz-main{display:flex;flex-direction:column;min-width:0;min-height:0}
.wz-body{padding:20px 22px;overflow:auto;flex:1;min-height:280px}
.wz-q{font-size:17px;font-weight:700;margin:0 0 4px;letter-spacing:.01em}
.wz-hint{font-size:12.5px;color:var(--muted);margin:0 0 16px;line-height:1.6;max-width:62em}
.wz-sec{font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:18px 0 8px;font-weight:600}
.wz-opts{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px}
.wz-opt{position:relative;border:1.5px solid var(--line);border-radius:13px;padding:14px 14px 13px 16px;background:var(--surface);
  text-align:left;cursor:pointer;transition:border-color .12s,background .12s,transform .1s,box-shadow .12s;display:flex;flex-direction:column;gap:3px;font:inherit;color:var(--ink)}
.wz-opt:hover{border-color:var(--accent);transform:translateY(-1px);box-shadow:0 8px 20px -14px color-mix(in srgb,var(--accent) 60%,transparent)}
.wz-opt.on{border-color:var(--accent);background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent)}
.wz-opt.on::after{content:'✓';position:absolute;top:10px;right:12px;width:20px;height:20px;border-radius:50%;background:var(--accent);
  color:var(--accent-ink);font-size:12px;font-weight:700;display:grid;place-items:center}
.wz-opt.dis{opacity:.45;cursor:not-allowed}
.wz-opt.dis:hover{border-color:var(--line);transform:none;box-shadow:none}
.wz-opt .ic{font-size:20px;line-height:1;margin-bottom:4px}
.wz-opt b{display:block;font-size:14.5px;padding-right:22px}
.wz-opt span{display:block;font-size:12px;color:var(--muted);line-height:1.55}
.wz-opt .tag{display:inline-block;margin-top:6px;font-size:11px;font-weight:600;color:var(--accent);
  background:color-mix(in srgb,var(--accent) 12%,transparent);border-radius:999px;padding:1px 8px;width:fit-content}
.wz-sum{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;margin-bottom:14px}
.wz-sum div{border:1px solid var(--line);border-radius:10px;padding:8px 11px;background:var(--bg)}
.wz-sum .k{font-size:11px;color:var(--muted)}
.wz-sum .v{font-size:14px;font-weight:650;margin-top:1px}
.wz-prev{margin-top:14px;border:1px solid var(--line);border-radius:10px;padding:8px 12px;font-size:12.5px;background:var(--bg)}
.wz-prev .l{display:flex;gap:8px;align-items:baseline;padding:3px 0}
.wz-prev .l .a{color:var(--muted);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wz-prev .l .b{font-weight:600}
.wz-foot{display:flex;gap:8px;align-items:center;padding:12px 20px;border-top:1px solid var(--line);background:var(--bg)}
.wz-foot .sp{flex:1}
.wz-foot .btn.pri{padding:7px 18px;font-size:13.5px}
.wz-warn{border-left:3px solid var(--warn);background:var(--warn-soft);color:var(--warn);
  border-radius:0 8px 8px 0;padding:9px 12px;font-size:12.5px;line-height:1.6;margin-top:12px}
.wz-bad{border-left-color:var(--bad);background:var(--bad-soft);color:var(--bad)}
.wz-ok{border-left-color:var(--ok);background:var(--ok-soft);color:var(--ok)}
/* 最终确认那张对照表：左边我们的库存，右边将要挂上去的样子 */
.wz-rev{width:100%;border-collapse:collapse;font-size:12.5px}
.wz-rev th{text-align:left;font-weight:600;color:var(--muted);font-size:11.5px;padding:0 8px 6px;border-bottom:1px solid var(--line)}
.wz-rev td{padding:7px 8px;border-bottom:1px solid var(--line);vertical-align:top}
.wz-rev tr:last-child td{border-bottom:none}
.wz-rev .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.wz-rev .no td{opacity:.5}
.wz-money{font-weight:700;font-variant-numeric:tabular-nums}
.wz-arrow{color:var(--muted);padding:0 2px}
@media(max-width:700px){.wz2{grid-template-columns:1fr}.wz-rail{flex-direction:row;overflow-x:auto;border-right:none;border-bottom:1px solid var(--line);padding:8px}
  .wz-rs{flex:none;width:auto}.wz-rs i{display:none}}
/* ===== 全局交互 ===== */
/* 导航吸顶：滚到表格深处也能一键换页。风格里把它做成侧边栏（position:fixed）的会覆盖掉这条 */
nav.tabs{position:sticky;top:0;z-index:20;padding:8px 0;margin:0 0 14px;background:var(--bg)}
/* 【别加 backdrop-filter / 整页淡入】吸顶栏磨砂 + 每次换页 fadeup，在 Windows Chrome 上滚一下整页重绘，
   她的原话「以前很丝滑的」—— 这两条就是 2026-09-05 凌晨改版塞进去的，去掉。 */
/* 骨架屏：换页时先摆出版式，比一行「加载中…」稳 */
.skelwrap{display:grid;gap:10px;padding:4px 0}
/* 查价页 */
.qt-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap}
.qt-toggle{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--muted);white-space:nowrap}
.qt-pick{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end;margin-top:14px}
.qt-f{display:flex;flex-direction:column;gap:4px;min-width:150px;flex:1}
.qt-f>span{font-size:11.5px;color:var(--muted);letter-spacing:.04em}
.qt-f select,.qt-f input{width:100%}
.qt-pick .btn{align-self:flex-end;height:34px}
.qt-empty{color:var(--muted);text-align:center;padding:36px 16px;font-size:13.5px}
.qt-sum{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;padding-bottom:10px;border-bottom:1px solid var(--line);margin-bottom:6px}
.qt-title{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:15px}
.qt-kpis{display:flex;gap:6px;flex-wrap:wrap}
.qt-tw{overflow:auto;max-height:min(62vh,640px)}
.qt-tbl thead th{position:sticky;top:0;background:var(--surface);z-index:1}
.qt-tbl td{font-variant-numeric:tabular-nums;vertical-align:top}
.qt-tbl td.num,.qt-tbl th.num{text-align:right}
.qt-mp{font-size:15px}
.qt-in{width:92px;text-align:right}
.qt-cb{position:relative}
.qt-top{position:relative;z-index:20;overflow:visible}
#qtBody{position:relative;z-index:1}
.qt-dd{position:absolute;left:0;right:0;top:100%;z-index:1000;max-height:320px;overflow:auto;background:var(--surface);border:1px solid var(--line);border-radius:10px;box-shadow:0 10px 30px rgba(0,0,0,.12);margin-top:4px}
.qt-dd-g{font-size:11px;color:var(--muted);letter-spacing:.05em;padding:8px 12px 4px;position:sticky;top:0;background:var(--surface)}
.qt-dd-it{display:flex;justify-content:space-between;gap:10px;padding:8px 12px;cursor:pointer;font-size:13.5px}
.qt-dd-it:hover{background:rgba(109,79,196,.08)}
.qt-dd-it em{font-style:normal;color:var(--muted);font-size:11.5px;white-space:nowrap}
.qt-dd-empty{padding:12px;color:var(--muted);font-size:13px}
.qt-bot{margin-top:12px;border-top:1px dashed var(--line);padding-top:8px}
.qt-bot summary{cursor:pointer;font-size:13px;color:var(--muted)}
.qt-bot-in{margin-top:8px}.qt-bot-in textarea{width:100%;max-width:520px;font-family:inherit;font-size:13px}
.qt-botsel{max-width:170px;font-size:12.5px}
.qt-dates{flex:2;min-width:260px}
.qt-best{background:rgba(52,168,83,.10);font-weight:600}

.skel{position:relative;overflow:hidden}.skel::after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.22),transparent);transform:translateX(-100%);animation:skelsh 1.1s infinite}
@keyframes skelsh{to{transform:translateX(100%)}}
#view.vin>*{animation:viewin .14s ease-out both}
@keyframes viewin{from{opacity:0;transform:translateY(3px)}to{opacity:1;transform:none}}
.btn:active:not(:disabled){transform:scale(.97)}
.btn:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
tbody tr:hover{background:rgba(109,79,196,.06)}
@media (prefers-reduced-motion:reduce){#view.vin>*,.skel::after{animation:none}}
.skel{border-radius:10px;height:18px;background:linear-gradient(90deg,var(--line) 25%,color-mix(in srgb,var(--line) 35%,var(--surface)) 50%,var(--line) 75%);
  background-size:200% 100%;animation:shimmer 1.3s linear infinite}
@keyframes shimmer{from{background-position:200% 0}to{background-position:-200% 0}}
tbody tr{transition:background .12s}
tbody tr:not(.sel):hover td{background:color-mix(in srgb,var(--accent) 5%,transparent)}
.btn{transition:background .12s,border-color .12s,color .12s,transform .08s,box-shadow .12s}
.btn:hover:not(:disabled){border-color:color-mix(in srgb,var(--accent) 55%,var(--line))}
.btn:active:not(:disabled){transform:translateY(1px)}
.chip,.tab,.pill{transition:background .12s,border-color .12s,color .12s}
dialog[open]{animation:dlgin .18s cubic-bezier(.2,.8,.3,1)}
@keyframes dlgin{from{opacity:0;transform:translateY(8px) scale(.985)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.001s!important;transition-duration:.001s!important}}

/* ===== 库存页：一块工具卡 + 一块摩天轮面板，不再是一摞条 ===== */
.ivtop{border:1px solid var(--line);border-radius:12px;background:var(--surface);padding:12px 14px 11px;margin-bottom:10px;
  display:flex;flex-direction:column;gap:10px}
.ivtop .bar2{margin:0}
.ivtop #ip{min-width:250px;max-width:440px;font-weight:600}
.ivtop .stats{margin:0;gap:6px}
.ivtop .stat{padding:4px 11px;border-radius:8px;background:var(--bg)}
.ivtop .stat b{font-size:15.5px}
.ivtop .stat span{font-size:11px}
.filters{display:flex;flex-wrap:wrap;gap:6px 22px;align-items:center;border-top:1px dashed var(--line);padding-top:10px}
.filters:empty{display:none}
.filters .chips{display:inline-flex;align-items:center;gap:5px;margin:0;flex-wrap:wrap}
.filters .chips>.muted{min-width:0!important;margin-right:2px}
.filters select{padding:3px 8px;font-size:12.5px;border-radius:7px}
.rbline{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12.5px;color:var(--muted)}
.rbline select{padding:3px 8px;font-size:12.5px;border-radius:7px}
.mtsp{border:1px solid color-mix(in srgb,var(--accent) 35%,var(--line));background:color-mix(in srgb,var(--accent) 5%,var(--surface));
  border-radius:12px;padding:9px 12px;margin-top:8px}
.mtsp-h{display:flex;gap:7px;align-items:center;flex-wrap:wrap}
.mtsp-h .sp{flex:1}
.mtsp-l{font-size:12.5px;color:var(--muted);margin-top:6px;display:flex;gap:6px 14px;flex-wrap:wrap;align-items:center}
.mtsp-l.bad{color:var(--bad);font-weight:600}
/* 大组下面的子页条 */
#subnav{margin:-8px 0 14px;padding:0 2px}
#subnav button.on{color:var(--accent);border-bottom:2px solid var(--accent)}
/* 平台卖出筛选面板：四行分层 */
.psbar{padding:10px 12px!important;margin-bottom:10px}
.psrow{display:flex;gap:5px 6px;flex-wrap:wrap;align-items:center;margin-top:6px}
.psrow:first-child{margin-top:0}
.psrow.psfoot{border-top:1px solid var(--line);padding-top:8px;margin-top:8px}
.pslab{font-size:12px;color:var(--muted);margin-right:2px;white-space:nowrap}
.psgap{width:10px}
.pssel{padding:4px 8px;font-size:13px}
.chip .cn{font-size:10.5px;opacity:.7;margin-left:3px}
.chip.psmore{border-style:dashed}
#psMoreBox{padding:4px 0 2px;border-top:1px dashed var(--line);margin-top:6px}
/* 账号页：权限勾选条 */
.permrow{display:flex;flex-wrap:wrap;gap:4px 6px;max-width:560px}
.pchip{display:inline-flex;align-items:center;gap:4px;font-size:12px;padding:2px 8px;border:1px solid var(--line);border-radius:999px;cursor:pointer;color:var(--muted);user-select:none;transition:background .15s,color .15s,border-color .15s}
.pchip input{margin:0;width:12px;height:12px}
.pchip.on{background:color-mix(in srgb,var(--accent) 12%,var(--surface));border-color:color-mix(in srgb,var(--accent) 45%,var(--line));color:var(--ink)}
tr.me td{background:color-mix(in srgb,var(--accent) 4%,transparent)}
.scrow{display:flex;align-items:center;gap:8px;padding:5px 8px;border-radius:7px;cursor:pointer;font-size:13px}
.scrow:hover{background:var(--accent-soft)}
.scrow.off{opacity:.45}.scrow.on{background:color-mix(in srgb,var(--accent) 10%,var(--surface))}
.scrow input{margin:0}
/* 没权限的控件：body 上挂 np-<模块>，纯 CSS 收口，重画多少次都不用惦记（真正拦的是接口）。
   价格 / 备注这类要留着看，所以只是变成只读的样子，不整个藏掉 */
.np-pricing #bk_set,.np-pricing #bk_add,.np-pricing #bk_pct,.np-pricing #bk_go,.np-pricing #iImport,.np-pricing #mt_price,
.np-inventory #iAdd,.np-inventory #bk_hide,.np-inventory #bk_show,.np-inventory [data-hide],.np-inventory [data-show],.np-inventory [data-rm],
.np-mts_list #mt_up,.np-mts_list #mt_card,.np-mts_list #mt_down,.np-mts_list #mt_map,.np-mts_list #mt_automap,.np-mts_list [data-mpdown],.np-mts_list [data-mpup],.np-mts_list #bkDown,
.np-mts_price #apSave,.np-mts_price #bkApGo,.np-mts_price [data-rp]{display:none!important}
.np-pricing [data-ask],.np-inventory .notecell,
.np-mts_price [data-apm],.np-mts_price [data-apg],.np-mts_price [data-apf],.np-mts_price [data-apx],.np-mts_price [data-aptb],.np-mts_price #apOn,.np-mts_price #apInt,
.np-mts_price #bkApm,.np-mts_price #bkApg,.np-mts_price #bkApf,.np-mts_price #bkApx,.np-mts_price #bkApt{pointer-events:none;opacity:.7}
.np-mts_list.np-mts_price #mt_more,.np-mts_list.np-mts_price #mt_save{display:none!important}
.mtsp-d{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:8px;padding-top:8px;border-top:1px dashed var(--line);font-size:12.5px;color:var(--muted)}
.mtsp-d input{padding:3px 8px;font-size:12.5px;border-radius:7px}
/* 【自动改价的状态必须一眼看见】她的原话：「提醒太小了，我根本看不清什么在自动改价」。
   所以三层都标：顶上一条状态栏说清「在跟价的是哪几条」，行左边一道竖杠 + 淡底色，模式那个下拉本身也上色 */
.ap-live{border-radius:11px;padding:11px 13px;margin-top:9px;border:1.5px solid var(--line);background:var(--surface)}
.ap-live.on{border-color:var(--ok);background:color-mix(in srgb,var(--ok) 9%,var(--surface))}
.ap-live.off{border-color:var(--warn);background:var(--warn-soft)}
.ap-live.none{border-style:dashed}
.apl-head{display:flex;align-items:center;gap:9px;flex-wrap:wrap;font-size:14px}
.apl-head b{font-size:15.5px}
.apl-head .sp{flex:1}
.apl-n{font-size:22px;font-weight:800;font-variant-numeric:tabular-nums;line-height:1}
.ap-live.on .apl-n{color:var(--ok)}
.apl-n.bad{color:var(--bad)}
.apl-k{font-size:12.5px;color:var(--muted)}
.ap-live .dot{width:9px;height:9px;border-radius:50%;background:var(--ok);flex:none;animation:apulse 1.9s ease-out infinite}
@keyframes apulse{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--ok) 60%,transparent)}70%{box-shadow:0 0 0 9px transparent}100%{box-shadow:0 0 0 0 transparent}}
.apl-chips{display:flex;flex-wrap:wrap;gap:5px;margin-top:9px}
.apl-chip{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:3px 11px;font-size:12px;
  background:var(--surface);border:1px solid var(--line);font-variant-numeric:tabular-nums}
.apl-chip b{font-weight:700}
.apl-chip .m{color:var(--muted);font-size:11px}
.apl-chip.turbo{border-color:var(--bad);color:var(--bad);background:var(--bad-soft);font-weight:600}
/* 行：开了自动改价的左边一道竖杠 + 淡底色；🔥 的更重。别盖掉勾选高亮 */
tr.ap-on:not(.sel) td{background:color-mix(in srgb,var(--ok) 7%,transparent)}
tr.ap-on td:first-child{box-shadow:inset 3px 0 0 var(--ok)}
tr.ap-turbo:not(.sel) td{background:color-mix(in srgb,var(--bad) 9%,transparent)}
tr.ap-turbo td:first-child{box-shadow:inset 3px 0 0 var(--bad)}
select.ap-sel{font-weight:700;border-color:var(--ok);color:var(--ok)}
select.ap-sel.turbo{border-color:var(--bad);color:var(--bad)}
label.tb{display:inline-flex;align-items:center;gap:3px;cursor:pointer;font-size:13px}
label.tb.on{color:var(--bad);font-weight:700}
.toast{position:fixed;left:50%;bottom:28px;transform:translateX(-50%);background:var(--ink);color:var(--bg);
  padding:9px 18px;border-radius:10px;font-size:14px;opacity:0;transition:opacity .2s;pointer-events:none;z-index:99}
.toast.show{opacity:1}
.themetoggle{position:fixed;right:14px;bottom:20px;z-index:90;border:1px solid var(--line);
  background:var(--surface);color:var(--ink);border-radius:999px;padding:7px 13px;font-size:13px;font-weight:600;
  box-shadow:0 4px 16px -6px rgba(20,15,35,.35);opacity:.92;transition:opacity .15s,transform .15s;line-height:1}
.themetoggle:hover{opacity:1;transform:translateY(-1px)}
/* 后台工具条 / 筛选 / 统计 */
.bar2{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:10px}
.bar2 input,.bar2 select{padding:5px 9px;font-size:13.5px;border-radius:7px}
.bar2 .sp{margin-left:auto}
.stats{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.stat{border:1px solid var(--line);background:var(--surface);border-radius:9px;padding:6px 12px;line-height:1.3}
.stat b{display:block;font-size:17px;font-variant-numeric:tabular-nums}
.stat span{font-size:11.5px;color:var(--muted)}
.chips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px}
.chip{border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:999px;
  padding:3px 11px;font-size:12.5px;cursor:pointer;font-variant-numeric:tabular-nums}
.chip.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600}
/* 分页条：沿用 .chip 的胶囊语言，别用 .btn——一排实心大按钮又重又吵 */
.pgbar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:12px 0 2px;font-size:12.5px}
.pgbar .pg{min-width:28px;height:28px;padding:0 9px;border:1px solid var(--line);background:var(--surface);
  color:var(--ink);border-radius:999px;cursor:pointer;font-size:12.5px;font-variant-numeric:tabular-nums;
  display:inline-flex;align-items:center;justify-content:center;transition:background .12s,border-color .12s}
.pgbar .pg:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}
.pgbar .pg.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600}
.pgbar .pg:disabled{opacity:.38;cursor:default}
.pgbar .pgnav{padding:0 11px}
.pgbar .pgdots{color:var(--muted);padding:0 2px}
.pgbar .pgmeta{color:var(--muted);font-variant-numeric:tabular-nums}
/* 每页条数：做成一枚同样的胶囊，不要撑成一个大下拉 */
.pgbar .pgsz{width:auto}
.pgbar .pgsz .ddbtn{height:28px;padding:0 10px;border-radius:999px;min-height:0}
.pgbar .pgsz .ddcur b{font-size:12.5px;font-weight:500}
.pgbar .pgsz .ddsub{display:none}
/* 结算表：主表只摆「待收 + 下一步」，其余进展开行 */
#ptBody .who{font-weight:600}
#ptBody .sub2{color:var(--muted);font-size:11.5px;font-weight:400;margin-top:1px}
#ptBody .cur{font-size:10.5px;color:var(--muted)}
#ptBody .dashc{color:var(--muted)}
#ptBody .m2{display:flex;flex-direction:column;align-items:flex-end;line-height:1.4}
#ptBody .m2.due{color:var(--warn);font-weight:600}
#ptBody tr.ptexp td{background:color-mix(in srgb,var(--accent) 4%,var(--surface));border-bottom:2px solid var(--line)}
#ptBody .ptkv{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:9px 18px;font-size:12.5px}
/* grid 子项默认 min-width:auto，长数字/长字符串顶不进格子会横向溢出、盖到隔壁格——
   不是数据错位，是这两行没写就会溢出。见 2026-08-14「叠在一起」那次排查。 */
#ptBody .ptkv>div{min-width:0}
#ptBody .ptkv .k{color:var(--muted);font-size:11.5px}
#ptBody .ptkv .v{font-variant-numeric:tabular-nums;overflow-wrap:break-word}
/* 待办顶部：两个金额框 + 一行待办胶囊，替掉原来 11 个方块 */
#ptBody .mrow{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:12px}
#ptBody .mbox{border:1px solid var(--warn);background:var(--warn-soft);border-radius:10px;padding:10px 14px;min-width:150px}
#ptBody .mbox .k{font-size:11.5px;color:var(--muted);margin-bottom:2px}
#ptBody .mbox .v{font-size:17px;font-weight:700;color:var(--warn);font-variant-numeric:tabular-nums;line-height:1.35}
#ptBody .mbox.calm{border-color:var(--line);background:var(--surface)}
#ptBody .mbox.calm .v{color:var(--ink)}
/* 登记收款：分摊行网格 + 下面的表单两列对齐 */
.npgrid{display:grid;grid-template-columns:1.5fr 1.2fr 88px 108px 30px;gap:8px;align-items:center;margin-bottom:8px}
.npgrid>input{min-width:0}
.npghead{margin-bottom:4px;font-size:11.5px;color:var(--muted);letter-spacing:.04em}
.npgrid .ddbtn{width:100%}
.npform{display:grid;grid-template-columns:64px 1fr;gap:8px 10px;align-items:center;margin-top:10px}
.npform>label{font-size:13px;color:var(--muted)}
.npf{display:flex;align-items:center;flex-wrap:wrap;gap:2px}
.bulk{border:1px solid var(--accent);background:var(--accent-soft);border-radius:10px;
  padding:8px 12px;margin-bottom:10px;display:flex;gap:8px;flex-wrap:wrap;align-items:center;font-size:13.5px}
.bulk b{color:var(--accent)}
/* ===== 合作方 ===== */
/* 汇总条：先回答「我要转多少钱」——合作方进来的第一诉求 */
.pmoney{display:grid;grid-template-columns:repeat(auto-fit,minmax(132px,1fr));gap:10px 4px;
  border-top:1px solid var(--line);padding-top:11px;margin-top:11px;
  /* 右下角浮着「查看明细」按钮，给它留出地方——不留的话最后一列的金额会被压在按钮下面
     （实测「CNY 2,671.99」被截成「CNY 2,671.9」） */
  padding-right:106px}
@media(max-width:720px){.pmoney{padding-right:0}}
.pmoney .k{font-size:11.5px;color:var(--muted)}
.pmoney .v{font-size:16px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:-.2px}
.pmoney .hi .v{color:var(--accent)}
.mndt{position:absolute;right:0;bottom:0}
@media(max-width:720px){.mndt{position:static;display:block;width:100%;margin-top:10px}}
.pmoney .hi .k{color:var(--accent)}
.pmoney .v.wait{font-size:13.5px;font-weight:500;color:var(--warn)}
.pmoney .v.none{font-size:13.5px;font-weight:500;color:var(--muted)}
/* 待办格子 */
.ptiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(126px,1fr));gap:9px;margin-bottom:14px}
.ptile{border:1px solid var(--line);background:var(--surface);border-radius:10px;padding:10px 13px;cursor:pointer;text-align:left}
.ptile:hover{border-color:var(--accent)}
.ptile .k{font-size:12px;color:var(--muted)}
.ptile .n{font-size:23px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.25}
.ptile.bad{border-color:var(--bad);background:var(--bad-soft)} .ptile.bad .n{color:var(--bad)}
.ptile.warn{border-color:var(--warn);background:var(--warn-soft)} .ptile.warn .n{color:var(--warn)}
.ptile.zero{opacity:.55} .ptile.zero .n{color:var(--muted)}
/* 场次卡片（合作方端） */
.pcard{border:1px solid var(--line);border-radius:12px;background:var(--surface);padding:14px 16px;margin-bottom:10px}
.pcard .ph{display:flex;gap:9px;align-items:center;flex-wrap:wrap;margin-bottom:2px}
.pcard .pt{font-size:15.5px;font-weight:600}
/* 飞书写入预览：原值 → 新值 */
.fsprev td,.fsprev th{font-size:12.5px;font-variant-numeric:tabular-nums}
.fsprev .col{color:var(--accent);font-weight:600}
.fsprev .o{color:var(--muted);text-decoration:line-through}
.fsprev .ar{color:var(--muted);margin:0 4px}
.fsprev .nv{font-weight:600}
.fsprev .sk{color:var(--bad)}
/* 演练模式：常驻，任何时候都能一眼看到现在写不写飞书 */
.dryrun{display:inline-flex;align-items:center;gap:7px;border-radius:999px;padding:3px 11px;font-size:12.5px;font-weight:600;cursor:pointer;
  border:1px solid var(--warn);background:var(--warn-soft);color:var(--warn)}
.dryrun.off{border-color:var(--bad);background:var(--bad-soft);color:var(--bad)}
.sw{width:26px;height:15px;border-radius:999px;background:currentColor;position:relative;flex:none;opacity:.85}
.sw::after{content:'';position:absolute;width:11px;height:11px;background:var(--surface);border-radius:50%;top:2px;right:2px}
.sw.l::after{right:auto;left:2px}
table.tight th,table.tight td{padding:5px 9px;font-size:13px}
table.tight input{padding:2px 6px;font-size:12.5px;border-radius:6px}
/* 合作方模块的表回到站内默认行距（库存页那套 8px 11px / 14px）。
   这些表原本套了 .tight，行挤在一起——库存页那种一屏几十行的清单才需要 tight，
   这边一行要看归属、金额、状态好几样，挤着反而更难扫。 */
#ptBody table.tight th,#ptBody table.tight td{padding:8px 11px;font-size:14px}
#ptBody table.tight input{padding:4px 8px;font-size:13px}
#mine table.tight th,#mine table.tight td{padding:8px 11px;font-size:13.5px}
#mine table.tight input{padding:4px 8px;font-size:13px}
th.sortable{cursor:pointer;user-select:none}
th.sortable:hover{color:var(--accent)}
tr.sel td{background:var(--accent-soft)}
.ghead{display:flex;align-items:center;gap:10px;padding:2px 2px 8px;flex-wrap:wrap}
.ghead .t{font-size:16px;font-weight:700}
.ghead .cnt{margin-left:auto;color:var(--muted);font-size:13px;white-space:nowrap}
.ghead .ghq{margin-left:auto;width:150px;padding:4px 10px;font-size:13px;border-radius:7px}
.ghead .ghq+.cnt{margin-left:0}
@media(max-width:600px){th,td{padding:7px 8px}.wrap{padding:12px 8px 56px}}
