/* ===== 订单核单系统 样式 ===== */
:root{
  --primary:#3b5bfd; --primary-d:#2f49d1; --primary-l:#eef1ff;
  --success:#12b76a; --warning:#f79009; --danger:#f04438; --info:#2e90fa; --muted:#98a2b3;
  --bg:#f4f6fb; --card:#fff; --text:#1d2939; --text2:#667085; --line:#eaecf0;
  --radius:10px; --shadow:0 1px 3px rgba(16,24,40,.06),0 1px 2px rgba(16,24,40,.04);
  --shadow-lg:0 12px 32px rgba(16,24,40,.12);
}
*{box-sizing:border-box;margin:0;padding:0}
body{font:14px/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
  background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}
h1,h2,h3,h4{font-weight:600}

/* 布局 */
.layout{display:flex;min-height:100vh}
.sidebar{width:232px;flex:0 0 232px;background:linear-gradient(180deg,#1f2a5a 0%,#253268 100%);
  color:#fff;display:flex;flex-direction:column;position:fixed;inset:0 auto 0 0}
.brand{display:flex;gap:10px;align-items:center;padding:20px 18px;border-bottom:1px solid rgba(255,255,255,.08)}
.brand-logo{width:38px;height:38px;border-radius:9px;background:var(--primary);display:grid;place-items:center;
  font-size:18px;font-weight:700;box-shadow:0 4px 12px rgba(59,91,253,.4)}
.brand-text b{display:block;font-size:15px;letter-spacing:.5px}
.brand-text span{font-size:11px;color:#9aa7d8}
.nav{padding:12px 10px;flex:1;overflow-y:auto;overflow-x:hidden}
/* v1.9.126：隐藏侧栏滚动条（保留滚动能力），二级导航折叠 */
.sidebar,.nav{scrollbar-width:none;-ms-overflow-style:none}
.sidebar::-webkit-scrollbar,.nav::-webkit-scrollbar{width:0;height:0;display:none}
.nav-label{display:flex;align-items:center;justify-content:space-between;cursor:pointer;
  user-select:none;padding:14px 12px 4px;font-size:11px;color:#8a94c8;letter-spacing:1px}
.nav-label>span:first-child{font-weight:700;color:#aeb8e4}
.nav-label .nv-ar{font-size:10px;transition:transform .18s;opacity:.8}
.nav-label.folded .nv-ar{transform:rotate(-90deg)}
/* v1.9.127：二级导航挂到分组下 —— 树形竖线 + 整体缩进 */
.nav-group{display:block;position:relative;margin-left:16px;padding-left:2px;
  border-left:1px solid rgba(255,255,255,.14)}
.nav-group .nav-item{font-size:13.5px;padding:8px 10px 8px 12px}
.nav-group.folded{display:none}
.nav-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:8px;color:#c3cbe6;
  font-size:14px;margin-bottom:2px;transition:.15s}
.nav-item:hover{background:rgba(255,255,255,.07);color:#fff}
.nav-item.active{background:var(--primary);color:#fff;font-weight:500;box-shadow:0 4px 12px rgba(59,91,253,.35)}
.ico{width:18px;height:18px;flex:0 0 18px}
.sidebar-foot{padding:14px 18px;font-size:11px;color:#7c88b8;border-top:1px solid rgba(255,255,255,.08)}

.main{flex:1;margin-left:232px;display:flex;flex-direction:column;min-width:0}
.topbar{height:60px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;
  justify-content:space-between;padding:0 24px;position:sticky;top:0;z-index:20}
.topbar-title{font-size:17px;font-weight:600}
.topbar-user{display:flex;align-items:center;gap:12px}
.avatar{width:34px;height:34px;border-radius:50%;background:var(--primary);color:#fff;display:grid;
  place-items:center;font-weight:600;font-size:14px}
.who{line-height:1.25;text-align:right}
.who b{display:block;font-size:13px}
.content{padding:22px 24px 40px;flex:1}

/* 卡片 */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.card-h{padding:14px 18px;border-bottom:1px solid var(--line);display:flex;align-items:center;
  justify-content:space-between;gap:12px;flex-wrap:wrap}
.card-h h3{font-size:15px}
.card-b{padding:18px}
.card-b.tight{padding:0}
.grid{display:grid;gap:16px}
.g4{grid-template-columns:repeat(4,1fr)}
.g3{grid-template-columns:repeat(3,1fr)}
.g2{grid-template-columns:repeat(2,1fr)}
@media(max-width:1200px){.g4{grid-template-columns:repeat(2,1fr)}.g3{grid-template-columns:repeat(2,1fr)}}
@media(max-width:700px){.g4,.g3,.g2{grid-template-columns:1fr}}

/* 统计卡 */
.stat{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;
  box-shadow:var(--shadow);position:relative;overflow:hidden}
.stat .lab{font-size:12px;color:var(--text2);display:flex;align-items:center;gap:6px}
.stat .num{font-size:24px;font-weight:700;margin-top:6px;letter-spacing:-.5px}
.stat .sub{font-size:12px;color:var(--text2);margin-top:2px}
.stat::after{content:'';position:absolute;right:-16px;top:-16px;width:64px;height:64px;border-radius:50%;
  background:var(--primary-l);opacity:.7}
.stat.s-warn::after{background:#fef0c7}.stat.s-dan::after{background:#fee4e2}
.stat.s-ok::after{background:#e3f9ec}.stat.s-info::after{background:#e0f2fe}
.num.warn{color:var(--warning)}.num.dan{color:var(--danger)}.num.ok{color:var(--success)}

/* 按钮 */
.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:8px;border:1px solid var(--line);
  background:#fff;color:var(--text);font-size:13px;cursor:pointer;font-weight:500;transition:.15s;white-space:nowrap}
.btn:hover{border-color:#cbd2e0;background:#fafbfc}
.btn-primary:hover,.btn-danger:hover,.btn-warn:hover,.btn-ok:hover{color:#fff}
.btn-primary{background:var(--primary);border-color:var(--primary);color:#fff}
.btn-primary:hover{background:var(--primary-d);border-color:var(--primary-d)}
.btn-danger{background:var(--danger);border-color:var(--danger);color:#fff}
.btn-danger:hover{background:var(--danger);border-color:var(--danger);filter:brightness(.93)}
.btn-warn{background:var(--warning);border-color:var(--warning);color:#fff}
.btn-warn:hover{background:var(--warning);border-color:var(--warning);filter:brightness(.93)}
.btn-ok{background:var(--success);border-color:var(--success);color:#fff}
.btn-ok:hover{background:var(--success);border-color:var(--success);filter:brightness(.93)}
.btn-ghost{background:transparent}
.btn-sm{padding:5px 10px;font-size:12px}
.btn:disabled{opacity:.55;cursor:not-allowed}
.btn-row{display:flex;gap:8px;flex-wrap:wrap}

/* 徽章 */
.badge{display:inline-block;padding:2px 9px;border-radius:20px;font-size:12px;font-weight:500;line-height:1.8}
.badge-warning{background:#fef0c7;color:#b54708}
.badge-danger{background:#fee4e2;color:#b42318}
.badge-info{background:#e0f2fe;color:#026aa2}
.badge-success{background:#e3f9ec;color:#027a48}
.badge-muted{background:#f2f4f7;color:#667085}
.badge-primary{background:var(--primary-l);color:var(--primary-d)}
.badge-role-superadmin{background:#fee4e2;color:#b42318}
.badge-role-finance{background:#e0f2fe;color:#026aa2}
.badge-role-commerce{background:#f4e8ff;color:#6941c6}
.badge-role-sales{background:#e3f9ec;color:#027a48}
.badge-role-warehouse{background:#fef0c7;color:#b54708}

/* 表格 */
.table-wrap{overflow-x:auto}
table.tb{width:100%;border-collapse:collapse;font-size:13px}
table.tb th{background:#f9fafb;padding:10px 12px;text-align:left;font-weight:600;color:var(--text2);
  white-space:nowrap;border-bottom:1px solid var(--line);font-size:12px}
table.tb td{padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:middle}
table.tb tbody tr:hover{background:#fcfcfd}
/* v1.9.167：订单列表保持原有行距（11px）不变 —— 用户指定除订单列表外全系统一 10px */
table.tb .r{text-align:right}
table.tb .c{text-align:center}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;white-space:nowrap}
.strong{font-weight:600}
.dim{color:var(--text2)}
.nowrap{white-space:nowrap}
.cell-sub{font-size:12px;color:var(--text2);margin-top:1px}

/* 表单 */
.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px 18px}
.form-grid .full{grid-column:1/-1}
@media(max-width:700px){.form-grid{grid-template-columns:1fr}}
.fld label{display:block;font-size:13px;font-weight:500;margin-bottom:6px}
.fld label .req{color:var(--danger)}
.fld input,.fld select,.fld textarea{width:100%;padding:9px 11px;border:1px solid #d0d5dd;border-radius:8px;
  font-size:13px;font-family:inherit;color:var(--text);background:#fff;transition:.15s}
.fld input:focus,.fld select:focus,.fld textarea:focus{outline:none;border-color:var(--primary);
  box-shadow:0 0 0 3px rgba(59,91,253,.12)}
.fld textarea{min-height:80px;resize:vertical}
.fld .hint{font-size:12px;color:var(--text2);margin-top:5px}
.fld input[readonly]{background:#f9fafb;color:var(--text2)}

/* v1.6.6：订单筛选紧凑版（f-compact）——小内边距、三列栅格、小号控件 */
.f-compact .card-h{padding:7px 12px}
.f-compact .card-h h3{font-size:13.5px}
.f-compact .card-b{padding:9px 12px 10px}
/* v1.6.8：四列栅格 + 收紧列距；订单编号占两列，其余各占一列 */
.f-compact .form-grid{grid-template-columns:1.35fr .8fr .8fr 1.15fr 1.15fr;gap:6px 10px}
.f-compact .fld label{font-size:11.5px;margin-bottom:2px}
.f-compact .fld input,.f-compact .fld select{padding:5px 8px;font-size:12.5px;border-radius:7px}
.f-compact .fld{min-width:0}
.f-compact .fld input[type=date],.f-compact .fld input[type=number]{min-width:0;padding:5px 6px}
.f-compact .btn{padding:6px 16px}
@media(max-width:1000px){.f-compact .form-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:700px){.f-compact .form-grid{grid-template-columns:1fr}}
.switch{display:flex;gap:16px;flex-wrap:wrap}
.radio{display:inline-flex;align-items:center;gap:6px;font-size:13px;cursor:pointer}
.radio input{width:auto!important}

/* 筛选栏 */
.filters{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;
  display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end;margin-bottom:16px;box-shadow:var(--shadow)}
.filters .f{display:flex;flex-direction:column;gap:4px}
.filters label{font-size:12px;color:var(--text2)}
.filters input,.filters select{padding:7px 10px;border:1px solid #d0d5dd;border-radius:7px;font-size:13px;min-width:130px}

/* 提示 */
.alert{display:flex;align-items:center;justify-content:space-between;padding:11px 14px;border-radius:8px;
  margin-bottom:16px;font-size:13px;border:1px solid}
.alert-success{background:#e3f9ec;border-color:#a6f4c5;color:#027a48}
.alert-danger{background:#fee4e2;border-color:#fecdca;color:#b42318}
.alert-warning{background:#fef0c7;border-color:#fedf89;color:#b54708}
.alert-info{background:#e0f2fe;border-color:#b9e6fe;color:#026aa2}
.alert-x{background:none;border:none;font-size:18px;cursor:pointer;color:inherit;opacity:.6;line-height:1}
.empty{padding:48px 16px;text-align:center;color:var(--text2)}
.empty .big{font-size:36px;margin-bottom:8px;opacity:.35}

/* ===== 分页（v1.2 重写：带信息、跳页） ===== */
.pager{display:flex;gap:12px;align-items:center;justify-content:space-between;
  padding:14px 16px;border-top:1px solid var(--line);flex-wrap:wrap}
.pager-info{font-size:12px;color:var(--muted)}
.pager-info b{color:var(--text)}
.pager-ctrl{display:flex;gap:5px;align-items:center;flex-wrap:wrap}
.pager .pg{min-width:32px;padding:5px 9px;border:1px solid var(--line);border-radius:7px;
  font-size:13px;background:#fff;color:var(--text);text-align:center;display:inline-block}
.pager a.pg:hover{border-color:var(--primary);color:var(--primary);background:var(--primary-l)}
.pager .pg.active{background:var(--primary);color:#fff;border-color:var(--primary);font-weight:600}
.pager .pg.disabled{color:#c4cad8;background:#f7f8fa;cursor:not-allowed}
.pager .pg.gap{border-color:transparent;background:transparent;color:var(--muted)}
.pager-jump{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted)}
.pager-jump input[type=number]{width:64px;padding:5px 8px;border:1px solid var(--line);
  border-radius:7px;font-size:13px;text-align:center}
.pager-jump input[type=number]:focus{outline:0;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-l)}
.pager-jump .pg-unit{color:var(--muted)}

/* ===== v1.2 全局资金预警条 ===== */
.alertbar{background:linear-gradient(90deg,#fff8eb,#fff4e2 40%,#fff);
  border:1px solid #f7d9a8;border-left:4px solid var(--warning);
  border-radius:10px;margin-bottom:16px}
.alertbar-inner{display:flex;align-items:center;gap:14px;padding:10px 14px;flex-wrap:wrap}
.alertbar-title{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:700;
  color:#a15c07;letter-spacing:.02em;white-space:nowrap}
.ab-item{display:inline-flex;align-items:baseline;gap:6px;padding:5px 11px;border-radius:8px;
  background:#fff;border:1px solid var(--line);transition:box-shadow .15s,border-color .15s}
.ab-item:hover{border-color:var(--primary);box-shadow:0 2px 8px rgba(59,91,253,.12)}
.ab-lab{font-size:12px;color:var(--muted);white-space:nowrap}
.ab-val{font-size:14px;font-weight:700;font-variant-numeric:tabular-nums}
.ab-cnt{font-size:12px;font-weight:600;padding:1px 7px;border-radius:20px;background:#f2f4f7;color:var(--text2)}
.ab-receivable .ab-val{color:var(--info)}
.ab-balance    .ab-val{color:#b54708}
.ab-overdue    .ab-val{color:var(--danger)}
.ab-overdue    .ab-cnt{background:#fee4e2;color:var(--danger)}
.ab-overdue{border-color:#f5c2be}
.ab-soon       .ab-cnt{background:#fef0c7;color:#b54708}
.ab-inst       .ab-cnt{background:var(--primary-l);color:var(--primary-d)}
.ab-close{margin-left:auto;border:none;background:transparent;color:#b98b45;font-size:18px;
  line-height:1;cursor:pointer;padding:2px 6px;border-radius:6px}
.ab-close:hover{background:#fdeccd;color:#a15c07}

/* 导航红点 */
.nav-badge{margin-left:auto;min-width:18px;height:18px;padding:0 5px;border-radius:9px;
  background:var(--danger);color:#fff;font-size:11px;font-weight:700;line-height:18px;
  text-align:center;box-shadow:0 0 0 2px rgba(240,68,56,.18)}
.nav-item.active .nav-badge{background:#fff;color:var(--danger);box-shadow:none}

/* 可点击下钻的行 */
.tb tbody tr[onclick]{transition:background .12s}
.tb tbody tr[onclick]:hover{background:var(--primary-l)!important}

/* 详情 */
.detail{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
@media(max-width:900px){.detail{grid-template-columns:repeat(2,1fr)}}
@media(max-width:600px){.detail{grid-template-columns:1fr}}
.kv{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px}
.kv .k{font-size:12px;color:var(--text2);margin-bottom:3px}
.kv .v{font-size:14px;font-weight:500;word-break:break-all}
.kv.hl{background:#fffbf0;border-color:#fedf89}
.kv.hl-dan{background:#fffbfa;border-color:#fecdca}

/* 时间线 */
.timeline{list-style:none;position:relative;padding-left:20px}
.timeline::before{content:'';position:absolute;left:5px;top:6px;bottom:6px;width:2px;background:var(--line)}
.timeline li{position:relative;padding:0 0 14px}
.timeline li::before{content:'';position:absolute;left:-19px;top:6px;width:10px;height:10px;border-radius:50%;
  background:#fff;border:2px solid var(--primary)}
.timeline .t{font-size:12px;color:var(--text2)}
.timeline .a{font-size:13px;font-weight:500}

/* 凭证 */.voucher{width:56px;height:56px;object-fit:cover;border-radius:8px;border:1px solid var(--line);cursor:zoom-in}
.lightbox{position:fixed;inset:0;background:rgba(16,24,40,.78);display:grid;place-items:center;z-index:999;
  padding:24px;cursor:zoom-out;animation:lbIn .12s ease-out}
@keyframes lbIn{from{opacity:0}to{opacity:1}}
.lightbox img{max-width:92vw;max-height:88vh;border-radius:8px;background:#fff;
  cursor:zoom-in;transition:transform .12s ease-out;will-change:transform}
.lb-close{position:absolute;top:14px;right:18px;width:38px;height:38px;border-radius:50%;border:0;
  background:rgba(255,255,255,.16);color:#fff;font-size:24px;line-height:1;cursor:pointer;
  display:grid;place-items:center;transition:background .15s}
.lb-close:hover{background:rgba(255,255,255,.32)}
.lb-hint{position:absolute;left:0;right:0;bottom:16px;text-align:center;
  color:rgba(255,255,255,.75);font-size:12px;pointer-events:none}

/* 选择文件后的本地预览（提交前就能看到选了什么） */
.fv{display:flex;gap:12px;align-items:flex-start;margin-top:10px;padding:10px;
  border:1px solid var(--line);border-radius:10px;background:#fafbfc}
.fv-thumb{width:88px;height:88px;flex:none;border-radius:8px;overflow:hidden;background:#fff;
  border:1px solid var(--line);display:grid;place-items:center;cursor:zoom-in}
.fv-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.fv-thumb.is-file{cursor:default}
.fv-pdf{font-size:12px;color:var(--muted);text-align:center;line-height:1.4;padding:6px}
.fv-meta{flex:1;min-width:0}
.fv-name{font-size:13px;font-weight:600;word-break:break-all;line-height:1.5}
.fv-size{font-size:12px;color:var(--muted);margin-top:2px}
.fv-act{margin-top:8px;display:flex;gap:8px;flex-wrap:wrap}

/* 弹窗 */
.modal{position:fixed;inset:0;background:rgba(16,24,40,.5);display:grid;place-items:center;z-index:900;padding:20px}
.modal-box{background:#fff;border-radius:12px;box-shadow:var(--shadow-lg);width:100%;max-width:480px;
  max-height:88vh;overflow:auto}
.modal-h{padding:16px 20px;border-bottom:1px solid var(--line);font-weight:600;font-size:15px;
  display:flex;justify-content:space-between;align-items:center}
.modal-b{padding:18px 20px}
.modal-f{padding:14px 20px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:8px}
.modal-x{background:none;border:none;font-size:20px;cursor:pointer;color:var(--text2)}
/* v1.6.7：居中确认弹窗（替代原生 confirm）小一号 */
.modal-confirm .modal-box{max-width:380px}
.modal-confirm .modal-b{font-size:13.5px}

/* ============ v1.7.1 删除理由弹窗（紧凑版） ============ */
.rs-box{width:330px;max-width:calc(100vw - 40px);background:#fff;border-radius:14px;
  box-shadow:0 24px 64px rgba(15,23,42,.28);overflow:hidden;text-align:center;
  animation:rsIn .22s cubic-bezier(.34,1.4,.64,1)}
@keyframes rsIn{from{opacity:0;transform:translateY(12px) scale(.96)}to{opacity:1;transform:none}}
.rs-ico{width:38px;height:38px;margin:18px auto 0;border-radius:50%;
  background:linear-gradient(135deg,#fee2e2,#fecaca);display:flex;align-items:center;
  justify-content:center;font-size:18px;box-shadow:0 0 0 5px #fef5f5}
.rs-title{font-size:15px;font-weight:700;color:var(--text);margin-top:9px;letter-spacing:.5px}
.rs-desc{font-size:12px;color:var(--text2);line-height:1.6;margin:5px 20px 0}
.rs-label{font-size:12px;color:var(--text2);text-align:center;margin:12px 20px 0}
.rs-label i{font-style:normal;color:var(--danger);font-weight:600}
.rs-ta{display:block;width:calc(100% - 40px);margin:6px auto 0;padding:7px 10px;
  font-size:12.5px;line-height:1.55;border:1.5px solid var(--line,#e5e7eb);border-radius:9px;
  resize:vertical;min-height:58px;transition:border-color .15s,box-shadow .15s;background:#fafbfc}
.rs-ta:focus{outline:none;border-color:#4f6ef2;background:#fff;
  box-shadow:0 0 0 3px rgba(79,110,242,.14)}
.rs-ta.bad{border-color:var(--danger);background:#fff5f5;
  box-shadow:0 0 0 3px rgba(220,38,38,.12)}
.rs-err{display:none;font-size:11.5px;color:var(--danger);text-align:center;
  margin:4px 22px 0}
.rs-ta.bad + .rs-err{display:block}
.rs-ft{display:flex;gap:8px;padding:12px 20px 16px;margin-top:2px}
.rs-ft .btn{flex:1;padding:7.5px 0;font-size:13px;border-radius:9px;text-align:center;justify-content:center}
.rs-cancel{background:#f3f4f6;border:1px solid #e5e7eb;color:var(--text2)}
.rs-cancel:hover{background:#e9ebef}

/* 登录页 */
.login-body{min-height:100vh;display:grid;place-items:center;padding:20px;
  background:radial-gradient(1200px 600px at 20% -10%,#4a5fd8 0%,transparent 55%),
             radial-gradient(900px 500px at 110% 110%,#7c3aed 0%,transparent 50%),#f4f6fb}
.login-card{width:100%;max-width:400px;background:#fff;border-radius:16px;box-shadow:var(--shadow-lg);
  padding:36px 34px}
.login-card .lg{display:flex;align-items:center;gap:12px;margin-bottom:22px}
.login-card h1{font-size:20px;margin-bottom:6px}
.login-card .sub{color:var(--text2);font-size:13px;margin-bottom:22px}
.login-card .fld{margin-bottom:14px}
.login-foot{margin-top:18px;text-align:center;font-size:12px;color:var(--text2);line-height:1.9}
.demo-box{margin-top:18px;border:1px dashed #d0d5dd;border-radius:10px;padding:12px 14px;
  background:#fafbfc;font-size:12px;color:var(--text2)}
.demo-box b{color:var(--text);display:block;margin-bottom:6px;font-size:12px}
.demo-box code{background:#fff;border:1px solid var(--line);border-radius:4px;padding:1px 5px;font-size:11px}

/* 权限勾选 */
.perm-group{margin-bottom:14px}
.perm-group .pg-t{font-size:13px;font-weight:600;margin-bottom:8px;color:var(--text2)}
.perm-items{display:flex;flex-wrap:wrap;gap:8px}
.perm-item{display:flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:20px;
  padding:5px 12px;font-size:12px;cursor:pointer;background:#fff;user-select:none;transition:.15s}
.perm-item:hover{border-color:var(--primary)}
.perm-item.on{background:var(--primary-l);border-color:var(--primary);color:var(--primary-d);font-weight:500}
.perm-item input{display:none}
.perm-item.locked{opacity:.6;pointer-events:none}

/* 角色说明表 */
.tip{background:#f8f9fc;border:1px solid var(--line);border-left:3px solid var(--primary);border-radius:8px;
  padding:12px 14px;font-size:13px;color:var(--text2);margin-bottom:16px}
.tip b{color:var(--text)}
.mb16{margin-bottom:16px}.mb12{margin-bottom:12px}.mt16{margin-top:16px}.mt8{margin-top:8px}
.flex-b{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.row-alert td{background:#fffbfa}
.row-warn td{background:#fffbf0}
.no-img{width:64px;height:64px;border-radius:8px;background:#f2f4f7;color:var(--muted);
  display:grid;place-items:center;font-size:12px;border:1px dashed #d0d5dd}
.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:220px}
.ellipsis-2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
  max-width:260px;min-height:38px}
.tb-orders td{vertical-align:top;padding:11px 12px}

/* ===== 产品目录：类目树 ===== */
.g-side{grid-template-columns:400px 1fr;align-items:start}
@media(max-width:1100px){.g-side{grid-template-columns:1fr}}
.cat-node{margin:2px 0}
.cat-node.lv1{border-bottom:1px solid var(--line);padding-bottom:6px;margin-bottom:6px}
.cat-node.lv1:last-child{border-bottom:none}
.cat-node.active>.cat-row{background:var(--primary-l);border-color:var(--primary)}
.cat-node.off .cat-name b{color:var(--muted);text-decoration:line-through}
.cat-row{display:flex;align-items:center;gap:10px;padding:8px 12px;border:1px solid transparent;
  border-radius:10px;transition:background .15s}
.cat-row:hover{background:#f9fafb}
.cat-img{width:40px;height:40px;border-radius:8px;object-fit:cover;flex:none;border:1px solid var(--line)}
.cat-img.no-img{display:grid;place-items:center;background:#f2f4f7;color:var(--muted);
  font-size:13px;font-weight:600;border:1px dashed #d0d5dd}
.cat-name{flex:1;min-width:0;display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:14px}
.cat-name b{font-weight:600}
.cat-tag{font-size:11px;color:var(--primary);background:var(--primary-l);
  border-radius:4px;padding:1px 5px;flex:none}
.cat-ops{display:flex;gap:4px;flex:none;opacity:.75}
.cat-row:hover .cat-ops{opacity:1}
.cat-children{margin-left:22px;border-left:1px dashed var(--line);padding-left:8px}
.cat-node.lv2>.cat-row{background:#fafbfc}

/* ===== 四类订单：类型选择器（四格并排一行，各用艳色区分） ===== */
.type-picker{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
@media(max-width:1100px){.type-picker{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){.type-picker{grid-template-columns:1fr}}
.type-opt{--tc:#475467;--tb:#f2f4f7;position:relative;display:block;overflow:hidden;
  padding:12px 12px 10px;border:1.5px solid var(--line);border-radius:12px;background:#fff;
  cursor:pointer;transition:border-color .15s,background .15s,box-shadow .15s}
.type-opt::before{content:'';position:absolute;left:0;top:0;right:0;height:4px;background:var(--tc)}
.type-opt input{position:absolute;opacity:0;pointer-events:none}
.type-opt .tp-head{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.type-opt .tp-head i{width:10px;height:10px;border-radius:50%;background:var(--tc);flex:none}
.type-opt b{font-size:14px;color:var(--tc);white-space:nowrap}
.type-opt em{margin-left:auto;font-style:normal;font-size:11.5px;font-weight:600;color:var(--tc);
  opacity:0;transform:scale(.6);transition:.15s}
.type-opt span{display:block;font-size:11.5px;color:var(--muted);line-height:1.6}
.type-opt:hover{border-color:var(--tc);box-shadow:0 2px 10px rgba(0,0,0,.06)}
.type-opt.on{border-color:var(--tc);background:var(--tb);box-shadow:0 2px 12px rgba(0,0,0,.08)}
.type-opt.on em{opacity:1;transform:scale(1)}
/* 四类各配艳色：线上·蓝 / 线下·绿 / 样品·橙 / 售后·红 */
.type-opt[data-type="online"]    {--tc:#2f7fd1;--tb:#e9f2fb}
.type-opt[data-type="offline"]   {--tc:#0f9d6c;--tb:#e6f7f0}
.type-opt[data-type="sample"]    {--tc:#ee8a1c;--tb:#fdf3e4}
.type-opt[data-type="aftersale"] {--tc:#d92d20;--tb:#fdecea}

/* ===== 三类订单：列表类型 tab ===== */
.type-tabs{display:flex;gap:8px;flex-wrap:wrap}
.type-tab{padding:7px 16px;border-radius:20px;font-size:13px;color:#475467;
  background:#fff;border:1px solid var(--line);text-decoration:none;transition:.15s}
.type-tab:hover{border-color:#c8ccd4}
.type-tab.on{background:var(--primary);border-color:var(--primary);color:#fff}

/* ===== 月度对账页 ===== */
.recon-sum{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
@media(max-width:900px){.recon-sum{grid-template-columns:1fr}}
.recon-card{border:1px solid var(--line);border-radius:12px;padding:14px 16px;background:#fff}
.recon-card .rc-h{font-size:12px;color:var(--muted);display:flex;justify-content:space-between;align-items:center}
.recon-card .rc-v{font-size:22px;font-weight:600;margin-top:6px;letter-spacing:-.5px}
.recon-card .rc-f{font-size:12px;color:var(--muted);margin-top:4px}
.recon-card.online{border-left:3px solid #378ADD}
.recon-card.offline{border-left:3px solid #1D9E75}
.recon-card.sample{border-left:3px solid #EF9F27}
.recon-card.perf{grid-column:span 1;background:var(--primary-l);border-color:var(--primary)}
.tb-recon td{vertical-align:middle}
.recon-shot{width:44px;height:44px;border-radius:6px;object-fit:cover;border:1px solid var(--line);cursor:zoom-in}
.month-pick{display:flex;gap:10px;align-items:center}
.month-pick input[type=month]{padding:8px 11px;border:1px solid var(--line);border-radius:8px;font:inherit}

/* ===== 多张凭证：已上传缩略图网格 ===== */
.shot-grid{display:flex;flex-wrap:wrap;gap:10px;margin-top:4px}
.shot-item{position:relative;width:96px;height:96px;border-radius:10px;overflow:hidden;
  border:1px solid var(--line);background:#f7f8fa;transition:opacity .15s,filter .15s}
.shot-item img{width:100%;height:100%;object-fit:cover;display:block;cursor:zoom-in}
.shot-item .shot-no{position:absolute;left:5px;top:5px;min-width:16px;height:16px;line-height:16px;
  text-align:center;font-size:11px;color:#fff;background:rgba(16,24,40,.6);border-radius:8px;padding:0 4px}
.shot-del{position:absolute;right:4px;top:4px;width:20px;height:20px;border-radius:50%;
  background:rgba(16,24,40,.62);color:#fff;display:grid;place-items:center;cursor:pointer;
  font-size:13px;line-height:1;transition:background .15s;user-select:none}
.shot-del:hover{background:#d92d20}
.shot-del input{position:absolute;opacity:0;width:0;height:0;pointer-events:none}
.shot-del span{transform:translateY(-.5px)}
/* 勾了删除：图片变灰划线，保存前就能看出后果 */
.shot-item.will-del{opacity:.42;filter:grayscale(1)}
.shot-item.will-del::after{content:"待删除";position:absolute;inset:0;display:grid;place-items:center;
  font-size:12px;color:#fff;background:rgba(217,45,32,.55);letter-spacing:1px}
.shot-item.will-del .shot-del{background:#d92d20}
.shot-item.will-del .shot-del span::before{content:"↺ "}
/* 多选文件的汇总条 */
.fv-bar{font-size:12px;color:var(--primary);background:var(--primary-l);border-radius:8px;
  padding:7px 11px;margin-top:10px;display:inline-block}
/* 详情页 / 对账页的多图缩略排 */
.shot-strip{display:flex;flex-wrap:wrap;gap:8px}
.shot-strip .voucher,.shot-strip .recon-shot{width:64px;height:64px}

/* ===== 大图预览：多图左右切换 ===== */
.lb-arrow{position:absolute;top:50%;transform:translateY(-50%);width:46px;height:46px;border:0;
  border-radius:50%;background:rgba(255,255,255,.18);color:#fff;font-size:30px;line-height:1;
  cursor:pointer;display:grid;place-items:center;padding-bottom:4px;transition:background .15s;z-index:2}
.lb-arrow:hover{background:rgba(255,255,255,.36)}
.lb-prev{left:20px}
.lb-next{right:20px}
@media(max-width:640px){
  .lb-arrow{width:38px;height:38px;font-size:24px}
  .lb-prev{left:8px}
  .lb-next{right:8px}
}
/* 对账页凭证多图：横向小排，不撑高表格行 */
.recon-shots{display:flex;gap:4px;justify-content:center}
.recon-shots .recon-shot{width:40px;height:40px}

/* ===== 拖放上传 =====
 * 整张卡片都是投放区：拖进来时卡片描边高亮 + 居中提示条，
 * 提示条 pointer-events:none，不会挡住 drop 事件。 */
.dz-host{position:relative}
.dz-host.is-drag{outline:2px dashed var(--primary);outline-offset:-5px}
.dz-host.is-drag .card-b{background:var(--primary-l)}
.dz-tip{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  background:rgba(59,91,253,.06);border-radius:var(--radius);pointer-events:none;z-index:6}
.dz-tip-in{background:#fff;border:1px dashed var(--primary);color:var(--primary);
  padding:14px 24px;border-radius:12px;text-align:center;line-height:1.5;
  box-shadow:var(--shadow-lg)}
.dz-tip-in b{display:block;font-size:15px}
.dz-tip-in .dz-sub{font-size:12px;color:var(--text2)}
/* 上传框本身也做成「可点击的落区」，视觉上更像投放区 */
.dz-host input[type="file"][data-preview]{
  border:1px dashed var(--line);border-radius:8px;background:#fafbfe;padding:10px;width:100%}
.dz-host.is-drag input[type="file"][data-preview]{border-color:var(--primary)}

/* ===== 工作台：订单提交量（日/月/年 × 三类订单） ===== */
.ov-unit{font-size:13px;font-weight:400;color:var(--text2);margin-left:4px}
.ov-split{display:flex;flex-wrap:wrap;gap:12px;margin-top:10px;padding-top:10px;
  border-top:1px dashed var(--line);font-size:12px;color:var(--text2)}
.ov-split b{color:var(--text);font-weight:600}
.dot{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:5px;vertical-align:1px}
.dot-info{background:var(--info)}
.dot-success{background:var(--success)}
.dot-warning{background:var(--warning)}
.ov-chart{margin-top:18px;padding-top:14px;border-top:1px solid var(--line)}
.ov-chart-h{display:flex;align-items:center;justify-content:space-between;gap:12px;
  flex-wrap:wrap;margin-bottom:4px}
.ov-chart-h b{font-size:13px}
.ov-legend{display:flex;gap:14px;font-size:12px;color:var(--text2)}
.ov-bars{display:flex;align-items:flex-end;gap:8px;height:206px;padding-top:8px;overflow-x:auto}
.ov-col{flex:1 1 0;min-width:26px;display:flex;flex-direction:column;justify-content:flex-end;
  text-align:center;cursor:default}
.ov-stack{display:flex;flex-direction:column-reverse;justify-content:flex-start;gap:1px;height:170px}
.ov-seg{width:100%;border-radius:2px;transition:filter .15s}
.ov-col:hover .ov-seg{filter:brightness(.9)}
.seg-offline{background:var(--success)}
.seg-online{background:var(--info)}
.seg-sample{background:var(--warning)}
.seg-aftersale{background:var(--danger)}
.dot-danger{background:var(--danger)}
.ov-x{font-size:11px;color:var(--text2);margin-top:6px;white-space:nowrap}
.ov-n{font-size:10px;color:var(--muted)}

/* ===== 密度优化（v1.3.8）：整体收紧一档，少滚动 ===== */
.card-h{padding:10px 14px}
.card-h h3{font-size:14px}
.card-b{padding:14px}
.grid{gap:12px}
.stat{padding:12px 14px}
.stat .num{font-size:21px;margin-top:4px}
.stat .sub{font-size:11.5px}
.mb16{margin-bottom:12px}
.tip{padding:10px 12px;font-size:12.5px;margin-bottom:12px;line-height:1.55}
.fld label{font-size:12.5px;margin-bottom:4px}
.fld input,.fld select,.fld textarea{padding:7px 10px;border-radius:7px}
.fld textarea{min-height:62px}
.fld .hint{font-size:11.5px;margin-top:3px;line-height:1.5}

/* 四列表单：宽屏一行放 4 个短字段，窄屏自动降两列 */
.form-grid{gap:10px 14px}
.form-grid.c4{grid-template-columns:repeat(4,1fr)}
.form-grid.c4 .span2{grid-column:span 2}
@media(max-width:1050px){.form-grid.c4{grid-template-columns:repeat(2,1fr)}}
@media(max-width:700px){.form-grid.c4{grid-template-columns:1fr}}

/* 待办卡：一行排完，不再 4+1 换行；条目少时不被拉伸 */
.todo-cards{display:flex;flex-wrap:wrap;gap:10px}
.todo-cards .stat{flex:0 0 150px;padding:10px 12px}
.todo-cards .stat .num{font-size:18px;margin-top:2px}
.todo-cards .stat .sub{font-size:10.5px}

/* 提交量图表压矮，避免一屏放不下 */
.ov-bars{height:158px}
.ov-stack{height:120px}
.ov-chart{margin-top:14px;padding-top:12px}

/* 周期卡：宽度够就一行三张，不够自动减列（不用 g3，避免 1200 断点拆成两行） */
.ov-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(238px,1fr));gap:10px}

/* ===== 分批付款计划：多期动态行（v1.4） ===== */
.plan-row{display:grid;grid-template-columns:150px 130px 1fr 34px;gap:8px;margin-bottom:8px;align-items:center}
.plan-row input{padding:7px 10px;border:1px solid var(--line);border-radius:7px;width:100%}
.plan-del{padding:5px 0;color:var(--danger);flex:none}
@media(max-width:760px){.plan-row{grid-template-columns:1fr 1fr 34px}.plan-row input[name="inst_remark[]"]{grid-column:1/3}}

/* ===================================================================
   工作台 v1.4.3：再压一档密度 + 单量/金额双指标图表
   目标：业务员一进后台，不滚动就能看到「今天/本月/今年 卖了多少钱、多少单」
   =================================================================== */
.content{padding:16px 20px 32px}
.card-h{padding:8px 12px}
.card-b{padding:12px}
.card-b.pad-sm{padding:12px}

/* 权限说明收成一行提示条，不再占一大块 */
.tip.tip-mini{padding:6px 12px;font-size:12px;line-height:1.5;margin-bottom:10px;border-left-width:3px}
.tip.tip-mini b{font-weight:600}

/* 周期卡：三张并排，数字为主、拆分为辅 */
.ov-tiles{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:8px}
.ov-tiles .stat{padding:10px 12px}
.ov-tiles .stat .num{font-size:20px;margin-top:2px;letter-spacing:-.4px}
.ov-badge{margin-left:auto;font-size:11px;font-weight:600;color:var(--text2);
  background:#f2f4f8;border-radius:20px;padding:1px 8px;white-space:nowrap}
.ov-split{margin-top:6px;padding-top:6px;gap:10px;font-size:11.5px}
.ov-split .dot{width:7px;height:7px}

/* 图表：头部放工具条，柱区压矮 */
.ov-tools{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.seg-tabs{display:inline-flex;background:#f2f4f8;border:1px solid var(--line);border-radius:8px;padding:2px;gap:2px}
.seg-tab{padding:2px 10px;border-radius:6px;font-size:12px;color:var(--text2);line-height:1.6}
.seg-tab:hover{color:var(--text)}
.seg-tab.on{background:#fff;color:var(--primary);font-weight:600;box-shadow:0 1px 2px rgba(16,24,40,.08)}
.ov-chart{margin-top:10px;padding-top:10px}
.ov-chart-h{margin-bottom:2px}
.ov-chart-l{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.ov-sum{font-size:12px;color:var(--text2)}
.ov-sum b{color:var(--text)}
.ov-bars{height:142px;gap:6px}
.ov-stack{height:104px}
.ov-seg.is-amt{border-radius:2px}
.ov-col.is-amt .ov-n{font-size:9.5px;transform:scale(.95)}

/* 金额概览：四个数字横排 + 状态胶囊，合并成一张卡 */
.kpi-row{display:grid;grid-template-columns:repeat(4,1fr)}
.kpi{padding:0 14px;border-left:1px solid var(--line);min-width:0}
.kpi:first-child{border-left:0;padding-left:2px}
.kpi .lab{font-size:11.5px;color:var(--text2);white-space:nowrap}
.kpi .num{font-size:19px;font-weight:700;letter-spacing:-.4px;margin-top:2px;line-height:1.3}
.kpi .sub{font-size:11px;color:var(--muted);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kpi .num.ok{color:var(--success)}
.kpi .num.dan{color:var(--danger)}
.state-row{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px;padding-top:9px;border-top:1px solid var(--line)}
.state-chip{display:inline-flex;align-items:center;gap:6px;font-size:12px;line-height:1.5;
  padding:2px 10px;border-radius:20px;background:#f7f8fb;border:1px solid var(--line);color:var(--text2)}
.state-chip:hover{border-color:var(--primary);color:var(--primary)}
.state-chip b{font-weight:700;color:var(--text)}
.state-chip b.c-warning{color:var(--warning)}
.state-chip b.c-danger{color:var(--danger)}
.state-chip b.c-info{color:var(--info)}
.state-chip b.c-success{color:var(--success)}
.state-chip b.c-muted{color:var(--muted)}
.state-chip.state-all{border-style:dashed;color:var(--primary);background:#fff}

@media(max-width:980px){
  .kpi-row{grid-template-columns:repeat(2,1fr);row-gap:12px}
  .kpi:nth-child(3){border-left:0;padding-left:2px}
  .kpi:nth-child(odd){border-left:0;padding-left:2px}
}
@media(max-width:700px){
  .kpi-row{grid-template-columns:1fr;row-gap:8px}
  .kpi{border-left:0;padding-left:2px}
}

/* ===== 仓库工作台：订单状态看板（v1.4.6） ===== */
.state-board{display:flex;flex-direction:column;gap:8px}
.sb-row{display:flex;align-items:center;gap:10px;padding:7px 12px;
  border:1px solid var(--line);border-radius:8px;transition:.15s}
.sb-row:hover{border-color:var(--primary);background:var(--primary-l)}
.sb-dot{width:10px;height:10px;border-radius:3px;flex:0 0 10px}
.sb-lab{flex:0 0 140px;font-size:13px;color:var(--text2);white-space:nowrap}
.sb-bar{flex:1;height:14px;background:#f2f4f8;border-radius:7px;overflow:hidden}
.sb-bar i{display:block;height:100%;border-radius:7px;min-width:2px;transition:width .2s}
.sb-n{flex:0 0 52px;text-align:right;font-size:15px;font-weight:700;color:var(--text)}
.sb-unit{font-size:11px;font-weight:400;color:var(--text2);margin-left:2px}
@media(max-width:700px){.sb-lab{flex-basis:104px}}

/* ===== 样品 / 售后补发：快捷明细模块 ===== */
.sa-tiles{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.sa-tile{display:block;padding:12px 14px;border-radius:10px;border:1px solid var(--line);
  text-decoration:none;transition:box-shadow .15s,border-color .15s;background:#fff}
.sa-tile:hover{box-shadow:0 2px 10px rgba(0,0,0,.07)}
.sa-tile.sa-sample{border-left:4px solid var(--warning);background:#fdfaf3}
.sa-tile.sa-after{border-left:4px solid var(--danger);background:#fdf5f4}
.sa-tile .sa-n{font-size:22px;font-weight:700;color:var(--text);line-height:1.2}
.sa-tile .sa-n span{font-size:12px;font-weight:500;color:var(--text2);margin-left:3px}
.sa-tile .sa-lab{font-size:12px;color:var(--text2);margin-top:2px}
.sa-tile .sa-go{font-size:11.5px;color:var(--primary);margin-top:4px;font-weight:600}
@media(max-width:700px){.sa-tiles{grid-template-columns:1fr}}

/* ===== 订单列表：业务员快捷切换条 ===== */
.sales-chips{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.sales-chips .sc-cap{font-size:12px;color:var(--text2);font-weight:600}
.schip{display:inline-block;padding:5px 12px;border-radius:999px;border:1px solid var(--line);
  background:#fff;color:var(--text);font-size:12.5px;text-decoration:none;transition:.15s}
.schip:hover{border-color:var(--primary);color:var(--primary)}
.schip.on{background:var(--primary);border-color:var(--primary);color:#fff;font-weight:600}

/* ===== 一键复制（仓库打印面单用） ===== */
.copy-btn{display:inline-block;padding:2px 9px;margin-left:6px;border:1px solid var(--line);
  border-radius:6px;background:#fff;color:var(--primary);font-size:11.5px;line-height:1.6;
  vertical-align:middle;cursor:pointer;transition:.15s;white-space:nowrap}
.copy-btn:hover{border-color:var(--primary);background:#f0f6ff}
.copy-btn.copied{background:var(--success);border-color:var(--success);color:#fff}

/* ===== 订单列表：审核进度提示（v1.5.6） ===== */
/* 当前节点提示条：一行醒目文案，颜色随状态变化 */
.audit-now{display:inline-flex;align-items:center;margin-top:8px;padding:3px 10px;
  border-radius:8px;font-size:12px;font-weight:700;border:1px solid;white-space:nowrap}
.audit-now.warn{color:#b54708;background:#fffaeb;border-color:#fedf89}
.audit-now.danger{color:#b42318;background:#fef3f2;border-color:#fecdca}
.audit-now.info{color:#175cd3;background:#eff8ff;border-color:#b2ddff}
.audit-now.success{color:#067647;background:#ecfdf3;border-color:#abefc6}
.audit-now.muted{color:#475467;background:#f9fafb;border-color:#e4e7ec}
/* 流程步骤图：提交 — 财务审核 — 核对 — 发货 — 完成 */
.flow{display:flex;align-items:center;flex-wrap:wrap;gap:3px;margin-top:6px;max-width:190px}
.flow-step{font-size:11px;color:#98a2b3;display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
.flow-step::before{content:"";width:6px;height:6px;border-radius:50%;background:#d0d5dd;flex:none}
.flow-step.done{color:#12b76a}.flow-step.done::before{background:#12b76a}
/* v1.9.48：未执行的节点一律红色字体（todo 未到 / cur 当前所在），圆点同步变红；
   cur 加粗标记当前停在哪一步；作废单的 stop 节点保持灰色 */
.flow-step.todo{color:#d92d20}.flow-step.todo::before{background:#fda29b}
.flow-step.cur{color:#d92d20;font-weight:700}.flow-step.cur::before{background:#d92d20;box-shadow:0 0 0 3px #fee4e2}
.flow-step.fail{color:#d92d20;font-weight:700}.flow-step.fail::before{background:#d92d20}
.flow-step.stop{color:#98a2b3}.flow-step.stop::before{background:#d0d5dd}
.flow-line{width:10px;height:1px;background:#e4e7ec;flex:none}

/* ===== 订单状态阶段底色（v1.5.10）：不同阶段一眼区分 ===== */
.tb-orders tr.st-submitted td{background:#fffbef}  /* 待财务审核/待主管审批：淡黄 */
.tb-orders tr.st-rejected  td{background:#fff1f1}  /* 已驳回：淡红 */
.tb-orders tr.st-approved  td{background:#f0f7ff}  /* 审核通过/待发货/待核对/待代发：淡蓝 */
.tb-orders tr.st-shipped   td{background:#f0fbf6}  /* 已发货：淡青绿 */
.tb-orders tr.st-completed td{background:#f6fcf8}  /* 已完成：淡绿（很浅） */
.tb-orders tr.st-cancelled td{background:#f7f7f8;color:#98a2b3}  /* 已作废：置灰 */
/* 欠款/账期预警行仍然优先：覆盖上面的阶段底色，避免预警被淹没 */
.tb-orders tr.row-warn td{background:#fffbf0}
.tb-orders tr.row-alert td{background:#fffbfa}

/* ===== v1.5.15：产品内容输入框占位提示按 50% 亮度灰显示 ===== */
textarea[name="product_content"]::placeholder{color:#808080;opacity:1}

/* ============================================================
   v1.5.16 平台与店铺（胶囊式布局 + 品牌色 + 过渡动效）
   ============================================================ */
.dict-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:18px;flex-wrap:wrap}
.dict-crumb{font-size:12px;color:var(--muted);margin-bottom:6px}
.dict-title{font-size:21px;font-weight:600;letter-spacing:-.2px}
.dict-sub{font-size:13px;color:var(--text2);margin-top:5px}
.dict-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:18px}
.dict-stat{background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px 18px}
.dict-stat .lab{font-size:12px;color:var(--text2)}
.dict-stat .num{font-size:24px;font-weight:600;margin-top:2px;letter-spacing:-.3px}
.dict-stat .num em{font-size:12px;color:var(--muted);font-style:normal;font-weight:400;margin-left:6px}
.dict-stat .num.warn{color:var(--warning)}
.dict-chips{display:flex;gap:8px;overflow-x:auto;padding:2px 2px 10px;margin-bottom:14px}
.dict-chip{display:inline-flex;align-items:center;gap:8px;padding:9px 14px;border-radius:99px;
  border:1px solid var(--line);background:#fff;font-size:13px;color:#374151;white-space:nowrap;cursor:pointer;
  transition:transform .2s cubic-bezier(.4,0,.2,1),box-shadow .2s,border-color .2s,background .2s,color .2s}
.dict-chip:hover{border-color:#c7d2fe;background:#f8faff;transform:translateY(-1px);box-shadow:0 4px 12px rgba(59,91,253,.10)}
.dict-chip i{width:8px;height:8px;border-radius:50%;flex:none}
.dict-chip u{text-decoration:none;font-size:11px;padding:1px 6px;border-radius:99px;background:#f3f4f6;color:var(--text2)}
.dict-chip.off{opacity:.62}
.dict-chip.on{background:#111827;border-color:#111827;color:#fff;box-shadow:0 6px 18px rgba(17,24,39,.18)}
.dict-chip.on u{background:rgba(255,255,255,.18);color:#fff}
.dict-main{background:#fff;border:1px solid var(--line);border-radius:16px;overflow:hidden;
  animation:dictUp .42s cubic-bezier(.4,0,.2,1) both}
@keyframes dictUp{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.dict-main-h{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 20px;flex-wrap:wrap}
.dict-plat{display:flex;align-items:center;gap:12px;min-width:0}
.dict-mark{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;font-size:15px;font-weight:600;flex:none}
.dict-plat b{font-size:16px;display:block}
.dict-plat>div>span{display:block;font-size:12px;color:var(--text2);margin-top:2px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dict-th,.dict-tr{display:grid;grid-template-columns:minmax(0,1fr) 72px 108px 78px 150px;align-items:center;gap:8px}
.dict-th{padding:9px 20px;background:#fafafb;border-top:1px solid var(--line);
  font-size:11px;color:var(--muted);letter-spacing:.3px}
.dict-tr{padding:12px 20px;border-top:1px solid #f3f4f6;transition:background .18s ease}
.dict-tr:hover{background:#f8faff}
.dict-tr.off{background:#fafafb}
.dict-main .r{text-align:right}
.dict-main .c{text-align:center}
.dict-shop{display:flex;align-items:center;gap:11px;min-width:0}
.dict-shop .mark{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;
  font-size:13px;font-weight:600;flex:none}
.dict-shop .nm{font-size:13px;font-weight:500}
.dict-shop .sub{font-size:11px;color:var(--muted);margin-top:1px}
.dict-tr.off .dict-shop .nm{color:var(--muted)}
.dict-ops{opacity:.45;transition:opacity .18s ease;white-space:nowrap;text-align:right}
.dict-tr:hover .dict-ops{opacity:1}
.dict-ops button{background:none;border:none;padding:0;font:inherit;font-size:12px;color:var(--primary);cursor:pointer}
.dict-ops button:hover{text-decoration:underline}
.dict-ops button.warn{color:#b45309}
.dict-ops button.del{color:var(--danger)}
.dict-ops .sep{color:#e5e7eb;margin:0 6px}
.dict-main .badge{padding:3px 9px;border-radius:99px;font-size:11px;font-weight:500}
.dict-note{display:flex;align-items:center;gap:10px;padding:15px 20px;border-top:1px solid #f3f4f6;
  color:var(--muted);font-size:12px}
.dict-empty{display:flex;align-items:center;gap:16px;margin-top:16px;background:#fff;
  border:1px dashed #d1d5db;border-radius:16px;padding:18px 20px;flex-wrap:wrap}
.dict-empty .ic{width:48px;height:48px;border-radius:50%;background:#f3f4f6;display:grid;place-items:center;flex:none}
.dict-empty b{font-size:13px}
.dict-empty p{font-size:12px;color:var(--text2);margin-top:2px}
@media(max-width:820px){
  .dict-stats{grid-template-columns:1fr}
  .dict-th,.dict-tr{grid-template-columns:minmax(0,1fr) 78px 150px;gap:6px}
  .dict-th>div:nth-child(2),.dict-tr>div:nth-child(2),
  .dict-th>div:nth-child(3),.dict-tr>div:nth-child(3){display:none}
}

/* ============================================================
   v1.8.2 快递物流公司（复用 dict-th/dict-tr 视觉，6 列栅格）
   ============================================================ */
.ship-grid{grid-template-columns:minmax(0,1fr) 82px 100px 54px 74px 132px}
@media(max-width:820px){
  .ship-grid{grid-template-columns:minmax(0,1fr) 74px 122px}
  .ship-grid>div:nth-child(4){display:none}
}

/* ============================================================
   v1.5.17 产品目录（复用 dict 视觉语言：树 + 整宽明细卡）
   ============================================================ */
.cat-grid{display:grid;grid-template-columns:330px minmax(0,1fr);gap:16px;align-items:start}
@media(max-width:1100px){.cat-grid{grid-template-columns:1fr}}
.cat-panel{background:#fff;border:1px solid var(--line);border-radius:16px;overflow:hidden;animation:dictUp .42s cubic-bezier(.4,0,.2,1) both}
.cat-panel-h{padding:13px 16px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:8px}
.cat-panel-h b{font-size:14px}
.cat-item .cat-row{display:flex;align-items:center;gap:10px;padding:10px 14px;border-top:1px solid #f3f4f6;transition:background .18s ease}
.cat-item:first-child .cat-row{border-top:none}
.cat-row:hover{background:#f8faff}
.cat-row:hover .cat-ops{opacity:1}
.cat-item.sel>.cat-row{background:var(--primary-l);box-shadow:inset 3px 0 0 var(--primary)}
.cat-mark{width:30px;height:30px;border-radius:8px;background:var(--primary-l);color:var(--primary);
  display:grid;place-items:center;font-size:12px;font-weight:600;flex:none;overflow:hidden}
.cat-mark img{width:100%;height:100%;object-fit:cover;cursor:zoom-in;display:block}
.cat-item.lv2 .cat-row{padding-left:38px}
.cat-item.lv3 .cat-row{padding-left:62px}
.cat-item.off>.cat-row .nm{color:var(--muted)}
.cat-info{flex:1;min-width:0}
.cat-info .nm{font-size:13px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cat-info .sub{font-size:11px;color:var(--muted);margin-top:1px}
.lvtag{display:inline-block;font-size:10px;line-height:1;padding:2px 5px;border-radius:4px;margin-right:6px;font-weight:500;vertical-align:1px}
.lvtag.l1{background:#eef1ff;color:#3b5bfd}
.lvtag.l2{background:#e0f2fe;color:#0e7dc2}
.lvtag.l3{background:#fef0c7;color:#b45309}
.cat-ops{opacity:0;transition:opacity .18s ease;white-space:nowrap;display:flex;gap:9px;align-items:center}
.cat-ops button,.cat-ops a{background:none;border:none;padding:0;font:inherit;font-size:12px;color:var(--primary);cursor:pointer}
.cat-ops button:hover{text-decoration:underline}
.cat-ops button.add{color:#0e9384}
.cat-ops button.del{color:var(--danger)}
.cat-none{padding:36px 20px;text-align:center}
.cat-none .ic{width:48px;height:48px;border-radius:50%;background:#f3f4f6;display:grid;place-items:center;margin:0 auto 10px}
.cat-none b{font-size:13px;display:block}
.cat-none p{font-size:12px;color:var(--text2);margin-top:3px}
.prod-th,.prod-tr{display:grid;grid-template-columns:64px minmax(0,1.4fr) minmax(0,1fr) 52px 76px 150px;align-items:center;gap:10px}
.prod-th{padding:9px 20px;background:#fafafb;border-top:1px solid var(--line);font-size:11px;color:var(--muted);letter-spacing:.3px}
.prod-th .r,.prod-tr .r{text-align:right}
.prod-th .c,.prod-tr .c{text-align:center}
.prod-tr{padding:11px 20px;border-top:1px solid #f3f4f6;transition:background .18s ease}
.prod-tr:hover{background:#f8faff}
.prod-tr:hover .dict-ops{opacity:1}
.prod-img{width:46px;height:46px;border-radius:8px;object-fit:cover;cursor:zoom-in;display:block}
.prod-noimg{width:46px;height:46px;border-radius:8px;background:#f3f4f6;color:#98a2b3;display:grid;place-items:center;font-size:11px}
.prod-name{font-size:13px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.prod-spec{font-size:12px;color:var(--text2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.prod-price{font-size:13px;font-weight:600;color:var(--primary)}
.prod-empty{display:flex;align-items:center;gap:16px;padding:26px 20px;flex-wrap:wrap}
.prod-empty .ic{width:48px;height:48px;border-radius:50%;background:#f3f4f6;display:grid;place-items:center;flex:none}
.prod-empty b{font-size:13px}
.prod-empty p{font-size:12px;color:var(--text2);margin-top:2px}
@media(max-width:900px){
  .prod-th,.prod-tr{grid-template-columns:64px minmax(0,1fr) 76px 150px;gap:8px}
  .prod-th>div:nth-child(3),.prod-tr>div:nth-child(3),
  .prod-th>div:nth-child(4),.prod-tr>div:nth-child(4){display:none}
}

/* ===== v1.5.18 类目树折叠：一级/二级可展开收起，默认收起 ===== */
.cat-arrow{width:14px;height:14px;flex:none;display:grid;place-items:center;color:var(--muted);
  transition:transform .2s cubic-bezier(.4,0,.2,1)}
.cat-item.open>.cat-row .cat-arrow{transform:rotate(90deg);color:var(--primary)}
.cat-arrow.leaf{visibility:hidden}
.cat-kids{display:none}
.cat-item.open>.cat-kids{display:block;animation:dictUp .25s cubic-bezier(.4,0,.2,1) both}
.cat-expandable>.cat-row{cursor:pointer}

/* ============================================================
   v1.5.20 对账明细：状态底色区分 + 勾选高亮过渡
   待核对=淡黄  已核对=浅绿  有差异=浅红预警（左缘红条）
   ============================================================ */
.tb-recon tbody tr{transition:background .25s ease,box-shadow .25s ease}
.tb-recon tbody tr.rd-pending{background:#fffbf0}
.tb-recon tbody tr.rd-matched{background:#f4fbf6}
.tb-recon tbody tr.rd-disputed{background:#fff1f1;box-shadow:inset 3px 0 0 var(--danger)}
.tb-recon tbody tr.rd-none{background:#fff}
.tb-recon tbody tr.row-sel{background:var(--primary-l)!important;box-shadow:inset 3px 0 0 var(--primary)}
.tb-recon tbody tr.row-sel.rd-disputed{box-shadow:inset 3px 0 0 var(--primary)}
.tb-recon tbody tr:hover{filter:brightness(.985)}

/* ===== v1.5.20 订单列表：图例变可点击筛选（胶囊式，悬停上浮）
   v1.9.53 选中态加深蓝底 + 蓝字 + 描边，一眼看清当前筛选的是哪一项 ===== */
.lg-chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:99px;
  color:#344054;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease}
.lg-chip:hover{transform:translateY(-1px);box-shadow:0 2px 8px rgba(16,24,40,.12)}
.lg-chip.on{background:#e8efff;color:#1d4ed8;box-shadow:inset 0 0 0 1.5px #3b5bdb;font-weight:600}
.lg-chip i{width:10px;height:10px;border-radius:3px;display:inline-block;flex:none}

/* ===== 长文本悬浮气泡（v1.5.24）：完整显示被截断的产品内容/收货地址 ===== */
.global-tip{position:fixed;z-index:3000;background:#1f2430;color:#fff;font-size:12.5px;line-height:1.6;
  padding:9px 12px;border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.22);white-space:pre-wrap;word-break:break-all;
  max-width:420px;pointer-events:none}
/* 点击展开：解除截断显示全文 */
.clip-open{white-space:normal!important;overflow:visible!important;word-break:break-all}
.clip-open.ellipsis-2{display:block!important;-webkit-line-clamp:unset!important}

/* ============================================================
   v1.6.0 通知中心：顶栏铃铛 / 待办面板 / 右下角滑入卡片 / 汇总弹窗
   ============================================================ */
.notify{position:relative;display:flex;align-items:center}
.notify-bell{position:relative;width:34px;height:34px;border-radius:9px;border:1px solid var(--line);
  background:#fff;color:var(--text2);display:grid;place-items:center;cursor:pointer;
  transition:background .15s,color .15s,border-color .15s;padding:0}
.notify-bell:hover{background:#f8fafc;color:var(--primary);border-color:#d7dded}
.notify-bell.on{color:var(--primary);border-color:#c9d3f8;background:var(--primary-l)}
.notify-dot{position:absolute;top:-5px;right:-5px;min-width:17px;height:17px;padding:0 4px;border-radius:9px;
  background:var(--danger);color:#fff;font-size:11px;font-weight:700;line-height:17px;text-align:center;
  box-shadow:0 0 0 2px #fff;font-variant-numeric:tabular-nums}

.notify-panel{position:absolute;top:46px;right:0;width:322px;background:#fff;border:1px solid var(--line);
  border-radius:12px;box-shadow:var(--shadow-lg);z-index:60;overflow:hidden}
.notify-panel-h{display:flex;align-items:center;justify-content:space-between;padding:11px 13px;
  border-bottom:1px solid var(--line);background:#fbfcfe}
.notify-panel-h b{font-size:13.5px}
.notify-refresh{font-size:12px;color:var(--primary);cursor:pointer;user-select:none}
.notify-refresh:hover{text-decoration:underline}
.notify-list{max-height:min(60vh,360px);overflow:auto;padding:6px}
.notify-empty{padding:26px 12px;text-align:center;color:var(--muted);font-size:12.5px}
.notify-item{display:flex;align-items:center;gap:9px;padding:9px 10px;border-radius:8px;
  text-decoration:none;color:var(--text);transition:background .12s}
.notify-item:hover{background:#f6f8fc}
.notify-item .ni-ico{width:24px;height:24px;border-radius:7px;display:grid;place-items:center;
  font-size:13px;flex:0 0 auto;background:var(--primary-l);color:var(--primary)}
.notify-item .ni-ico.warn{background:#fff4e5;color:#b54708}
.notify-item .ni-ico.danger{background:#fee4e2;color:#b42318}
.notify-item .ni-ico.ok{background:#e6f7ef;color:#05603a}
.notify-item .ni-lab{font-size:12.8px;line-height:1.35}
.notify-cnt{margin-left:auto;background:var(--primary-l);color:var(--primary);font-size:11.5px;
  font-weight:700;padding:1px 7px;border-radius:20px;flex:0 0 auto}
.notify-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;
  padding:8px 12px;border-top:1px solid var(--line);background:#fbfcfe}
.notify-wecom{font-size:11.5px;color:var(--success)}
.notify-test{margin-left:auto;border:1px solid var(--line);background:#fff;color:var(--text2);
  font-size:11.5px;padding:3px 8px;border-radius:6px;cursor:pointer}
.notify-test:hover{color:var(--primary);border-color:#c9d3f8;background:var(--primary-l)}

.notify-toasts{position:fixed;right:18px;bottom:18px;z-index:9999;display:flex;flex-direction:column;
  gap:10px;width:min(340px,calc(100vw - 36px));pointer-events:none}
.nt-card{pointer-events:auto;position:relative;background:#fff;border:1px solid var(--line);border-left:4px solid var(--primary);
  border-radius:10px;box-shadow:var(--shadow-lg);padding:11px 30px 11px 12px;cursor:pointer;
  animation:ntIn .26s ease-out}
.nt-card.warn{border-left-color:var(--warning)}
.nt-card.ok{border-left-color:var(--success)}
.nt-card.danger{border-left-color:var(--danger)}
.nt-card:hover{box-shadow:0 16px 36px rgba(16,24,40,.18)}
.nt-card h4{margin:0 0 3px;font-size:13px;font-weight:700;color:var(--text)}
.nt-card p{margin:0;font-size:12.2px;color:var(--text2);line-height:1.5;
  overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.nt-card .nt-more{margin-top:4px;font-size:11.5px;color:var(--primary)}
.nt-x{position:absolute;top:6px;right:6px;width:20px;height:20px;border:0;background:transparent;
  color:var(--muted);font-size:15px;line-height:1;cursor:pointer;border-radius:5px}
.nt-x:hover{background:#f1f3f7;color:var(--text)}
.nt-card.out{animation:ntOut .2s ease-in forwards}
@keyframes ntIn{from{opacity:0;transform:translateY(16px) scale(.98)}to{opacity:1;transform:none}}
@keyframes ntOut{to{opacity:0;transform:translateY(10px) scale(.98)}}

.nt-mask{position:fixed;inset:0;background:rgba(16,24,40,.45);z-index:10000;display:grid;
  place-items:center;padding:20px;animation:ntFade .18s ease-out}
.nt-modal{width:100%;max-width:430px;background:#fff;border-radius:14px;box-shadow:var(--shadow-lg);
  overflow:hidden;animation:ntPop .22s ease-out}
.nt-modal-h{padding:16px 44px 10px 18px;display:flex;gap:10px;align-items:flex-start;position:relative}
.nt-modal-h .em{font-size:22px;line-height:1.1}
.nt-modal-t{flex:1;min-width:0}
.nt-modal-h b{display:block;font-size:15.5px;margin-bottom:2px}
.nt-modal-h span{font-size:12.5px;color:var(--text2)}
.nt-modal-h .nt-modal-hint{display:block;margin-top:6px;font-size:12px;line-height:1.5;
  color:#3b5bdb;background:#f0f4ff;border-radius:7px;padding:5px 8px;
  /* v1.9.15：驳回原因等长文本自动换行完整展示，不再单行省略号截断 */
  word-break:break-all;white-space:normal}
.nt-modal-x{position:absolute;top:9px;right:10px;width:26px;height:26px;padding:0;border:0;
  background:none;color:var(--muted);font-size:20px;line-height:24px;text-align:center;
  cursor:pointer;border-radius:6px}
.nt-modal-x:hover{background:#f1f3f7;color:var(--text)}
.nt-modal-b{padding:0 18px 4px;display:flex;flex-direction:column;gap:8px;max-height:46vh;overflow:auto}
.nt-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 11px;
  border:1px solid var(--line);border-radius:9px;text-decoration:none;color:var(--text);font-size:13px}
.nt-row:hover{background:#f8fafc;border-color:#d7dded}
.nt-row b{color:var(--primary);font-variant-numeric:tabular-nums}
.nt-modal-f{padding:12px 18px 16px;display:flex;gap:10px;justify-content:flex-end}
@keyframes ntFade{from{opacity:0}to{opacity:1}}
@keyframes ntPop{from{opacity:0;transform:translateY(10px) scale(.97)}to{opacity:1;transform:none}}

@media(max-width:640px){
  .notify-panel{position:fixed;top:60px;right:10px;left:10px;width:auto}
  .notify-toasts{right:10px;left:10px;bottom:10px;width:auto}
}

/* ============================================================
   v1.8.5 产品目录 UI 重设计（pc-* 前缀，仅本页使用）
   渐变页头 + 统计条 + 引导线类目树 + 产品图片卡片网格
   ============================================================ */
.pc-hero{position:relative;overflow:hidden;border-radius:16px;padding:20px 24px;color:#fff;
  background:linear-gradient(115deg,#3148d8 0%,#3b5bfd 48%,#5e7bff 100%);
  display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:14px;
  box-shadow:0 10px 30px rgba(59,91,253,.22)}
.pc-hero::before,.pc-hero::after{content:'';position:absolute;border-radius:50%;background:rgba(255,255,255,.09)}
.pc-hero::before{width:230px;height:230px;right:-50px;top:-110px}
.pc-hero::after{width:130px;height:130px;right:130px;bottom:-80px}
.pc-hero h2{font-size:20px;font-weight:700;letter-spacing:-.2px;margin-top:2px}
.pc-hero p{font-size:12.5px;opacity:.85;margin-top:5px}
.pc-crumb{font-size:11.5px;opacity:.75}
.pc-crumb span{margin:0 4px;opacity:.6}
.pc-btn-ghost{background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.38);color:#fff}
.pc-btn-ghost:hover{background:rgba(255,255,255,.24)}
.pc-btn-solid{background:#fff;color:#2b3fd6;border-color:#fff;font-weight:600}
.pc-btn-solid:hover{background:#f0f3ff}

.pc-stats{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.pc-stat{display:flex;align-items:center;gap:11px;background:#fff;border:1px solid var(--line);
  border-radius:13px;padding:11px 18px 11px 13px;flex:1;min-width:200px;transition:box-shadow .18s ease}
.pc-stat:hover{box-shadow:0 6px 16px rgba(15,23,42,.06)}
.pc-stat .ic{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;flex:none}
.pc-stat b{font-size:19px;font-weight:700;letter-spacing:-.3px;display:block;line-height:1.1}
.pc-stat b.warn{color:var(--warning)}
.pc-stat span{font-size:11.5px;color:var(--text2);margin-top:2px;display:block}

.pc-grid{display:grid;grid-template-columns:300px minmax(0,1fr);gap:16px;align-items:start}
@media(max-width:1100px){.pc-grid{grid-template-columns:1fr}}

/* ---- 左：类目树 ---- */
.pc-side{background:#fff;border:1px solid var(--line);border-radius:16px;overflow:hidden;
  position:sticky;top:14px;display:flex;flex-direction:column;animation:dictUp .4s cubic-bezier(.4,0,.2,1) both}
@media(max-width:1100px){.pc-side{position:static;max-height:none}}
.pc-side-h{padding:13px 16px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;
  align-items:baseline;gap:8px;flex:none}
.pc-side-h b{font-size:13.5px}
.pc-side-h span{font-size:10.5px;color:var(--muted)}
.pc-tree{overflow:auto;max-height:calc(100vh - 200px);padding:8px}
@media(max-width:1100px){.pc-tree{max-height:420px}}
.pc-row{display:flex;align-items:center;gap:8px;padding:7px 9px;border-radius:10px;transition:background .16s ease}
.pc-row:hover{background:#f5f7ff}
.pc-row:hover .pc-ops{opacity:1}
.pc-node.sel>.pc-row{background:linear-gradient(90deg,#edf0ff,#f6f8ff);box-shadow:inset 3px 0 0 var(--primary)}
.pc-node.lv1>.pc-row{font-weight:600}
.pc-node.off>.pc-row .pc-txt{color:var(--muted)}
.pc-arrow{width:13px;height:13px;flex:none;display:grid;place-items:center;color:#b6bcc8;
  transition:transform .2s cubic-bezier(.4,0,.2,1)}
.pc-node.open>.pc-row .pc-arrow{transform:rotate(90deg);color:var(--primary)}
.pc-arrow.leaf{visibility:hidden}
.pc-mark{width:26px;height:26px;border-radius:8px;display:grid;place-items:center;font-size:11px;
  font-weight:600;flex:none;overflow:hidden}
.pc-mark img{width:100%;height:100%;object-fit:cover;cursor:zoom-in;display:block}
.pc-mark.lg{width:44px;height:44px;border-radius:12px;font-size:16px}
.pc-txt{flex:1;min-width:0;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  color:var(--text);text-decoration:none}
.pc-cnt{font-size:10.5px;color:var(--text2);background:#f3f4f6;border-radius:99px;padding:1px 8px;flex:none}
.pc-node.sel>.pc-row .pc-cnt{background:#e0e5ff;color:#3b5bfd}
.pc-ops{opacity:0;transition:opacity .16s ease;white-space:nowrap;display:flex;gap:8px;align-items:center;flex:none}
.pc-ops button{background:none;border:none;padding:0;font:inherit;font-size:11.5px;color:var(--primary);cursor:pointer}
.pc-ops button:hover{text-decoration:underline}
.pc-ops button.add{color:#0e9384;font-weight:600}
.pc-ops button.del{color:var(--danger)}
.pc-kids{display:none;margin-left:21px;border-left:1px dashed #dfe3ec;padding-left:5px}
.pc-node.open>.pc-kids{display:block;animation:dictUp .22s cubic-bezier(.4,0,.2,1) both}
.pc-node.off>.pc-mark{filter:grayscale(1);opacity:.6}
.pc-none{padding:36px 20px;text-align:center}
.pc-none .ic{width:48px;height:48px;border-radius:50%;background:#f3f4f6;display:grid;place-items:center;margin:0 auto 10px}
.pc-none b{font-size:13px;display:block}
.pc-none p{font-size:12px;color:var(--text2);margin-top:3px}

/* ---- 右：产品卡片区 ---- */
.pc-main{background:#fff;border:1px solid var(--line);border-radius:16px;overflow:hidden;
  animation:dictUp .42s cubic-bezier(.4,0,.2,1) both}
.pc-main-h{display:flex;align-items:center;gap:12px;padding:16px 20px;flex-wrap:wrap;border-bottom:1px solid #f3f4f6}
.pc-main-t{min-width:0;display:flex;flex-direction:column}
.pc-path{font-size:11px;color:var(--muted)}
.pc-path span{margin:0 3px;color:#d1d5db}
.pc-main-t>b{font-size:15.5px;margin-top:1px}
.pc-sub2{font-size:11.5px;color:var(--text2);margin-top:1px}
.pc-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;
  padding:11px 20px;flex-wrap:wrap}
.pc-chips{display:flex;gap:7px;flex-wrap:wrap}
.pc-chip{border:1px solid var(--line);background:#fff;border-radius:99px;padding:5px 13px;font-size:12px;
  color:var(--text2);cursor:pointer;transition:all .15s ease}
.pc-chip:hover{border-color:#c7d2fe;color:var(--primary)}
.pc-chip.on{background:#111827;border-color:#111827;color:#fff;font-weight:500}
.pc-search{display:flex;align-items:center;gap:7px;border:1px solid var(--line);border-radius:99px;
  padding:6px 14px;color:var(--muted);min-width:210px;transition:border-color .15s ease}
.pc-search:focus-within{border-color:#4f6ef2;box-shadow:0 0 0 3px rgba(79,110,242,.12)}
.pc-search input{border:none;outline:none;flex:1;font-size:12.5px;background:none;color:var(--text)}

.pc-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(185px,1fr));gap:13px;padding:4px 20px 18px}
.pc-card{background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden;display:flex;
  flex-direction:column;transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}
.pc-card:hover{transform:translateY(-3px);box-shadow:0 14px 30px rgba(15,23,42,.11);border-color:#d7dfff}
.pc-img{position:relative;aspect-ratio:4/3;background:#f6f7f9;overflow:hidden}
.pc-img img{width:100%;height:100%;object-fit:cover;cursor:zoom-in;display:block;
  transition:transform .3s ease}
.pc-card:hover .pc-img img{transform:scale(1.05)}
.pc-noimg{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px}
.pc-noimg span{font-size:11px;color:#c3c8d4}
.pc-offtag{position:absolute;top:8px;left:8px;background:rgba(17,24,39,.72);color:#fff;font-size:10.5px;
  border-radius:6px;padding:2px 8px;backdrop-filter:blur(2px)}
.pc-mask{position:absolute;inset:0;background:linear-gradient(180deg,rgba(15,23,42,0) 40%,rgba(15,23,42,.55));
  display:flex;align-items:flex-end;justify-content:center;gap:9px;padding:12px;opacity:0;transition:opacity .18s ease}
.pc-card:hover .pc-mask{opacity:1}
.pc-mask button{background:rgba(255,255,255,.95);border:none;border-radius:8px;padding:5px 14px;font-size:12px;
  font:inherit;font-size:12px;color:var(--text);cursor:pointer;box-shadow:0 2px 8px rgba(15,23,42,.18)}
.pc-mask button:hover{background:#fff}
.pc-mask button.del{color:var(--danger)}
.pc-bd{padding:10px 12px 2px}
.pc-nm2{font-size:13px;font-weight:600;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;
  -webkit-box-orient:vertical;overflow:hidden;min-height:36px}
.pc-spec{font-size:11.5px;color:var(--text2);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* v1.9.3：产品卡片所属类目路径 */
.pc-catpath{font-size:10.5px;color:#98a2b3;margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pc-ft{display:flex;justify-content:space-between;align-items:center;padding:8px 12px 12px;margin-top:auto}
.pc-unit{font-size:11px;color:var(--text2);background:#f3f4f6;border-radius:6px;padding:2px 9px}
.pc-price{font-size:13px;font-weight:700;color:#d92d20;font-variant-numeric:tabular-nums}
/* v1.8.8：下单页淘宝式逐级选品 */
/* v1.9.20：商品行单行布局 —— 类目链+商品+单价+数量+删除全并排，不换行 */
/* v1.9.21：单价/数量紧跟商品下拉，不再被类目区撑开的空档隔开 */
.ir-cats{display:flex;gap:8px;flex:0 1 auto;min-width:0;flex-wrap:nowrap}
.ir-cats .ir-cat{flex:0 1 auto;max-width:150px;min-width:0}
.ir-cats .ir-prod{flex:0 1 auto;min-width:150px;max-width:320px}
.ir-price{flex:0 0 110px}
.ir-qty{flex:0 0 90px}
/* v1.9.19：商品行布局收敛（v1.9.20 起并入上方单行布局规则） */
/* v1.8.7：产品弹窗 单位/单价/状态 三列 */
.form-grid.c3{grid-template-columns:repeat(3,1fr)}
@media(max-width:700px){.form-grid.c3{grid-template-columns:1fr}}
.pc-card.off .pc-img img{filter:grayscale(1);opacity:.55}
.pc-card.off .pc-nm2{color:var(--muted)}
.pc-filter-empty{padding:30px 20px;text-align:center;font-size:12.5px;color:var(--muted);
  border-top:1px dashed var(--line)}

.pc-empty{display:flex;flex-direction:column;align-items:center;text-align:center;gap:4px;padding:46px 20px}
.pc-empty .ic{width:52px;height:52px;border-radius:50%;background:#f3f4f6;display:grid;place-items:center;margin-bottom:8px}
.pc-empty b{font-size:14px}
.pc-empty p{font-size:12.5px;color:var(--text2);margin-top:2px}
.pc-empty .btn{margin-top:12px}

@media(max-width:640px){
  .pc-cards{grid-template-columns:repeat(2,1fr);gap:10px;padding:4px 12px 14px}
  .pc-main-h{padding:13px 14px}
  .pc-toolbar{padding:10px 14px}
  .pc-search{min-width:0;flex:1}
  .pc-hero{padding:16px 18px}
}

/* ================= v1.9.84：订单列表卡片（美图设计室方案 · 三套模板可切换） ================= */
/* 设计规范：主色 #165DFF · 成功 #00B42A · 警告 #FF7D00 · 危险 #F53F3F · 提示 #86909C
   文本 #1D2129/#4E5969/#86909C · 卡片圆角 12px · 预警卡顶部 3px 色条 */
.ocards{display:flex;flex-direction:column;gap:16px;width:100%;max-width:1760px;margin:0 auto}
/* 卡片骨架：卡根(行) = 勾选(浮层) + 深色栏(仅深浅双栏) + 白色主体(单号行 + 内容行) */
.ocard{position:relative;display:flex;align-items:stretch;background:#fff;border:1px solid #e5e7eb;
  border-radius:12px;box-shadow:0 1px 2px rgba(16,24,40,.04);padding:0;overflow:hidden;
  transition:box-shadow .15s ease,border-color .15s ease}
.ocard:hover{box-shadow:0 8px 24px rgba(16,24,40,.08);border-color:#d1d5db}
.ocard::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;
  background:transparent;pointer-events:none;z-index:2}
.ocard.row-alert{border-color:#fecaca;background:#fef6f6}
.ocard.row-alert::before{background:#f53f3f}
.ocard.row-warn{border-color:#fbe1a0;background:#fffcf3}
.ocard.row-warn::before{background:#ff7d00}
.ocard-chk{flex:0 0 auto;padding:18px 0 0 14px}
.ocard-mainwrap{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;background:#fff}
.ocard-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;min-height:48px;
  padding:6px 24px;border-bottom:1px solid #e5e6eb}
.ocard-body{display:flex;gap:0;align-items:stretch;padding:20px 0;flex:1 1 auto}
/* v1.9.189：产品图列收窄（96→72px），把空间让给产品内容与收款信息 */
.ocard-gal{flex:0 0 72px;display:flex;flex-direction:column;gap:6px;align-items:flex-start;margin-left:18px}
.ocard-main{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:14px;padding:0 20px}
.ocard-no{font-size:15.5px;font-weight:700;color:#1d2939;letter-spacing:.2px}
.ocard-copy{display:inline-flex;align-items:center;color:#c9cdd4;cursor:pointer;padding:2px;border-radius:4px}
.ocard-copy:hover{color:#4e5969;background:#f2f3f5}
.ocard-time{font-size:11.5px;color:#98a2b3;margin-left:auto;white-space:nowrap;text-align:right;line-height:1.5}
/* 状态徽章：统一胶囊 */
.ocard .badge{border-radius:999px;font-size:11.5px;line-height:1;padding:4px 10px;font-weight:500;border:none}
/* 产品内容块：徽章置于块内顶部，正文不再悬挂绕行 */
.pc-block{border-radius:8px;padding:10px 14px 11px}
.pc-block .pc-txt{display:block}
.pc-items{background:#f0f6ff;border:1px solid #d9e6ff}
.pc-notes{background:#fff8ec;border:1px solid #f3e2ba}
.pc-tag{display:inline-block;margin-bottom:6px;border-radius:4px;font-size:11.5px;line-height:18px;padding:2px 8px;color:#fff;font-weight:500}
.pc-items .pc-tag{background:#165dff}
.pc-notes .pc-tag{background:#f7a235}
.pc-txt{font-size:13.5px;line-height:1.65;color:#1d2129;white-space:pre-wrap}
/* 审核步进器：done=绿 cur=蓝光环 fail=红 todo/stop=灰 */
.osteps{display:flex;align-items:flex-start;margin-top:2px}
.ostep{display:flex;flex-direction:column;align-items:center;flex-shrink:0}
.ostep i{width:13px;height:13px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-style:normal;font-size:9px;color:#fff;background:#e5e7eb}
.ostep span{font-size:11px;color:#98a2b3;margin-top:5px;white-space:nowrap}
.ostep.done i{background:#00b42a}
.ostep.done span{color:#4e5969;font-weight:500}
.ostep.cur i{background:#165dff;box-shadow:0 0 0 3px rgba(22,93,255,.15)}
.ostep.cur span{color:#165dff;font-weight:600}
.ostep.fail i{background:#f53f3f}
.ostep.fail span{color:#f53f3f;font-weight:500}
.ostep.stop span{color:#c9cdd4}
.ostep-line{height:2px;flex:0 0 44px;min-width:44px;margin:6px 4px 0;background:#e5e7eb}
.ostep-line.done{background:#00b42a}
/* 缺图占位：产品库未传图的商品在缩略条里显示灰块（v1.9.86） */
.gal-none{width:28px;height:28px;flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;
  border:1px dashed #d0d3d9;border-radius:4px;font-size:9px;color:#98a2b3;background:#fafafa}
/* 物流行 */
.ocard-logi{display:flex;align-items:center;gap:6px;font-size:12px;color:#4e5969}
.ocard-logi .mono{color:#165dff;font-weight:600;cursor:pointer}
/* 右栏 */
.ocard-side{flex:0 0 36%;border-left:1px solid #e5e6eb;padding:2px 24px 2px 22px;display:flex;
  flex-direction:column;gap:14px;font-size:12.5px}
.ocard-cust{display:flex;flex-direction:column;gap:7px;font-size:13.5px}
.ocard-cust .crow{display:flex;gap:7px;align-items:flex-start;color:#4e5969;line-height:1.55}
.ocard-cust .crow b{font-size:14px}
.ocard-cust .crow svg{flex:none;margin-top:2px;color:#86909c}
.ocard-cust .crow b{color:#1d2939;font-weight:600}
.ocard-money{background:linear-gradient(135deg,#eef4ff,#eef0ff);border-radius:12px;padding:12px 15px 13px}
.ocard-money::before{content:"订单金额";display:block;font-size:11px;color:#86909c;margin-bottom:2px}
.ocard-amt{font-size:28px;font-weight:700;color:#0e42d2;letter-spacing:.2px;
  font-variant-numeric:tabular-nums;line-height:1.2}
.ocard-pay{display:flex;gap:16px;font-size:13px;color:#86909c;flex-wrap:wrap}
.ocard-pay b{font-weight:600}
.ocard-pay .got{color:#00b42a}
.ocard-pay .owe{color:#f53f3f}
.ocard-pay .due{color:#ff7d00}
.ocard-flags{display:flex;flex-wrap:wrap;gap:6px;align-items:center;background:#f7f8fa;
  border-radius:12px;padding:11px 13px}
.ocard-flags::before{content:"付款信息";font-size:11px;color:#86909c;margin-right:10px}
.ocard-flags .badge{border-radius:4px;font-size:11px;background:#fff;border:1px solid #e5e7eb;color:#4e5969}
.ocard-flags .badge-success{background:#e8ffea;border-color:#b7ebc2;color:#00b42a}
.ocard-flags .badge-danger{background:#ffece8;border-color:#ffd2ca;color:#f53f3f}
.ocard-flags .cell-sub{font-size:11px}
.ocard-acts{margin-top:auto;padding-top:10px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.obtn{display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 16px;border-radius:6px;
  font-size:13px;font-weight:500;cursor:pointer;border:1px solid transparent;transition:.15s;line-height:1.4}
.obtn-main{background:#165dff;color:#fff}
.obtn-main:hover{background:#0e42d2}
.obtn-solid{background:#165dff;color:#fff}
.obtn-solid:hover{background:#0e42d2}
.obtn-ghost{background:#fff;border-color:#e5e6eb;color:#4e5969}
.obtn-ghost:hover{background:#f7f8fa;border-color:#c9cdd4}
.obtn-danger{background:#fff;border-color:#ffccc9;color:#f53f3f}
.obtn-danger:hover{background:#fff1f0}

/* ================= v1.9.81：手机 H5 适配 ================= */
/* 汉堡按钮：桌面隐藏 */
.sb-hamb{display:none;align-items:center;justify-content:center;width:34px;height:34px;margin-right:8px;
  border:1px solid var(--line);border-radius:8px;background:#fff;font-size:17px;cursor:pointer;color:var(--text)}
.sb-mask{display:none;position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:55}

@media(max-width:920px){
  /* 侧栏改抽屉 */
  .sidebar{position:fixed;left:0;top:0;bottom:0;z-index:60;transform:translateX(-105%);
    transition:transform .2s ease;box-shadow:0 0 30px rgba(0,0,0,.28)}
  .sidebar.open{transform:none}
  .sb-mask.show{display:block}
  .main{margin-left:0}
  .sb-hamb{display:inline-flex}
  .topbar{padding:0 12px;height:52px}
  .topbar-title{font-size:15px}
  .who{display:none}
  .content{padding:12px 12px 36px}
  /* 订单卡片竖排（v1.9.84 新骨架） */
  .ocards{max-width:none;gap:12px}
  .ocard-head{padding:10px 14px 10px 44px}
  .ocard-body{flex-wrap:wrap;padding:12px 14px 16px;gap:10px}
  .ocard-gal{order:1;margin-left:0}
  .ocard-main{order:2;flex:1 1 100%;padding:0}
  .ocard-side{order:3;flex:1 1 100%;border-left:none;border-top:1px solid #f0f1f3;
    padding:12px 0 0}
  .ocard-time{margin-left:0;width:100%;white-space:normal;text-align:left}
  /* 详情页信息网格单列 */
  .kv{padding:10px 12px}
  /* 筛选区换行更自然 */
  .lg-chips{max-height:88px;overflow-y:auto}
}
@media(max-width:600px){
  .form-grid,.form-grid.c3,.form-grid.c4{grid-template-columns:1fr}
  .form-grid.c4 .span2,.form-grid .span2{grid-column:auto}
  .ocard-amt{font-size:20px}
  .btn-row{flex-wrap:wrap}
}
