/* ================= 主题变量层（8 套皮肤） ================= */
:root[data-theme="cattery"]{
  /* 浅金轻奢（Leo 2026-09-14 定版，金策猫舍同款）：米白底 + 白卡片 + 香槟金，细腻边框、克制立体感 */
  color-scheme:light;
  --brand:#B8912F; --brand-d:#8A6B23; --brand-l:#F7F1DF; --brand-soft:#F7F1DF;
  --page-bg:#EEF1F6; --card-bg:#FFFFFF; --thead-bg:#F4F1E6; --row-hover:#F7F4EA;
  --bd:#DFE4EE; --bd-strong:#C6CEDD;
  --tx:#1F2430; --tx-mut:#5A6372; --tx-faint:#98A0AE;
  --btn-shadow:0 2px 8px rgba(184,145,47,.32);
  --card-shadow:0 4px 16px rgba(120,95,30,.08);
  --th-shadow:inset 0 -2px 0 #E8E2CE;
  --teal:#0F766E; --teal-d:#0B5A54; --teal-l:#E0F2EF;
  --amber:#B57D1A; --amber-l:#F7EDD6; --purple:#6D5BD0; --purple-l:#EEECFB;
  --green:#4C8C1A; --green-l:#EDF4DF; --red:#D0453E; --red-d:#A83228; --red-l:#FBEAE8;
}
:root, :root[data-theme="qq"]{
  color-scheme:light;
  --brand:#12B7F5; --brand-d:#0B6ECE; --brand-l:#EAF4FF; --brand-soft:#EAF4FF;
  --page-bg:#F6F9FE; --card-bg:#ffffff; --thead-bg:#F8FBFF; --row-hover:#F2F9FF;
  --bd:#E8F0FE; --bd-strong:#C9DCF5;
  --tx:#1f2328; --tx-mut:#5F6B7A; --tx-faint:#93A4B8;
  --btn-shadow:0 2px 8px rgba(18,183,245,.35);
  --card-shadow:0 4px 16px rgba(18,116,219,.08);
  --th-shadow:inset 0 -2px 0 var(--bd);
  --teal:#0F6E56; --teal-d:#085041; --teal-l:#E1F5EE;
  --amber:#854F0B; --amber-l:#FAEEDA; --purple:#3C3489; --purple-l:#EEEDFE;
  --green:#3B6D11; --green-l:#EAF3DE; --red:#E24B4A; --red-d:#A32D2D; --red-l:#FCEBEB;
}
:root[data-theme="esports"]{
  color-scheme:dark;
  --brand:#33C2FF; --brand-d:#0E9FE8; --brand-l:#14335C; --brand-soft:#14335C;
  --page-bg:#0A1628; --card-bg:#101F38; --thead-bg:#16294A; --row-hover:#1A3156;
  --bd:#22375E; --bd-strong:#2F4A7A;
  --tx:#E8F1FF; --tx-mut:#9FB4D8; --tx-faint:#64789B;
  --btn-shadow:0 2px 10px rgba(51,194,255,.4);
  --card-shadow:0 6px 20px rgba(0,0,0,.45);
  --teal:#2DD4BF; --teal-d:#5EEAD4; --teal-l:#0F3D3A;
  --amber:#FBBF24; --amber-l:#3A2E0A; --purple:#A78BFA; --purple-l:#2D1E5C;
  --green:#7BD88A; --green-l:#14301A; --red:#FF6B63; --red-d:#FF8A84; --red-l:#3A1414;
}
:root[data-theme="gold"]{
  color-scheme:dark;
  --brand:#E8B64C; --brand-d:#B98A25; --brand-l:#3A2E14; --brand-soft:#3A2E14;
  --page-bg:#141210; --card-bg:#1F1B16; --thead-bg:#2A241C; --row-hover:#2E2719;
  --bd:#3A3226; --bd-strong:#54462E;
  --tx:#F5EBD7; --tx-mut:#BFA77A; --tx-faint:#7A6A4E;
  --btn-shadow:0 2px 10px rgba(232,182,76,.35);
  --card-shadow:0 6px 20px rgba(0,0,0,.5);
  --teal:#4ADE80; --teal-d:#86EFAC; --teal-l:#14301A;
  --amber:#E8B64C; --amber-l:#3A2E14; --purple:#C4B5FD; --purple-l:#2E2458;
  --green:#A3D635; --green-l:#26310D; --red:#F87171; --red-d:#FCA5A5; --red-l:#3A1616;
}
:root[data-theme="jade"]{
  color-scheme:light;
  --brand:#0FA37E; --brand-d:#0B7A5F; --brand-l:#E0F5EE; --brand-soft:#E0F5EE;
  --page-bg:#F4FBF8; --card-bg:#ffffff; --thead-bg:#F2FAF6; --row-hover:#EAF7F1;
  --bd:#DCF0E7; --bd-strong:#B8E0CF;
  --tx:#1F2A26; --tx-mut:#55685F; --tx-faint:#8FA89D;
  --btn-shadow:0 2px 8px rgba(15,163,126,.3);
  --card-shadow:0 4px 16px rgba(15,122,95,.08);
  --teal:#0FA37E; --teal-d:#0B7A5F; --teal-l:#E0F5EE;
  --amber:#B4790B; --amber-l:#F9EED6; --purple:#5B4FA8; --purple-l:#ECEAF8;
  --green:#4A8C1A; --green-l:#EBF4DF; --red:#D64545; --red-d:#B23434; --red-l:#FBE9E9;
}
:root[data-theme="violet"]{
  color-scheme:dark;
  --brand:#9B7BFF; --brand-d:#7A56E8; --brand-l:#2D1E5C; --brand-soft:#2D1E5C;
  --page-bg:#160F2B; --card-bg:#201543; --thead-bg:#2A1C58; --row-hover:#2F2164;
  --bd:#37246E; --bd-strong:#4A3194;
  --tx:#EEE9FF; --tx-mut:#B3A6E0; --tx-faint:#7666A8;
  --btn-shadow:0 2px 10px rgba(155,123,255,.4);
  --card-shadow:0 6px 20px rgba(0,0,0,.45);
  --teal:#2DD4BF; --teal-d:#5EEAD4; --teal-l:#0F3D3A;
  --amber:#FBBF24; --amber-l:#3A2E0A; --purple:#C4B5FD; --purple-l:#2E2458;
  --green:#7BD88A; --green-l:#14301A; --red:#FF6B63; --red-d:#FF8A84; --red-l:#3A1414;
}
:root[data-theme="flame"]{
  color-scheme:dark;
  --brand:#FF5A4E; --brand-d:#D63A2F; --brand-l:#4A1B16; --brand-soft:#4A1B16;
  --page-bg:#1E0E0E; --card-bg:#2A1414; --thead-bg:#3A1A1A; --row-hover:#431F1F;
  --bd:#4E2424; --bd-strong:#6B3232;
  --tx:#FFE9E6; --tx-mut:#E0A8A2; --tx-faint:#A86E68;
  --btn-shadow:0 2px 10px rgba(255,90,78,.4);
  --card-shadow:0 6px 20px rgba(0,0,0,.45);
  --teal:#2DD4BF; --teal-d:#5EEAD4; --teal-l:#0F3D3A;
  --amber:#FBBF24; --amber-l:#3A2E0A; --purple:#C4B5FD; --purple-l:#2E2458;
  --green:#7BD88A; --green-l:#14301A; --red:#FF8A84; --red-d:#FFB4AF; --red-l:#4A1B16;
}
:root[data-theme="aurora"]{
  color-scheme:light;
  --brand:#0891B2; --brand-d:#0E7490; --brand-l:#E0F7FC; --brand-soft:#E0F7FC;
  --page-bg:#F3FBFD; --card-bg:#ffffff; --thead-bg:#F0FAFD; --row-hover:#E8F7FB;
  --bd:#D2EEF5; --bd-strong:#AADDEA;
  --tx:#12303A; --tx-mut:#4A6B76; --tx-faint:#88A6B0;
  --btn-shadow:0 2px 8px rgba(8,145,178,.3);
  --card-shadow:0 4px 16px rgba(8,116,144,.08);
  --teal:#0F9488; --teal-d:#0B6E66; --teal-l:#DDF5F2;
  --amber:#B4790B; --amber-l:#F9EED6; --purple:#5B4FA8; --purple-l:#ECEAF8;
  --green:#4A8C1A; --green-l:#EBF4DF; --red:#D64545; --red-d:#B23434; --red-l:#FBE9E9;
}
:root[data-theme="slate"]{
  color-scheme:light;
  --brand:#5B7C99; --brand-d:#44607A; --brand-l:#E8EEF4; --brand-soft:#E8EEF4;
  --page-bg:#F5F6F8; --card-bg:#ffffff; --thead-bg:#F4F6F9; --row-hover:#EDF1F5;
  --bd:#DDE3EA; --bd-strong:#C2CDD8;
  --tx:#2A323B; --tx-mut:#5C6B7A; --tx-faint:#93A1AF;
  --btn-shadow:0 2px 8px rgba(91,124,153,.3);
  --card-shadow:0 4px 16px rgba(68,96,122,.08);
  --teal:#4E8A78; --teal-d:#3A6B5C; --teal-l:#E2F0EB;
  --amber:#9A7413; --amber-l:#F5EDD6; --purple:#6B5CA5; --purple-l:#ECE9F6;
  --green:#5A8325; --green-l:#EDF3E0; --red:#C25050; --red-d:#A33E3E; --red-l:#F8E9E9;
}
/* 兼容旧变量名 */
:root{
  --blue:var(--brand); --blue-d:var(--brand-d); --blue-l:var(--brand-l);
  --bg:var(--page-bg); --card:var(--card-bg); --ink:var(--tx);
  --mut:var(--tx-mut); --hint:var(--tx-faint); --line:var(--bd);
}

*{box-sizing:border-box;margin:0;padding:0}
/* ===== 抗闪屏/抗抖动 ===== */
html{scrollbar-gutter:stable}   /* 不用 scroll-behavior:smooth——硬刷新滚动恢复会动画化，造成页面滑动抖动 */
[v-cloak]{display:none!important}
body{font-family:"PingFang SC","Microsoft YaHei",system-ui,sans-serif;background:var(--page-bg);color:var(--tx);font-size:14px;line-height:1.6;transition:background .25s,color .25s}
a{color:var(--brand-d);text-decoration:none;cursor:pointer}
[data-theme="esports"] a,[data-theme="violet"] a,[data-theme="flame"] a,[data-theme="gold"] a{color:var(--brand)}
button{font-family:inherit;cursor:pointer}
input,select,textarea{font-family:inherit;color:var(--tx)}

#topbar{background:var(--card-bg);padding:0 18px;height:52px;display:flex;align-items:center;gap:14px;position:sticky;top:0;z-index:50;transition:background .25s}   /* v0.14.79 #3（Leo 定版）：删下边框硬线——背景色已够区分 */
/* 布局框架定版（Leo 2026-09-16：左、右上、右下）：品牌区在左栏顶部；顶栏只在右列、恢复 52px 紧凑 */
.sidemenu .brand{font-weight:400;font-size:15px;color:var(--brand-d);white-space:nowrap;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:3px;margin:0 auto 12px;padding:4px 6px 16px;border-bottom:1px solid var(--bd);border-radius:0;transition:background .2s}   /* v0.15.40（Leo 图1）：左侧菜单全部不加粗 */
.sidemenu .brand:hover{background:var(--brand-l);border-radius:12px}
/* 全局统一 LOGO（Leo 2026-09-16 定版）：单一事实源 = /assets/logo.png，全站引用同一路径；更换只需覆盖该文件 */
/* 左栏竖排品牌区：LOGO 在上、宽≈系统名文字宽（≈118px），文字居中在下，版本号第三行 */
.brand-logo{width:118px;height:auto;display:block}
.brand-name{display:flex;align-items:baseline;justify-content:center;line-height:1.2}
.sidemenu .brand .brand-ver{font-size:10px;opacity:.6;margin:0;letter-spacing:.5px}
.login-logo{height:68px;width:auto;display:block;margin:0 auto 12px}
.lock-logo{width:5cm;height:auto;display:block;margin:0 auto}   /* Leo 2026-09-16 定版：锁屏 LOGO 等比放大至 5cm 宽（≈189px），height:auto 保比例 */
[data-theme="esports"] #topbar .brand,[data-theme="violet"] #topbar .brand,[data-theme="flame"] #topbar .brand,[data-theme="gold"] #topbar .brand{color:var(--brand)}
#topbar select{border:1px solid var(--bd);border-radius:8px;padding:3px 5px;font-size:12px;color:var(--tx-mut);background:var(--card-bg)}
.bell{position:relative;cursor:pointer;font-size:16px;color:var(--tx-mut);padding:4px}
.bell .badge{position:absolute;top:0;right:-2px;background:var(--red);color:#fff;font-size:10px;border-radius:10px;padding:0 5px;line-height:15px}
.notif-panel{position:absolute;top:48px;right:14px;width:330px;max-height:420px;overflow:auto;background:var(--card-bg);border:1px solid var(--bd);border-radius:12px;box-shadow:0 8px 28px rgba(0,0,0,.18);z-index:60}
.notif-panel .ni{padding:10px 14px;border-bottom:1px solid var(--bd);font-size:13px;color:var(--tx)}
.notif-panel .ni.unread{background:var(--brand-l)}
.notif-panel .ni .nt{font-size:11px;color:var(--tx-faint)}

#main{max-width:1200px;margin:0 auto;padding:20px 18px 60px}
.main-narrow{max-width:460px;margin:0 auto}

.login-wrap{max-width:400px;margin:64px auto;background:var(--card-bg);border:1px solid var(--bd);border-radius:16px;padding:30px;box-shadow:var(--card-shadow)}
.login-wrap h1{font-size:18px;font-weight:600;margin-bottom:4px;color:var(--brand-d)}
.login-wrap .sub{color:var(--tx-mut);font-size:12px;margin-bottom:16px}

.field{margin-bottom:12px}
.field label{display:block;font-size:12px;color:var(--tx-mut);margin-bottom:3px}
select{border:1px solid var(--bd);border-radius:8px;padding:6px 10px;font-size:13.5px;background:var(--card-bg);color:var(--tx)}
select option{background:var(--card-bg);color:var(--tx)}  /* 展开列表同步主题，防暗色主题白底浅字 */
/* 自定义语言选择器（原生 select 弹层在 WebView2 文字不渲染的绕开方案） */
.lang-picker{position:relative;display:inline-block}
.lp-btn{border:1px solid var(--bd);border-radius:8px;padding:3px 8px;font-size:12px;color:var(--tx-mut);background:var(--card-bg);cursor:pointer;transition:all .15s}
.lp-btn:hover{border-color:var(--brand);color:var(--tx)}
.lang-picker.open .lp-btn{border-color:var(--brand);color:var(--tx)}
.lp-arrow{font-size:10px;margin-left:3px}
.lp-list{position:absolute;top:calc(100% + 6px);left:0;min-width:150px;background:var(--card-bg);border:1px solid var(--bd-strong);border-radius:10px;box-shadow:0 12px 32px rgba(0,0,0,.4);z-index:220;padding:4px}
#topbar .lp-list{left:auto;right:0}  /* 顶栏在屏幕右缘，列表向右对齐防溢出 */
.lp-item{padding:7px 12px;border-radius:7px;font-size:12.5px;color:var(--tx);cursor:pointer;white-space:nowrap}
.lp-item:hover{background:var(--row-hover)}
.lp-item.cur{color:var(--brand);font-weight:700}
/* 我要订货页 */
.addr-card{border:1px solid var(--bd-strong);border-radius:10px;padding:12px 14px;margin-top:10px;background:var(--page-bg)}
.addr-card.confirmed{border-color:var(--brand);background:var(--brand-l)}
.addr-card-t{font-size:12px;font-weight:700;color:var(--tx-mut);letter-spacing:.5px;display:flex;justify-content:space-between}
.addr-card-n{font-size:15px;font-weight:700;margin-top:6px}
.addr-card-a{font-size:13px;color:var(--tx-mut);white-space:pre-line;margin-top:2px}
.order-row{border:1px solid var(--bd);border-radius:10px;padding:12px 14px;margin-bottom:12px;background:var(--page-bg)}
.order-row-head{display:flex;gap:10px;align-items:center}
.order-row-head select{flex:1;min-width:0}
.qty-input{width:100%;text-align:center}
.order-row-sub{margin-top:10px;border-top:1px dashed var(--bd);padding-top:8px}
/* v0.10.16 定价货币与汇率区 */
.fx-grid{display:flex;flex-wrap:wrap;gap:10px 18px;align-items:end;margin-top:8px}
.fx-cell{display:inline-flex;flex-direction:column;gap:3px}
.fx-cell input{padding:5px 8px}
/* v0.10.32 数量步进器（Leo 定版：− 数字 + 三件套，替代原生 number 输入） */
.qty-step{display:inline-flex;align-items:center;gap:4px}
.qty-btn{width:26px;height:26px;border:1px solid var(--bd);border-radius:8px;background:var(--card-bg,#fff);color:var(--tx);font-size:15px;line-height:1;cursor:pointer;padding:0;display:inline-flex;align-items:center;justify-content:center}
.qty-btn:hover:not(:disabled){border-color:var(--brand);color:var(--brand-d);background:var(--brand-soft)}
.qty-btn:disabled{opacity:.4;cursor:not-allowed}
.qty-in{width:36px;height:26px;text-align:center;border:1px solid var(--bd);border-radius:8px;font-size:13.5px;padding:0 2px;background:var(--card-bg,#fff);color:var(--tx)}
.qty-in:focus{border-color:var(--brand);outline:none}
/* v0.10.33 行金额区（Leo 定版：PI 惯例 Unit Price/Amount 行右端右对齐） */
.ord-amt{display:flex;flex-direction:column;align-items:flex-end;gap:1px;min-width:0}
.ord-amt .oa-u{font-size:11.5px;color:var(--tx-mut);white-space:nowrap}
.ord-amt .oa-t{font-size:14.5px;font-weight:700;color:var(--tx);white-space:nowrap}
.ord-head .ord-r{text-align:right}
/* v0.10.34 下单成功页（Leo 定版：收窄居中卡+成功圆章+PI 汇总+双按钮） */
.done-wrap{display:flex;justify-content:center;padding:48px 16px}
.done-card{width:620px;max-width:94vw;background:var(--card-bg);border:1px solid var(--bd);border-radius:20px;box-shadow:var(--card-shadow);padding:36px 40px 30px;text-align:center}
.done-badge{width:60px;height:60px;margin:0 auto 14px;border-radius:50%;background:linear-gradient(150deg,#3BB273,#2A9D8F);color:#fff;font-size:30px;font-weight:700;display:flex;align-items:center;justify-content:center;box-shadow:0 8px 20px rgba(42,157,143,.35)}
.done-title{margin:0 0 6px;font-size:21px}
.done-no{font-size:26px;font-weight:700;letter-spacing:1px;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;color:var(--brand-d);margin-bottom:18px}
.done-items{border:1px solid var(--bd);border-radius:12px;overflow:hidden;margin-bottom:14px}
.done-item{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 16px;text-align:left}
.done-item+.done-item{border-top:1px solid var(--bd)}
.done-item .di-l{display:flex;flex-direction:column;gap:2px;min-width:0}
.done-item .di-l .hint{font-size:12px}
.done-item .di-r{display:flex;align-items:center;gap:14px;white-space:nowrap}
.done-item .di-qty{color:var(--tx-mut)}
.done-sum{border-top:1px dashed var(--bd);padding-top:12px;margin-bottom:20px}
.ds-row{display:flex;justify-content:space-between;padding:4px 2px;color:var(--tx-mut)}
.ds-row.grand{color:var(--tx);font-size:17px;padding-top:8px}
.done-actions{display:flex;justify-content:center;gap:10px}
/* v0.11.0 付款指引卡（Leo 定版：QQ 蓝参考号大字块） */
.pay-guide .pay-ref{background:linear-gradient(150deg,#12B7F5,#0E9BD8);border-radius:12px;padding:14px 18px;color:#fff;margin:10px 0 12px;text-align:center;box-shadow:0 6px 16px rgba(18,183,245,.28)}
.pay-guide .pay-ref .pr-label{font-size:12px;opacity:.85}
.pay-guide .pay-ref .pr-value{font-size:24px;font-weight:700;letter-spacing:2px;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;margin:2px 0}
.pay-guide .pay-ref .hint{color:rgba(255,255,255,.85)!important}
/* v0.11.4 付款条款弹窗（Leo 定版重设计：加宽分区、行式编辑） */
.modal.terms-modal{width:620px;max-width:min(620px,94vw);padding:20px 24px}
.terms-sect{border:1px solid var(--bd);border-radius:12px;padding:12px 14px;margin-top:10px;background:var(--page-bg)}
.terms-sect .ts-title{font-weight:700;font-size:13.5px;margin-bottom:8px}
.terms-hist{display:flex;gap:10px;align-items:center;padding:5px 0;font-size:12.5px}
.terms-hist+.terms-hist{border-top:1px dashed var(--bd)}
.terms-hist .th-plan{flex:1}
.terms-row{display:flex;gap:8px;align-items:center;margin-bottom:8px}
.terms-row .tr-label{flex:1}
.terms-row .tr-pct{width:96px}
.terms-inst-row{display:flex;gap:10px;align-items:center;margin-bottom:8px}
.terms-inst-row .tr-label{flex:1}
.terms-inst-row .ti-name{flex:1;font-weight:600;font-size:13.5px}
/* v0.11.17 修改订单弹窗美化（Leo 圈定） */
.modal.adj-modal{width:640px;max-width:min(640px,94vw);padding:20px 24px}
.adj-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.adj-total{margin-top:12px;padding-top:10px;border-top:1px dashed var(--bd);text-align:right;font-size:13.5px;color:var(--tx-mut)}
.adj-total b{color:var(--brand-d);font-size:16.5px;margin-left:4px}
/* v0.11.18 修改弹窗步进器输入宽（Leo 圈定） */
.qty-in.adj-num{width:88px}
/* v0.11.20 「已修改」徽标（Leo 定版：被修改过的订单有单独标记）——琥珀色，与修改说明卡同色系 */
.chip.st-adj{background:rgba(245,158,11,.16);color:#B45309;border:1px solid rgba(245,158,11,.35);margin-left:5px}
/* v0.11.27 状态格相邻徽标通用间距（Leo 圈定：太近了）——绿标（st-shipped 无左距）同样生效 */
.tbl td .chip+.chip{margin-left:6px}
/* v0.11.21 修改原因说明卡+新旧价对比（Leo 定版）：旧价划线灰显→新价加粗品牌色 */
.adj-reason{border-left:4px solid var(--amber)}
.adj-reason h3{margin:0 0 6px}
/* v0.11.28 说明文字改引用式（Leo 圈定：整条色块+大粗字容易被当成标题）——无底色细左条引用，一看是内容不是标题 */
.ar-note{font-size:15px;font-weight:600;color:var(--tx);border-left:3px solid var(--brand);
  padding:2px 0 2px 12px;margin:2px 0 0;white-space:pre-line;line-height:1.55}
.ar-changes{border-top:1px dashed var(--bd);padding-top:10px;margin-top:10px;display:flex;flex-direction:column;gap:5px}
.ar-row{display:flex;align-items:center;gap:8px;font-size:13.5px}
.ar-field{color:var(--tx-mut);min-width:90px}
.ar-arrow{color:var(--tx-mut)}
.adj-old{text-decoration:line-through;color:var(--tx-mut);font-weight:400;margin-right:2px}
.adj-new{color:var(--brand-d);font-weight:700}
/* v0.11.25 确认修改警示条（Leo 圈定：提示太不醒目） */
.accept-strip{display:flex;align-items:center;gap:9px;background:#FFF7E6;border:1px solid rgba(245,166,35,.5);
  border-radius:10px;padding:10px 14px;color:#8A5A00;font-weight:600;font-size:13.5px;margin-bottom:10px}
.accept-strip .as-ico{flex:none;font-size:15px}
/* v0.11.29 修改原因说明卡改邮件式（Leo 圈定：按邮件思路——标题头+主体内容） */
.card.adj-mail{padding:0;overflow:hidden;border-left:none}
.adj-mail .am-head{background:linear-gradient(135deg,var(--brand),var(--brand-d));color:#fff;
  font-weight:700;font-size:14.5px;padding:11px 18px;letter-spacing:.5px}
.adj-mail .am-body{padding:14px 18px 16px}
/* v0.11.30 订单待确认操作条（Leo 圈定：主操作按钮太不明显） */
.order-act-bar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;
  background:var(--brand-soft);border:1px solid var(--brand);border-radius:14px;padding:14px 18px;margin-bottom:16px}
.order-act-bar .oab-text b{font-size:15.5px;display:block;margin-bottom:3px}
.order-act-bar .oab-hint{font-size:12.5px;color:var(--tx-mut)}
.order-act-bar .oab-hint.warn{color:#B45309;font-weight:600}
.order-act-bar .oab-btns{display:flex;gap:10px;flex:none}
.order-act-bar .oab-btns .btn{padding:10px 26px;font-size:14.5px}
/* v0.11.31 付款信息一键复制（Leo 圈定） */
.copy-mini{border:1px solid var(--bd);background:var(--card-bg);border-radius:6px;padding:1px 7px;font-size:11.5px;
  color:var(--tx-mut);cursor:pointer;margin-left:6px;vertical-align:1px}
.copy-mini:hover{border-color:var(--brand);color:var(--brand-d);background:var(--brand-soft)}
.pr-copy{font-size:11px;font-weight:400;opacity:.9;margin-left:8px;letter-spacing:0}
/* v0.11.32 XTransfer 回调地址条 */
.xt-url{display:flex;align-items:center;flex-wrap:wrap;gap:6px;background:var(--page-bg);border:1px dashed var(--bd);
  border-radius:10px;padding:10px 14px;font-family:ui-monospace,Consolas,monospace;font-size:13.5px;color:var(--brand-d);font-weight:600}
/* v0.11.26 确认态正式绿条（Leo 圈定：要正式一些） */
.accept-done{display:flex;align-items:center;gap:10px;background:#EAF7EE;border:1px solid rgba(46,160,90,.4);
  border-radius:10px;padding:11px 14px;color:#1E7A3C;font-weight:600;font-size:13.5px}
.accept-done .ad-ico{flex:none;width:26px;height:26px;border-radius:50%;background:#2EA05A;color:#fff;
  display:flex;align-items:center;justify-content:center;font-weight:800;font-size:14px}
/* v0.11.7 表格合并列副行（Leo 定版客户表重排版） */
.cell-sub{font-size:11.5px;color:var(--tx-mut);margin-top:2px;line-height:1.3}
/* v0.11.8 角色列与电话列间距（Leo 圈定：太近了）——选择器须压过 .buyers-page .qq-tbl td */
.buyers-page .qq-tbl td:nth-child(4){padding-right:20px}
/* v0.10.18 不生产调式定价行灰显禁用（Leo 定版） */
.sp-row.off{opacity:.55}
.sp-row.off .rate-in{background:var(--page-bg);cursor:not-allowed}
/* v0.10.24 颜色弹窗重设计（Leo 定版）：上端大图区宽≈弹窗宽，点击即换图 */
.color-modal{width:480px;max-width:92vw;padding:18px}
.color-hero{position:relative;width:100%;aspect-ratio:1/1;border-radius:14px;overflow:hidden;background:var(--page-bg);cursor:pointer;border:1px solid var(--bd)}
.color-hero img{width:100%;height:100%;object-fit:cover;display:block}
.color-hero.empty{border:1.5px dashed var(--bd-strong);display:flex;align-items:center;justify-content:center}
.color-hero.empty:hover{border-color:var(--brand);background:var(--brand-soft)}
.color-hero-empty{display:flex;flex-direction:column;align-items:center;gap:8px;color:var(--tx-mut);font-size:14px}
.color-hero-empty .che-ico{font-size:44px;line-height:1}
.color-hero-mask{position:absolute;left:0;right:0;bottom:0;padding:10px;text-align:center;background:rgba(20,24,30,.55);color:#fff;font-size:13px;opacity:0;transition:opacity .15s}
.color-hero:hover .color-hero-mask{opacity:1}
/* v0.10.10 订货内容列式网格（Leo 定版：表头+八列对齐，赫兹下拉）
   v0.10.11 列宽按内容调优（Leo 定版）：调式列最宽（调式名最长），分类/材料收窄，颜色列给下拉让位 */
.ord-wrap{}
.ord-grid{display:grid;grid-template-columns:130px 115px 200px 88px 115px 180px 72px 116px 26px;gap:10px;align-items:center;width:1112px}
.ord-grid select{width:100%;min-width:0}
.ord-head{font-size:12px;color:var(--hint);font-weight:600;padding:0 2px 8px;border-bottom:1px solid var(--bd);margin-bottom:10px}
.ord-c{text-align:center}
.ord-del{text-align:center;font-size:14px;line-height:34px}
/* v0.10.11 颜色下拉选择器 + hover 放大图（Leo 定版） */
.cpick{position:relative;min-width:0}
.cpick-btn{display:flex;align-items:center;gap:6px;width:100%;height:34px;padding:0 8px;border:1px solid var(--bd);border-radius:8px;background:var(--card-bg,#fff);cursor:pointer;font-size:13px;text-align:left;color:inherit}
.cpick-btn:disabled{opacity:.55;cursor:not-allowed}
.cpick-btn:hover:not(:disabled){border-color:var(--brand)}
.cpick-nm{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cpick-ph{flex:1;color:var(--hint)}
.cpick-arrow{color:var(--hint);font-size:11px}
.cpick-panel{position:absolute;top:calc(100% + 4px);left:0;right:0;max-height:264px;overflow-y:auto;background:var(--card-bg,#fff);border:1px solid var(--bd);border-radius:10px;box-shadow:0 8px 24px rgba(30,50,90,.14);z-index:80;padding:4px}
.cpick-item{position:relative;display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:8px;cursor:pointer;font-size:13px}
.cpick-item:hover{background:var(--brand-soft)}
.cpick-item.on{background:var(--brand-soft);font-weight:600}
.cpick-item-nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cpick-cur{position:relative;display:inline-flex}
.cpick-zoom{display:none;position:absolute;right:calc(100% + 10px);top:50%;transform:translateY(-50%);z-index:90;background:#fff;padding:6px;border-radius:12px;box-shadow:0 10px 30px rgba(30,50,90,.22);border:1px solid var(--bd)}
.cpick-zoom img{width:192px;height:192px;object-fit:cover;border-radius:8px;display:block}
.cpick-zoom.up{right:auto;left:0;top:auto;bottom:calc(100% + 10px);transform:none}
.cpick-cur:hover .cpick-zoom{display:block}
/* v0.10.15 面板项放大预览：组件根部渲染（面板 overflow-y 滚动会裁剪内嵌浮层——一轴非 visible 时另一轴也按 auto 裁） */
.cpick-zoom-out{position:absolute;right:calc(100% + 10px);top:0;z-index:95;background:#fff;padding:6px;border-radius:12px;box-shadow:0 10px 30px rgba(30,50,90,.22);border:1px solid var(--bd);pointer-events:none}
.cpick-zoom-out img{width:192px;height:192px;object-fit:cover;border-radius:8px;display:block}
.note-line{font-size:13px;color:var(--tx-mut);letter-spacing:.5px}
.row-price{margin-top:6px;font-size:13.5px}
.row-price b{color:var(--brand-d)}
.sum-row{display:flex;justify-content:space-between;padding:6px 0;font-size:14px}
.sum-row b{font-variant-numeric:tabular-nums}
.sum-row.grand{border-top:2px solid var(--bd-strong);margin-top:6px;padding-top:10px;font-size:17px;font-weight:700}
.sum-row.grand b{color:var(--brand-d)}
/* 定价中心 */
.mode-toggle{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:6px;max-width:680px}
.mode-btn{border:1.5px solid var(--bd-strong);border-radius:12px;background:var(--card-bg);padding:14px 16px;cursor:pointer;text-align:left;transition:all .15s;display:flex;flex-direction:column;gap:4px}
.mode-btn b{font-size:15px;color:var(--tx)}
.mode-btn .hint{font-size:12px}
.mode-btn.on{border-color:var(--brand);background:var(--brand-l);box-shadow:0 0 0 1px var(--brand) inset}
.mode-btn.on b{color:var(--brand-d)}
/* 音符定价：一组音一张卡，网格并排 */
.oct-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}
.oct-card{padding:14px 16px}
.oct-t{font-weight:700;font-size:13px;color:var(--tx-mut);letter-spacing:1px;padding-bottom:8px;border-bottom:1px solid var(--bd);margin-bottom:6px}
.oct-note{display:flex;align-items:center;gap:8px;padding:3px 0;font-size:12.5px}
.oct-name{min-width:82px;font-weight:600}
.oct-freq{flex:1;font-size:11px}
.oct-input{display:flex;align-items:center;gap:5px}
.oct-input input{width:74px;border:1px solid var(--bd-strong);border-radius:7px;padding:4px 7px;font-size:12.5px;background:var(--card-bg);color:var(--tx);text-align:right}
.oct-input input:focus{border-color:var(--brand);outline:none}

/* 运费终版：国际运价表/方案/自动保存 */
.save-state{font-size:12.5px;color:var(--green);font-weight:600}
.rate-tbl{width:100%;border-collapse:collapse;font-size:13px}
.note-bar{margin:12px 0 0;font-size:13px;font-weight:600;color:var(--amber);background:var(--amber-l);border-left:3px solid var(--amber);border-radius:8px;padding:9px 12px}
.rate-tbl th{padding:6px 8px;text-align:center;font-size:12px;color:var(--tx-faint);font-weight:600}
.rate-tbl td{padding:5px 6px;text-align:center;border-top:1px dashed var(--bd)}
.rate-tbl td:first-child{text-align:left}
.rate-in{width:96px;padding:5px 7px;border:1px solid var(--bd-strong);border-radius:7px;background:var(--card-bg);color:var(--tx);font-size:13px;text-align:right}
.rate-in:focus{border-color:var(--brand);outline:none}
.rate-in::placeholder{color:var(--tx-faint);opacity:.55}   /* 未填价=￥ 0.00 虚显（Leo 2026-09-13 定版） */
.unit-sfx{font-size:11px;color:var(--tx-faint);margin-left:6px}   /* 运价格后「 / 公斤」单位后缀（斜杠前后空格） */
.trial-val{color:var(--brand-d);font-weight:700}   /* 第四步 运费计算：总价格（Leo 2026-09-13） */
/* 员工管理卡片网格（Leo 2026-09-13 定版）：桌面 3~4 列 / 平板 2 列 / 手机 1 列 */
.emp-grid{display:grid;gap:16px;grid-template-columns:repeat(4,1fr)}
@media (max-width:1500px){.emp-grid{grid-template-columns:repeat(3,1fr)}}
@media (max-width:1100px){.emp-grid{grid-template-columns:repeat(2,1fr)}}
@media (max-width:640px){.emp-grid{grid-template-columns:1fr}}
.emp-card{position:relative;background:var(--card-bg);border:1px solid var(--bd);border-radius:14px;overflow:hidden;box-shadow:var(--card-shadow);transition:transform .16s,box-shadow .16s}
.emp-card:hover{transform:translateY(-3px);box-shadow:0 10px 26px rgba(15,35,75,.16)}
.emp-card.off{opacity:.55}
.emp-photo{aspect-ratio:3/4;background:var(--page-bg);overflow:hidden}   /* Leo 2026-09-14 定版：照片统一竖版 3:4，object-fit:cover 不变形 */
.emp-photo img{width:100%;height:100%;object-fit:cover;display:block}
.emp-acts{position:absolute;top:8px;right:8px;display:flex;gap:6px;z-index:2}
.emp-act{width:30px;height:30px;border-radius:9px;border:1px solid var(--bd-strong);background:var(--card-bg);color:var(--tx-mut);cursor:pointer;font-size:14px;line-height:1;display:flex;align-items:center;justify-content:center;opacity:.92;transition:all .12s;padding:0}
.emp-act:hover{opacity:1;border-color:var(--brand);color:var(--brand);transform:scale(1.08)}
.emp-act.danger:hover{border-color:var(--red);color:var(--red)}
/* .emp-ceo-lock 已随 v0.9.123 移除（Leo 要求卡片不再显示 🔒 图标，接口层 CEO 保护不变） */
/* 员工照片上传组件（v0.9.124 Leo 定版）：预览当前/默认头像 + 上传按钮 */
.photo-pick{display:flex;align-items:center;gap:12px}
.photo-prev{width:64px;height:64px;object-fit:cover;border-radius:12px;border:1px solid var(--line,#dde3ec);background:#f3f5f9;flex:none}
/* 员工编辑弹窗·横版布局（Leo 2026-09-17 定版 v0.9.163）：左照片右表单。
   照片通高封面（随表单高度自适应拉伸），按钮浮右下、说明胶囊浮左上 */
.modal.land{width:840px;max-width:94vw}
.emp-layout{display:flex;gap:18px;align-items:stretch}
.emp-form{flex:1;min-width:0}
.photo-hero{position:relative;flex:0 0 300px;min-height:400px;
  border-radius:14px;overflow:hidden;border:1px solid var(--line,#dde3ec);background:#f3f5f9}
.photo-hero img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 22%;display:block}
/* 弹窗全局兜底：极端矮窗才允许内部滚动 */
.modal{max-height:94vh;overflow-y:auto}
.photo-hero-ops{position:absolute;right:10px;bottom:10px;display:flex;gap:6px}
.photo-hero-ops .btn{box-shadow:0 3px 12px rgba(0,0,0,.28)}
.photo-hero-hint{position:absolute;left:10px;top:10px;font-size:11.5px;color:#fff;
  text-shadow:0 1px 4px rgba(0,0,0,.55);background:rgba(0,0,0,.28);padding:2px 8px;border-radius:999px}
/* 窄屏回退竖版（照片在上通栏） */
@media (max-width:760px){
  .emp-layout{flex-direction:column}
  .photo-hero{flex:none;width:100%;min-height:0;height:200px}
}
.photo-ops{display:flex;flex-direction:column;gap:6px}
.acct-sub{font-weight:600;font-size:13px;margin:0 0 8px;color:var(--ink,#233)}   /* 账号设置·方式小标题（v0.9.127） */
/* 锁屏密码解锁（v0.9.132） */
.lock-pwd{width:220px;text-align:center;padding:9px 12px;border:1.5px solid var(--line,#dde3ec);border-radius:10px;font-size:14px;margin-bottom:10px;outline:none}
.lock-pwd:focus{border-color:var(--brand,#B8912F)}
.lock-err{color:#C0392B;font-size:12.5px;margin:-4px 0 8px}
/* 密码框眼睛切换（v0.9.134 Leo 定版）：SVG 眼/闭眼图标，右置内嵌
   v0.9.135 修订：掩码改 CSS 圆点（-webkit-text-security:disc，Chromium/Edge/WebView2 全支持），
   输入框恒为 type=text——浏览器不再识别为密码框，**不再弹「记住密码」、不自动填充**（Leo 2026-09-17 定版） */
.pwd-masked{-webkit-text-security:disc !important}
.pwd-eye{position:relative;display:block}
.pwd-eye input{width:100%;padding-right:36px}
.pwd-eye-btn{position:absolute;right:9px;top:50%;transform:translateY(-50%);width:20px;height:20px;cursor:pointer;opacity:.45;user-select:none;background-repeat:no-repeat;background-position:center;background-size:18px;transition:opacity .15s}
.pwd-eye-btn:hover{opacity:.95}
.pwd-eye-btn{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23666' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/svg%3E")}
.pwd-eye-btn.on{opacity:.85;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23333' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24'/%3E%3Cline x1='1' y1='1' x2='23' y2='23'/%3E%3C/svg%3E")}
.lock-pwd-wrap{position:relative;display:inline-block}
.lock-pwd-wrap .lock-pwd{margin-bottom:10px;padding-right:38px}
.lock-pwd-wrap .pwd-eye-btn{top:calc(50% - 5px)}
/* 职务分类 tab（Leo 2026-09-16）：自定义分类带 ✎✕ 操作、尾部 ＋ 新增 */
.cat-tab{display:inline-flex;align-items:center;gap:3px}
.cat-op{font-style:normal;font-size:11px;opacity:.55;cursor:pointer;padding:1px 3px;border-radius:5px;line-height:1}
.cat-op:hover{opacity:1;background:var(--brand-l);color:var(--brand-d)}
.cat-op.danger:hover{color:var(--red)}
.cat-add{font-weight:700;min-width:34px}
.emp-body{padding:12px 14px 14px}
.emp-name{display:flex;align-items:center;gap:8px;font-size:16px;font-weight:700;color:var(--tx)}
.emp-code{font-size:11px;font-weight:600;background:var(--brand-l);color:var(--brand-d);border-radius:6px;padding:1px 7px}
.emp-pos{margin-top:3px;font-size:13px;color:var(--brand-d);font-weight:600}
.emp-meta{display:flex;gap:6px;margin-top:8px}
.emp-contact{margin-top:10px;padding-top:10px;border-top:1px dashed var(--bd);font-size:12.5px;color:var(--tx-mut);display:flex;flex-direction:column;gap:4px;min-height:26px}
.emp-c-row{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* 国内快递方案自研下拉（WebView2 原生 select 弹层不渲染，不可用原生）
   注意：弹层样式限定在 .scheme-picker/.mini-picker 内——与价格页右栏 .sp-list 同名，不外溢（v0.9.49 修价格页塌陷） */
.scheme-picker{position:relative;flex:1;min-width:280px;max-width:560px}
.sp-btn{width:100%;display:flex;align-items:center;gap:10px;padding:7px 12px;border:1px solid var(--bd-strong);border-radius:8px;background:var(--card-bg);color:var(--tx);font-size:13px;cursor:pointer;text-align:left}
.sp-btn .sp-rate{color:var(--tx-mut);font-size:12px}
.sp-arrow{margin-left:auto;color:var(--tx-faint)}
.scheme-picker .sp-list, .mini-picker .sp-list{position:absolute;z-index:200;top:calc(100% + 4px);left:0;right:0;background:var(--card-bg);border:1px solid var(--bd-strong);border-radius:8px;box-shadow:var(--card-shadow);max-height:260px;overflow:auto}
.scheme-picker .sp-item, .mini-picker .sp-item{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 12px;font-size:13px}
.scheme-picker .sp-item:hover, .mini-picker .sp-item:hover{background:var(--row-hover)}
.scheme-picker .sp-item.cur, .mini-picker .sp-item.cur{background:var(--brand-l)}
.sp-item-bd{flex:1;cursor:pointer}
.sp-del{color:var(--tx-faint);cursor:pointer;padding:0 4px}
.sp-del:hover{color:var(--red)}
/* 抛/实重判断 + 发货→收货运费行 */
.fstep-judge{margin-top:12px;font-size:13px;color:var(--tx-mut);background:var(--page-bg);border:1px dashed var(--bd-strong);border-radius:8px;padding:10px 12px;line-height:1.9}
.fstep-judge b{color:var(--tx)}
.fstep-judge .money{color:var(--brand-d);font-weight:700}
/* 结构化地址输入（省市区下拉+详细+定位） */
.cn-addr{display:flex;gap:8px;align-items:center;flex:1;flex-wrap:wrap;min-width:0}
.mini-picker{position:relative;min-width:108px}
/* 运费表国际运输系数下拉（Leo 2026-09-14：紧凑版，嵌表格单元格） */
/* 运费表方式分组竖直分割线（Leo 2026-09-14：细线、跟随主题边色，深浅主题均协调） */
.rate-tbl .m-sep{border-left:1px solid var(--bd)}
.rate-tbl td.m-sep{padding-left:10px}
.factor-th{font-size:11px}
.factor-td{padding:4px 4px}
.factor-pick{min-width:78px;display:inline-block}
.factor-pick .mp-btn{padding:4px 8px;font-size:12.5px;border-radius:7px}
.factor-pick .mp-list{right:0;left:auto;min-width:100%}
/* 运费三级定价子面板（Leo 2026-09-14 原型C） */
.sub-open{color:var(--brand);cursor:pointer;font-size:12.5px;white-space:nowrap}
.sub-open:hover{text-decoration:underline}
.subpanel-td{padding:0 !important;border-top:none !important}
.subpanel{margin:0 10px 12px;border:1px solid var(--bd);border-radius:10px;background:var(--page-bg);padding:12px 14px}
.sub-rules{font-size:12.5px;color:var(--tx-mut);margin-bottom:10px;line-height:1.7}
.sub-rules b{color:var(--tx)}
.sub-tbl{background:var(--card-bg);border-radius:8px}   /* 不得加 overflow:hidden——会裁掉系数下拉弹层（v0.9.64 修） */
.subrow-l2 td{background:var(--brand-l)}
.subrow-l3 td{background:var(--card-bg)}
.sub-name{text-align:left !important;padding-left:14px !important;font-size:12.5px;white-space:nowrap}
.sub-acts{white-space:nowrap;font-size:12.5px}
.sub-acts a{color:var(--brand);cursor:pointer;margin:0 5px}
.sub-acts a:hover{text-decoration:underline}
.sub-acts .sub-del{color:var(--tx-faint)}
.sub-acts .sub-del:hover{color:var(--red)}
.sub-add td{padding:8px 14px !important;text-align:left !important}
.sub-name-in{border:1px solid var(--bd-strong);border-radius:7px;padding:5px 10px;font-size:12.5px;width:220px;background:var(--card-bg);color:var(--tx);margin-right:8px}
.sub-actions{display:flex;align-items:center;gap:8px;margin-top:10px;flex-wrap:wrap}
.state-pick{min-width:230px}
.pv-box{margin-top:12px;border-top:1px dashed var(--bd);padding-top:10px;display:flex;flex-direction:column;gap:6px}
.pv-line{font-size:13px;display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.pv-m{display:inline-block;width:36px;color:var(--tx-mut);font-weight:600}
.pv-src{color:var(--tx-faint);font-size:12px}
/* 单价测试横向四列（Leo 2026-09-14 21:39：带标头+竖线分割） */
.pv-table{display:flex;margin-top:12px;border:1px solid var(--bd);border-radius:10px;overflow:hidden;background:var(--card-bg)}
.pv-col{flex:1;min-width:0;padding:10px 14px;display:flex;flex-direction:column;gap:5px}
.pv-col+.pv-col{border-left:1px solid var(--bd)}
.pv-head{font-weight:700;font-size:13px;color:var(--tx-mut);border-bottom:1px dashed var(--bd);padding-bottom:6px}
.pv-price{font-size:14.5px;font-weight:600}
.pv-factor{font-size:12px;color:var(--tx-mut);font-weight:400}
.pv-src2{font-size:11.5px;color:var(--tx-faint);line-height:1.5;word-break:break-all}
/* 州/省下拉弹层加宽（选项中英对照不截断、不出横向滚动条） */
.state-pick .mp-list{max-width:340px}
/* 热度构成弹窗 + 热度标签可点（Leo 2026-09-14 热度采集） */
.hot-click{cursor:pointer}
.hot-click:hover{filter:brightness(1.12)}
.heat-row{display:flex;align-items:baseline;gap:10px;padding:7px 2px;border-bottom:1px dashed var(--bd)}
.heat-plat{width:86px;color:var(--tx-mut);font-size:13px}
.heat-val{font-size:14px}
.heat-row .hint{margin-left:auto;font-size:11.5px}
.heat-total{display:flex;align-items:baseline;justify-content:space-between;padding:10px 2px 0;font-size:14px}
.heat-total b{font-size:18px;color:var(--brand-d)}
.mp-btn{width:100%;display:flex;justify-content:space-between;align-items:center;gap:6px;padding:7px 10px;border:1px solid var(--bd-strong);border-radius:8px;background:var(--card-bg);color:var(--tx);font-size:13px;cursor:pointer}
.mp-list{max-height:280px;min-width:100%;width:max-content;max-width:240px}
.mp-list .sp-item{white-space:nowrap}   /* 下拉项不折行（Leo 2026-09-13） */
/* 地图选点弹窗（地址输入用） */
.map-mask{position:fixed;inset:0;background:rgba(6,12,24,.55);z-index:1000;display:flex;align-items:center;justify-content:center;padding:20px}
.map-panel{width:760px;max-width:96vw;background:var(--card-bg);border-radius:14px;box-shadow:0 12px 40px rgba(0,0,0,.35);overflow:hidden}
.map-head{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--bd)}
.map-head .hint{flex:1}
.map-x{cursor:pointer;color:var(--tx-faint);padding:2px 6px}
.map-x:hover{color:var(--red)}
.map-body{width:100%;height:420px}
.map-foot{display:flex;align-items:center;gap:10px;padding:10px 16px;border-top:1px solid var(--bd)}
/* 地图弹窗搜索框与结果列表 */
.map-search{display:flex;gap:8px;padding:10px 16px;border-bottom:1px solid var(--bd)}
.map-results{max-height:160px;overflow:auto;border-bottom:1px solid var(--bd)}
.map-result{padding:8px 16px;cursor:pointer;display:flex;align-items:baseline;gap:10px;font-size:13px}
.map-result:hover{background:var(--row-hover)}
.map-result .hint{font-size:12px}
/* 分区自动价提示行 */
.zone-auto{font-size:12.5px;color:var(--teal);background:var(--teal-l,var(--brand-l));border-radius:7px;padding:5px 10px}
.zone-auto b{color:var(--teal)}
/* 服务配置页：登录入口链接卡 */
.login-links{display:flex;gap:10px;flex-wrap:wrap;margin-top:4px}
.login-link{display:flex;flex-direction:column;gap:2px;padding:10px 14px;border:1px solid var(--bd-strong);border-radius:10px;min-width:150px;cursor:pointer;text-decoration:none;color:var(--tx);background:var(--page-bg);transition:border-color .15s,background .15s}
.login-link:hover{border-color:var(--brand);background:var(--brand-l)}
.login-link b{font-size:13.5px}
.login-link span{font-size:11.5px;color:var(--tx-faint)}
.scheme-list{display:flex;flex-direction:column;gap:8px;margin-bottom:4px}
.scheme-row{display:flex;align-items:center;gap:14px;padding:10px 14px;border:1.5px solid var(--bd);border-radius:10px;font-size:13px;transition:all .12s}
.scheme-row.on{border-color:var(--brand);background:var(--brand-l)}
.scheme-pick{display:flex;align-items:center;gap:8px;cursor:pointer;color:var(--tx)}
.scheme-pick input{cursor:pointer}
.scheme-rate{margin-left:auto;color:var(--tx-mut)}
.fstep{display:flex;gap:14px;align-items:flex-start;padding:16px 20px}
.fstep-no{width:30px;height:30px;flex-shrink:0;border-radius:50%;background:var(--brand);color:#fff;font-weight:700;font-size:14px;display:flex;align-items:center;justify-content:center;margin-top:2px}
.fstep-bd{flex:1;min-width:0}
@media (max-width:1100px){   /* 窄屏才启用卡内横向滚动（桌面常开会破坏下拉弹层——v0.9.64 修系数下拉被裁） */
  .fstep-bd{overflow-x:auto}
  .fstep-bd .rate-tbl{min-width:1060px}              /* 十列运费表保底可读宽度 */
}
.fstep-t{font-weight:700;font-size:16.5px;margin-bottom:16px;letter-spacing:.2px}
.fstep-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px;font-size:13px;color:var(--tx)}
.fstep-row:last-child{margin-bottom:0}
.fr-in{width:110px;padding:5px 9px;border:1px solid var(--bd-strong);border-radius:7px;background:var(--card-bg);color:var(--tx);font-size:13px;text-align:right}
.fr-in.sm{width:76px}
.fr-in.lg{width:150px;text-align:left}
.fr-in.xl{flex:1;min-width:220px;text-align:left}
.fr-sel{min-width:170px;padding:5px 9px;border:1px solid var(--bd-strong);border-radius:7px;background:var(--card-bg);color:var(--tx);font-size:13px}
.fr-in:focus{border-color:var(--brand);outline:none}
.fstep-result{font-size:13px;color:var(--tx-mut);margin-top:6px;line-height:1.8}
.fstep-result b{color:var(--tx)}
.fstep-sum{border:1.5px solid var(--brand)}
.sum-hl{color:var(--brand-d);font-size:15.5px}
/* 按调式定价：左分类栏 + 右调式列表 */
.sp-cols{display:flex;gap:14px;align-items:flex-start}
.sp-fams{width:200px;flex-shrink:0;padding:8px}  /* 自然高度，不出栏内滚动条 */
.sp-fams a{display:flex;align-items:flex-start;justify-content:space-between;gap:6px;padding:7px 10px;border-radius:8px;color:var(--tx-mut);font-size:12.5px;line-height:1.35;cursor:pointer;margin-bottom:2px;white-space:normal;word-break:break-word}
.sp-fams a:hover{background:var(--row-hover)}
.sp-fams a.on{background:var(--brand-l);color:var(--brand-d);font-weight:600}
.sp-fam-n{font-size:10.5px;background:var(--bd);border-radius:999px;padding:1px 7px;color:var(--tx-faint);flex-shrink:0;margin-top:1px}
.sp-fams a.on .sp-fam-n{background:var(--brand);color:#fff}
.sp-list{flex:1;padding:10px 18px}
.sp-row{display:flex;align-items:center;gap:12px;padding:7px 0;border-bottom:1px dashed var(--bd)}
.sp-row:last-child{border-bottom:none}
.sp-name{width:150px;flex-shrink:0;font-weight:600;font-size:13.5px}
.sp-notes{flex:1;min-width:0;font-size:12.5px;color:var(--tx-mut);letter-spacing:.3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.price-fam{margin-top:14px}
.price-fam-t{font-weight:700;font-size:13.5px;color:var(--tx-mut);letter-spacing:1px;padding:6px 0;border-bottom:1px solid var(--bd);margin-bottom:4px}
.price-row{display:flex;align-items:center;gap:10px;padding:5px 0;border-bottom:1px dashed var(--bd)}
.price-row:last-child{border-bottom:none}
.price-name{flex:1;font-size:13.5px;font-weight:600}
.price-input{width:110px;border:1px solid var(--bd-strong);border-radius:8px;padding:5px 8px;font-size:13.5px;background:var(--card-bg);color:var(--tx);text-align:right}
.price-input:focus{border-color:var(--brand);outline:none}
/* 我的信息页：居中大保存按钮 */
.save-bar{display:flex;justify-content:center;margin:26px 0 10px}
.btn-xl{padding:13px 64px;font-size:16.5px;font-weight:600;border-radius:13px;letter-spacing:2px;box-shadow:var(--btn-shadow);transition:transform .15s, box-shadow .15s}
.btn-xl:hover:not(:disabled){transform:translateY(-1px)}
.btn-xl:active:not(:disabled){transform:translateY(0)}
/* 修改密码页 */
.pwd-card{max-width:520px}
.pwd-email{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:600;padding:8px 0}
.pwd-ok{text-align:center;padding:32px 12px}
.pwd-ok h3{margin:10px 0 4px}
.field input,.field select,.field textarea{width:100%;border:1px solid var(--bd);border-radius:8px;padding:7px 10px;font-size:14px;background:var(--card-bg);color:var(--tx)}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--brand);outline:none}
.btn{display:inline-block;border:none;border-radius:8px;padding:8px 16px;font-size:13px;background:var(--brand);color:#fff;box-shadow:var(--btn-shadow);transition:transform .1s,filter .15s}
.btn:hover{filter:brightness(1.06)}
.btn:active{transform:translateY(1px)}
.btn.sec{background:var(--card-bg);color:var(--brand-d);border:1px solid var(--brand);box-shadow:none}
.btn.ghost{background:var(--card-bg);color:var(--tx-mut);border:1px solid var(--bd);box-shadow:none}
.btn.danger{background:var(--red)}
.btn.sm{padding:3px 10px;font-size:12px;border-radius:6px}
.btn.block{width:100%}
.btn:disabled{opacity:.5;cursor:default}

.page-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;gap:10px;flex-wrap:wrap}
.page-h h2{font-size:17px;font-weight:600;color:var(--tx)}
.grid{display:grid;gap:12px}
.cards{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
.card{background:var(--card-bg);border:1px solid var(--bd);border-radius:12px;padding:14px;box-shadow:var(--card-shadow)}
.stat .num{font-size:24px;font-weight:600;color:var(--brand-d)}
.stat .lbl{font-size:12px;color:var(--tx-mut)}
.card h3{font-size:14.5px;font-weight:700;margin-bottom:14px;color:var(--tx)}

table.tbl{width:100%;border-collapse:collapse;background:var(--card-bg);border:1px solid var(--bd);border-radius:12px;overflow:hidden}
.tbl th{background:var(--thead-bg);text-align:left;font-size:12px;color:var(--tx-mut);font-weight:500;padding:8px 10px;border-bottom:1px solid var(--bd);white-space:nowrap}
.tbl td{padding:9px 10px;border-bottom:1px solid var(--bd);font-size:13px;vertical-align:top;color:var(--tx)}
.tbl tbody tr:nth-child(even) td{background:var(--thead-bg)}      /* 斑马纹防串行 */
/* v0.21.03（Leo：「全栈不要做成鼠标移动上去变颜色」）：删除 .tbl 行 hover 高亮（原覆盖斑马纹），隔行色恒定不随鼠标变 */
.tbl tr:last-child td{border-bottom:none}
.tbl tr.clickable{cursor:pointer}

.chip{display:inline-block;padding:1px 9px;border-radius:20px;font-size:12px;white-space:nowrap}
.st-pending{background:var(--amber-l);color:var(--amber)}
.st-confirmed{background:var(--brand-l);color:var(--brand-d)}
.st-scheduled{background:var(--purple-l);color:var(--purple)}
.st-producing{background:var(--teal-l);color:var(--teal-d)}
.st-ready{background:var(--green-l);color:var(--green)}
.st-shipped{background:var(--bd);color:var(--tx-mut)}
.st-void{background:var(--red-l);color:var(--red-d)}

.tl{list-style:none;margin:6px 0}
.tl li{position:relative;padding:0 0 16px 24px;font-size:13px;color:var(--tx)}
.tl li::before{content:"";position:absolute;left:5px;top:5px;width:9px;height:9px;border-radius:50%;background:var(--bd-strong)}
.tl li::after{content:"";position:absolute;left:9px;top:15px;bottom:-2px;width:1px;background:var(--bd)}
.tl li:last-child::after{display:none}
.tl li.done::before{background:var(--teal)}
.tl li.now::before{background:var(--brand);box-shadow:0 0 0 3px var(--brand-l)}
.tl li .tt{color:var(--tx-faint);font-size:11px}

.sched{display:grid;grid-template-columns:100px repeat(5,1fr);gap:5px;min-width:720px}
.sched.sched7{grid-template-columns:90px repeat(7,1fr);min-width:980px}
.sched .h.wknd{background:var(--brand-soft);color:var(--tx-faint)}
.sched .cell.wknd{background:var(--brand-soft);border-style:dotted}
.sched .h{font-size:12px;color:var(--tx-mut);text-align:center;padding:5px 0;background:var(--thead-bg);border-radius:6px}
.sched .h.today{background:var(--brand-l);color:var(--brand-d);font-weight:600}
.sched .proc{font-size:12px;font-weight:500;background:var(--brand-l);color:var(--brand-d);border-radius:6px;display:flex;align-items:center;justify-content:center;padding:6px 3px;text-align:center}
.sched .cell{background:var(--card-bg);border:1px dashed var(--bd);border-radius:6px;min-height:58px;padding:3px}
.task{background:var(--teal-l);border-left:3px solid var(--teal);border-radius:4px;padding:2px 6px;font-size:11px;margin-bottom:3px;line-height:1.4;position:relative;color:var(--tx)}
.task.done{opacity:.55}
.task.done .tx{text-decoration:line-through}
/* v0.14.71 #2 工序推导落位（生产排产周视图补全）：虚线浅色只读 + 「推导」签 */
.task.derived{background:transparent;border-left:3px dashed var(--bd);opacity:.78;cursor:default}
.task.derived .dv-tag{display:inline-block;margin-right:3px;padding:0 4px;border-radius:4px;background:var(--brand-soft);color:var(--brand-d);font-size:10px;font-weight:700;line-height:14px;vertical-align:1px}
.task b{display:block;font-size:11px}
.task .x{position:absolute;top:1px;right:4px;color:var(--tx-faint);cursor:pointer;font-size:12px}
.pool{display:flex;flex-wrap:wrap;gap:6px}
.pool .task{cursor:pointer;background:var(--amber-l);border-left-color:var(--amber)}

.form-2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.form-3{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.spec-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px}
.sum-row{display:flex;justify-content:space-between;font-size:13px;padding:2px 0;color:var(--tx)}
.sum-row.total{border-top:1px solid var(--bd);margin-top:6px;padding-top:8px;font-weight:600;color:var(--brand-d);font-size:15px}

.modal-mask{position:fixed;inset:0;background:rgba(10,14,20,.45);z-index:70;display:flex;align-items:flex-start;justify-content:center;padding:40px 16px;overflow:auto}
.modal{background:var(--card-bg);border:1px solid var(--bd);border-radius:14px;padding:20px;width:100%;max-width:520px;box-shadow:0 12px 40px rgba(0,0,0,.28);color:var(--tx)}
.modal h3{font-size:15px;margin-bottom:12px}
/* 全屏弹窗（地图等） */
.modal-full{max-width:none;width:96vw;height:92vh;display:flex;flex-direction:column;padding:16px 18px}
.modal-full .map-body{flex:1;min-height:0;border-radius:12px;overflow:hidden}
/* 分页栏 */
.pager{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px;margin-top:12px;padding-top:12px;border-top:1px solid var(--bd)}
.pager-size,.pager-nav{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.pg-btn{min-width:32px;height:30px;padding:0 8px;border:1px solid var(--bd-strong);border-radius:8px;background:var(--card-bg);color:var(--tx);font-size:12.5px;cursor:pointer;transition:all .15s}
.pg-btn:hover:not(:disabled){border-color:var(--brand);color:var(--brand)}
.pg-btn.on{background:var(--brand);border-color:var(--brand);color:#fff;font-weight:600}
.pg-btn:disabled{opacity:.35;cursor:default}
.pg-input{width:74px;height:30px;border:1px solid var(--bd-strong);border-radius:8px;padding:0 8px;font-size:12.5px;background:var(--card-bg);color:var(--tx)}
.pg-input:focus{outline:none;border-color:var(--brand)}

.filter-bar{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}
.filter-bar .f{padding:3px 12px;border-radius:20px;border:1px solid var(--bd);background:var(--card-bg);font-size:12px;color:var(--tx-mut);cursor:pointer}
.filter-bar .f.on{background:var(--brand);border-color:var(--brand);color:#fff}

.mtask{background:var(--card-bg);border:1px solid var(--bd);border-left:4px solid var(--teal);border-radius:8px;padding:10px 12px;margin-bottom:8px;color:var(--tx)}
.mtask .tt{font-weight:500;font-size:14px}
.mtask .spec{font-size:12px;color:var(--tx-mut);margin:2px 0 8px}
.mtask.done{opacity:.6;border-left-color:var(--tx-faint)}
.mtask.done .tt{text-decoration:line-through}
.day-head{font-size:13px;font-weight:600;color:var(--brand-d);margin:14px 0 6px;display:flex;justify-content:space-between}

.toast{position:fixed;left:50%;bottom:34px;transform:translateX(-50%);background:#2C2C2A;color:#fff;padding:8px 20px;border-radius:24px;font-size:13px;z-index:99;max-width:80vw;text-align:center}
/* ===== 警告提示统一版式（Leo 2026-09-17 定版 v0.9.151；v0.15.15 Leo 再圈太丑→轻量现代化）：
   白底细红边轻卡 + 小巧浅红圆徽 + 紧凑排版；居中偏上、弹入动画、点 ✕ 关闭；
   成功提示不变（底部小黑条）；新增警告一律走 $root.toast(msg, true)，禁止另造样式 ===== */
.toast.err{bottom:auto;top:38%;transform:translate(-50%,-50%);border:1px solid #F3D2CC;
  background:#fff;color:var(--tx);
  box-shadow:0 18px 50px rgba(176,58,46,.16),0 2px 8px rgba(30,60,120,.06);
  padding:0;border-radius:14px;font-size:13px;font-weight:500;max-width:min(440px,88vw);
  line-height:1.55;display:block;text-align:left;overflow:hidden;
  animation:toast-pop .22s cubic-bezier(.2,.9,.3,1.15)}
.toast-err-in{position:relative;display:flex;align-items:center;gap:12px;padding:14px 44px 14px 16px}
.toast-err-in::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3.5px;background:#E5533F;border-radius:3px 0 0 3px}
.toast-err-ico{flex:none;width:32px;height:32px;border-radius:50%;
  background:#FDECEA;color:#C2271B;font:800 17px/32px system-ui,-apple-system,sans-serif;text-align:center}
.toast-err-title{font-weight:700;font-size:13.5px;color:#B0271B;margin-bottom:2px;letter-spacing:.01em}
.toast-err-msg{color:var(--tx);font-size:13px;line-height:1.6;white-space:pre-line;word-break:break-word}
.toast-x{position:absolute;top:8px;right:8px;width:24px;height:24px;border:none;background:transparent;color:var(--tx);opacity:.45;cursor:pointer;font-size:12px;line-height:1;border-radius:6px;display:flex;align-items:center;justify-content:center}
.toast-x:hover{opacity:1;background:rgba(217,48,37,.10)}
@keyframes toast-pop{from{opacity:0;transform:translate(-50%,-50%) scale(.92)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}
/* 离开锁屏：全屏虚化 */
.lock-mask{position:fixed;inset:0;z-index:200;backdrop-filter:blur(16px) saturate(1.15);-webkit-backdrop-filter:blur(16px) saturate(1.15);background:rgba(110,120,140,.28);display:flex;align-items:center;justify-content:center}
.lock-card{background:var(--card-bg);border:1px solid var(--bd);border-radius:18px;padding:34px 46px;text-align:center;box-shadow:0 24px 80px rgba(0,0,0,.35);display:flex;flex-direction:column;align-items:center;gap:10px;min-width:300px}
.lock-ico{font-size:40px}
.lock-title{font-size:17px;font-weight:700;color:var(--tx)}
.lock-sub{font-size:12.5px;color:var(--tx-mut)}
.lock-dur{font-size:34px;font-weight:700;color:var(--brand);font-variant-numeric:tabular-nums;line-height:1.1}
.lock-user{font-size:12px;color:var(--tx-faint)}
.mut{color:var(--tx-mut)} .hint{color:var(--tx-faint);font-size:12px}
/* ===== 提示说明统一版式（Leo 2026-09-17 定版 v0.9.140）：全栈「提示类说明」一律 .tip ——
   品牌色浅底 + 左侧色条 + i 徽标，13px/1.7 正文，圆角卡片感；醒目大气、九套主题自适应。
   边界：成句的说明文字用 .tip；坐标/状态/占位等微注释仍用 .hint ===== */
/* v0.11.36 修复：改回 block 布局——flex 容器里 <br> 不换行（文本全变一排 flex 项），多行提示曾挤成一行；
   徽标改绝对定位，文本左 padding 42px 让位，<br> 多行清单恢复生效 */
.tip{display:block;position:relative;background:var(--brand-soft);
  border:1px solid var(--bd);border-left:4px solid var(--brand);
  border-radius:12px;padding:11px 14px 11px 42px;margin:0 0 14px;
  font-size:13px;line-height:1.7;color:var(--tx)}
/* v0.11.38：徽标 i 蓝圆 → 💡 灯泡（Leo 圈定换标志；提示卡语义=小贴士，灯泡更贴切；无底色更干净） */
.tip::before{content:"💡";position:absolute;left:12px;top:12px;width:20px;height:20px;
  font-size:16px;line-height:20px;text-align:center}
.tip b{color:var(--brand-d)}
/* 页面加载失败卡（v0.9.166）：替代静默空白，给重试入口 */
.load-err-card{max-width:480px;margin:64px auto;text-align:center;background:var(--card-bg,#fff);
  border:1px solid var(--line,#dde3ec);border-radius:16px;padding:38px 30px;box-shadow:0 10px 40px rgba(30,45,80,.08)}
.load-err-ico{width:52px;height:52px;border-radius:50%;margin:0 auto 14px;display:flex;align-items:center;justify-content:center;
  font-size:26px;font-weight:800;color:#fff;background:linear-gradient(135deg,#e74c3c,#c0392b);box-shadow:0 6px 18px rgba(231,76,60,.35)}
.load-err-t{margin:0 0 6px;font-weight:700;font-size:15.5px;color:var(--tx)}
/* 调式库·尺寸库切换 chips（v0.9.170） */
.size-chips{display:flex;gap:6px;flex-wrap:wrap;margin:-6px 0 12px}
/* 手碟颜色缩略图（v0.9.174） */
.color-thumb{width:64px;height:48px;object-fit:cover;border-radius:8px;border:1px solid var(--line,#dde3ec);display:block}
.color-thumb.lg{width:120px;height:90px}
.color-thumb-empty{display:flex;align-items:center;justify-content:center;color:var(--hint);font-size:12px;background:var(--page-bg)}
.color-dot{width:26px;height:26px;border-radius:6px;object-fit:cover;border:1px solid var(--line,#dde3ec);vertical-align:middle;margin-right:6px}
.color-dot-txt{display:inline-flex;align-items:center;justify-content:center;background:var(--page-bg);color:var(--hint);font-size:12px}
/* 手碟颜色管理页缩略图 hover 放大（v0.10.11） */
.cthumb{position:relative;display:inline-block}
.cthumb .cthumb-zoom{display:none;position:absolute;left:calc(100% + 10px);top:50%;transform:translateY(-50%);z-index:90;background:#fff;padding:6px;border-radius:12px;box-shadow:0 10px 30px rgba(30,50,90,.22);border:1px solid var(--bd)}
.cthumb .cthumb-zoom img{width:192px;height:192px;object-fit:cover;border-radius:8px;display:block}
.cthumb:hover .cthumb-zoom{display:block}
/* 订货页行内规格区（v0.9.174） */
.order-row-specs{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:8px 0 2px}
.order-row-specs .spec{display:inline-flex;align-items:center;gap:6px}
.spec-sel{min-width:150px}
.spec-colors{display:flex;flex-wrap:wrap;gap:6px}
.chip.sm{padding:3px 10px;font-size:12px}
/* 手碟材料选择（v0.9.141 美化 Leo 定版）：固定布局——名称 200px、操作 130px，四国牌号列**等宽**；
   牌号用等宽字体（牌号字符对齐感），行高略增更舒展 */
.mat-tbl{table-layout:fixed}
.mat-tbl .mat-name{width:200px}
.mat-tbl .mat-op{width:130px}
.mat-tbl td.mat-g, .mat-tbl th.mat-g{width:auto}   /* fixed 布局下未定宽列自动均分剩余宽度 */
.mat-tbl td.mat-g{font-family:ui-monospace,SFMono-Regular,Consolas,"Courier New",monospace;font-size:12.5px;letter-spacing:.2px}
.mat-tbl td.mat-g .hint{font-family:inherit}
.mat-tbl tbody td{padding-top:11px;padding-bottom:11px}
.mt8{margin-top:8px}.mt16{margin-top:16px}.mb8{margin-bottom:8px}.mb16{margin-bottom:16px}
.flex{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.right{margin-left:auto}
.two-col{display:grid;grid-template-columns:1fr 330px;gap:14px;align-items:start}
.two-col.oc-wide{grid-template-columns:1fr 400px}   /* v0.15.47（Leo 图12）：订单详情右栏加宽 */
/* v0.15.47（Leo 图9）：订单详情客户卡片美化 */
.cust-card h3{margin-bottom:10px}
.cc-head{display:flex;align-items:center;gap:12px;padding-bottom:12px;border-bottom:1px dashed var(--bd);margin-bottom:10px}
.cc-avatar{width:44px;height:44px;border-radius:13px;flex-shrink:0;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,var(--brand) 0%,var(--brand-d) 100%);color:#fff;font-size:19px;font-weight:700;
  box-shadow:0 3px 10px rgba(43,127,255,.28)}
.cc-title{display:flex;flex-direction:column;gap:2px;min-width:0}
.cc-title b{font-size:15.5px;color:var(--tx)}
.cc-code{font-size:11.5px;color:var(--brand-d);background:var(--brand-l);border-radius:6px;padding:1px 8px;align-self:flex-start;font-weight:600}
.cc-row{display:flex;align-items:flex-start;gap:9px;padding:4.5px 0;font-size:13px;color:var(--tx-mut)}
.cc-row i{font-style:normal;width:17px;flex-shrink:0;text-align:center}
.cc-row span{min-width:0;word-break:break-all}
.cc-mail{font-size:12.5px}
.bar{height:9px;background:var(--bd);border-radius:5px;overflow:hidden;flex:1}
.bar>div{height:100%;background:var(--brand)}
.bar>div.teal{background:var(--teal)}
@media(max-width:920px){.two-col{grid-template-columns:1fr}.form-2,.form-3{grid-template-columns:1fr}#main{padding:14px 10px 60px}}

/* 左侧竖排菜单（含分组） */
.shell{display:flex;align-items:flex-start;min-height:100vh}   /* 布局框架：左栏通高（Leo 2026-09-16） */
.main-col{flex:1;min-width:0;display:flex;flex-direction:column}   /* 右列：右上顶栏 + 右下内容 */
.content{flex:1;min-width:0;width:100%;padding:20px 18px 60px;max-width:calc(100vw - 200px);margin:0 auto}   /* width:100% 防列向 flex 下 margin:auto 导致按内容收缩（v0.9.118 修模拟中心竖排混乱） */
/* v0.9.169（Leo 定版）：侧栏锁高 100vh + 内部滚动——菜单再长也不撑高整页；
   短内容页（箱规/尺寸等）不再出现多余的整页滚动条，长菜单在侧栏内独立滚动 */
.sidemenu{width:248px;flex-shrink:0;background:var(--card-bg);height:100vh;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;padding:14px 14px 20px;position:sticky;top:0;transition:background .25s}  /* 通高左栏；v0.14.79 #3（Leo 定版）：删右边框硬线——背景色已够区分 */
.sidemenu a{display:block;padding:11px 16px;border-radius:10px;color:var(--tx-mut);font-size:14.5px;margin-bottom:4px;cursor:pointer;transition:background .12s,color .12s;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}  /* v0.9.49 字号 13.5→14.5 */
.sidemenu a:hover{background:var(--row-hover);color:var(--tx)}
.sidemenu a.on{background:var(--brand-l);color:var(--brand-d)}   /* v0.15.40（Leo 图1）：选中项也不加粗 */
.sidemenu .grp{margin:22px 4px 8px;padding-top:16px;border-top:1px solid var(--bd);font-size:13px;color:var(--tx-mut);letter-spacing:.5px;font-weight:400}  /* v0.9.49 组名加大+分隔线；v0.15.40 去加粗（Leo 图1） */
.sidemenu .grp.bare{margin-top:0;padding-top:0;border-top:none}   /* 组在菜单最顶部（上方无菜单项）才不留线（Leo 2026-09-13 定版，v0.9.85 修正：散项下方的组一律有线+间距） */
/* v0.14.66 Leo 定版：组标题取消——栏目直排侧栏，组间仅留细分隔线（原 .grp/.grp-tg 组名行与折叠交互退役） */
.sidemenu .grp-sep{display:none}   /* v0.16.15（Leo 图1「菜单间距调整均匀」）：组分隔块下线——所有菜单项统一 4px 间距，完全均匀 */
.sidemenu .grp-sep.bare{margin-top:0;border-top:none}
/* 独立栏目项（v0.14.60 Leo 定版：取消二级菜单形式）：侧栏栏目=单项直链，栏内页面激活时整项高亮 */
.sidemenu a.sub-p{font-weight:400}   /* v0.15.40（Leo 图1）：栏目父项也不加粗 */
/* 栏目页面导航条（v0.14.68 Leo 提档：整体轨道式分段控件）——
   一条圆角轨道托底（卡片底+细边+浅影），按钮内嵌其中；当前页=品牌三段金渐变+顶部高光+金色外辉，悬停淡金晕染 */
.subnav-bar{display:flex;flex-direction:column;gap:6px;margin-bottom:18px;
  padding:6px;border-radius:16px;background:var(--card-bg);border:1px solid var(--bd);
  box-shadow:0 2px 10px rgba(20,40,80,.06), inset 0 1px 0 rgba(255,255,255,.5)}   /* v0.18.77：改纵向行容器（行由 .subnav-row 均排），支持显式两行 */
.subnav-row{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(88px,1fr);gap:6px;overflow-x:auto}
.subnav-btn{display:flex;align-items:center;justify-content:center;padding:14px 12px;border-radius:12px;
  background:transparent;border:1.5px solid transparent;color:var(--tx-mut);font-size:15px;font-weight:700;
  cursor:pointer;transition:background .18s,color .18s,box-shadow .18s,border-color .18s;
  white-space:nowrap;user-select:none}
.subnav-btn:hover{background:var(--brand-soft);color:var(--brand-d)}
.subnav-btn.on{background:linear-gradient(135deg,var(--brand-l) 0%,var(--brand) 55%,var(--brand-d) 100%);
  border-color:var(--brand-d);color:#fff;
  box-shadow:0 5px 16px rgba(160,120,30,.32), inset 0 1px 0 rgba(255,255,255,.38);
  text-shadow:0 1px 2px rgba(80,58,10,.25)}
.subnav-btn.on:hover{color:#fff;filter:brightness(1.05)}
/* v0.15.79（Leo 图1/2）：页面顶部自动建议按钮（年份筛选）——subnav-btn 同款金胶囊紧凑版；
   v0.15.88（Leo 图1）：可点感强化——未选中=白底实边胶囊+轻阴影（一眼是按钮），hover 品牌边+浅底 */
.yr-bar{display:flex;gap:8px;margin:-4px 0 14px;flex-wrap:wrap}
.yr-btn{padding:8px 20px;font-size:12.5px;flex:none;border-radius:10px;
  background:#fff;border-color:var(--bd-strong);color:var(--tx-mut);box-shadow:0 1px 3px rgba(23,43,99,.06)}
.yr-btn:hover:not(.on){border-color:var(--brand);color:var(--brand-d);background:var(--brand-50,#EFF6FF)}
/* 主操作 hero 按钮（v0.14.69 Leo：第一录入按钮突出）——品牌三段金渐变+外辉+顶高光 */
.btn-hero{display:inline-flex;align-items:center;gap:6px;background:linear-gradient(135deg,var(--brand-l) 0%,var(--brand) 55%,var(--brand-d) 100%);
  color:#fff;font-weight:800;font-size:15px;padding:12px 26px;border-radius:12px;border:1px solid var(--brand-d);cursor:pointer;
  box-shadow:0 6px 16px rgba(160,120,30,.32), inset 0 1px 0 rgba(255,255,255,.35);text-shadow:0 1px 2px rgba(80,58,10,.25);
  transition:filter .15s,transform .15s;user-select:none}
.btn-hero:hover{filter:brightness(1.07);transform:translateY(-1px)}
.btn-hero:active{transform:translateY(0)}
/* COO 经办订单特殊色标记（v0.14.69 Leo 定版：CEO 工作台最新订单——紫罗兰徽标+行淡紫底） */
.chip-coo{background:rgba(124,92,221,.14);color:#6a4fd0;font-weight:700}
tr.coo-row td{background:rgba(124,92,221,.06)}
tr.coo-row:hover td{background:rgba(124,92,221,.12)}
/* v0.14.71 #3 调音日历周视图：7 格大格（日格加高） */
.cal-week .cal-cell{min-height:340px}
/* v0.14.74 #3 排单规则页高级排版：编号卡 + 大数字步进 + 时间轴 + 工序链条 */
.sc-card{padding:18px 20px}
.sc-card-h{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.sc-card-h h3{margin:0}
.sc-no{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:9px;background:linear-gradient(135deg,var(--brand-l,#8db8f7),var(--brand,#2b7fff));color:#fff;font-weight:800;font-size:14px}
.sc-lead-bd{display:flex;gap:28px;flex-wrap:wrap;align-items:flex-start}
.sc-lead-left{min-width:210px;padding:14px 18px;border:1px solid var(--bd);border-radius:14px;background:var(--card-bg2,rgba(0,0,0,.02));text-align:center}
.sc-lead-lbl{font-size:13px;color:var(--tx-mut);font-weight:600}
.sc-stepper-lg{display:flex;align-items:center;justify-content:center;gap:14px;margin:8px 0}
.sc-stepper-lg .lead-step-btn{width:38px;height:38px;font-size:20px;border-radius:11px}
.sc-stepper-n{font-size:44px;font-weight:800;color:var(--brand-d);min-width:64px}
.sc-timeline{flex:1;min-width:520px;display:flex;align-items:stretch;gap:8px}
.sc-tl-seg{flex:1;padding:12px 14px;border-radius:12px;border:1px solid var(--bd)}
.sc-tl-ban{background:rgba(192,57,43,.07);border-color:rgba(192,57,43,.3)}
.sc-tl-urg{background:rgba(230,166,25,.10);border-color:rgba(230,166,25,.4)}
.sc-tl-ok{background:rgba(26,127,75,.08);border-color:rgba(26,127,75,.35)}
.sc-tl-t{font-size:12.5px;font-weight:700;color:var(--tx-mut)}
.sc-tl-v{font-size:15.5px;font-weight:800;margin:4px 0}
.sc-tl-s{font-size:12px;color:var(--tx-mut);line-height:1.5}
.sc-tl-arrow{align-self:center;color:var(--tx-mut);font-weight:700}
.sc-note{margin-top:14px;padding:10px 14px;border-radius:10px;background:rgba(43,127,255,.06);border:1px dashed var(--bd);font-size:12.5px;color:var(--tx-mut);line-height:1.7}
.sc-chain{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:4px 0 12px;padding:10px 14px;border-radius:12px;background:var(--card-bg2,rgba(0,0,0,.02));border:1px solid var(--bd)}
.sc-chain i{color:var(--tx-mut);font-style:normal;font-weight:700}
.sc-chain-node .pc-tag{font-size:12.5px;padding:3px 10px;line-height:20px}
.sc-chain-tune{padding-left:10px;border-left:1px dashed var(--bd)}   /* v0.18.52（Leo 图圈「跟磨边衔接上」）：去掉 margin-left:auto——链条自然换行左衔接，不再右端甩尾 */
.pl-line{display:block}   /* v0.18.52：岗位人员/编号每行 4 个折行 */
@media(max-width:1100px){.sc-timeline{min-width:100%}}

/* v0.14.74 #9 工资设定弹窗：总薪酬大卡 + 基本/浮动双格 */
.wg-total{margin:6px 0 14px;padding:14px 16px;border-radius:12px;background:linear-gradient(135deg,var(--brand-soft),rgba(43,127,255,.05));border:1px solid var(--bd)}
.wg-total label{display:block;font-weight:700;font-size:13.5px;margin-bottom:8px}
.wg-total-row{display:flex;align-items:baseline;gap:6px}
.wg-total-row .wg-cur{font-size:20px;font-weight:800;color:var(--brand-d)}
.wg-total-row input{font-size:22px;font-weight:800;padding:6px 12px;width:200px;border:1.5px solid var(--bd);border-radius:10px;color:var(--brand-d)}
.wg-total .hint{display:block;margin-top:8px;font-size:12px}
.wg-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.wg-cell{padding:12px 14px;border:1px solid var(--bd);border-radius:12px;background:var(--card-bg2,rgba(0,0,0,.02))}
.wg-k{font-size:12.5px;color:var(--tx-mut);font-weight:600}
.wg-v{font-size:21px;font-weight:800;margin:6px 0 4px}
.wg-edit input{font-size:18px;font-weight:700;padding:5px 10px;width:150px;border:1.5px solid var(--brand);border-radius:9px;margin:6px 0 4px}
.wg-src{margin:2px 0 8px}
.wg-op{display:flex;gap:6px}

/* v0.14.74 #7 运费页尺寸回填反馈：绿色回填条 + 字段行闪烁 */
.fill-banner{margin:2px 0 10px;padding:8px 14px;border-radius:10px;background:rgba(26,127,75,.10);border:1px solid rgba(26,127,75,.35);color:#1a7f4b;font-size:13px}
.fill-banner .hint{color:var(--tx-mut);font-size:12px}
@keyframes fillflash{0%{background:rgba(26,127,75,.22)}100%{background:transparent}}
.fstep-row.fillflash{animation:fillflash 1.6s ease-out;border-radius:8px}

/* v0.14.74 #2 翻月/切页宽度抖动整治：滚动条恒占宽度（出现时不再挤压页面）+ 工资表固定列布局 */
html{scrollbar-gutter:stable}
.wage-tbl{table-layout:fixed}
.wage-tbl td,.wage-tbl th{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* v0.14.73 全局加载占位（数据未返回前的统一 spinner，杜绝半空骨架闪烁） */
.loading-block{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;min-height:220px;padding:36px 0;color:var(--tx-mut)}
/* v0.16.87 骨架屏（Leo 定版「静态直出」）：页面框架立即呈现，数据位灰条闪烁占位 */
.lb-skel{width:100%;max-width:880px;display:flex;flex-direction:column;gap:12px;padding:0 4px}
.lb-skel i{display:block;height:14px;border-radius:7px;background:linear-gradient(90deg,rgba(120,140,170,.10) 25%,rgba(120,140,170,.22) 50%,rgba(120,140,170,.10) 75%);background-size:200% 100%;animation:lb-shimmer 1.15s ease-in-out infinite}
.lb-skel i:nth-child(1){height:20px;width:34%}
.lb-skel i:nth-child(2){height:34px;width:100%}
.lb-skel i:nth-child(n+3){width:100%}
.lb-skel i:nth-child(4){width:88%}
.lb-skel i:nth-child(5){width:96%}
.lb-skel i:nth-child(6){width:82%}
@keyframes lb-shimmer{0%{background-position:120% 0}100%{background-position:-120% 0}}
.lb-ring{width:34px;height:34px;border-radius:50%;border:3px solid rgba(43,127,255,.18);border-top-color:var(--brand,#2b7fff);animation:lb-spin .8s linear infinite}
.lb-txt{font-size:13px;letter-spacing:.05em}
@keyframes lb-spin{to{transform:rotate(360deg)}}

/* v0.14.71 #1 数据分析+收支统计合并页：口径说明条 + 分节头 */
.merge-note{margin:2px 0 16px;padding:10px 14px;border:1px dashed var(--bd);border-radius:10px;font-size:12.5px;color:var(--tx-mut);background:var(--card-bg);line-height:1.7}
.merge-note-tag{display:inline-block;margin-right:8px;padding:1px 8px;border-radius:6px;background:var(--brand-soft);color:var(--brand-d);font-weight:700;font-size:12px}
.merge-div{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:20px 0 14px;padding-top:16px;border-top:2px solid var(--brand-soft)}
.merge-div>b{font-size:19px}
/* v0.14.70 #8 国际快递（DHL/UPS/FedEx/TNT · 免国内段） */
.expr-block{margin-top:18px;border-top:1px dashed var(--bd);padding-top:12px}
.expr-head{font-weight:700;margin-bottom:8px}
.expr-th .expr-th-sub{display:block;font-size:10.5px;font-weight:400;color:var(--brand-d);line-height:1.2}
.expr-td{background:rgba(43,127,255,.04)}
.pv-exp{display:inline-block;margin-left:4px;padding:0 5px;font-size:10.5px;border-radius:6px;background:var(--brand-soft);color:var(--brand-d);vertical-align:1px;font-weight:400}
/* v0.14.70 #10/#11 生产日历（工序时间距离推导·随查随算不落库） */
.pc-tag{display:inline-block;padding:0 5px;border-radius:6px;font-size:10.5px;font-weight:700;line-height:16px;margin-right:4px;vertical-align:1px}
.pc-prep{background:#eef2f7;color:#5b6b7f}
.pc-draw{background:#fdf3e3;color:#a96f12}
.pc-press{background:#e8f4ee;color:#1c7a55}
.pc-bake{background:#fdeeea;color:#c2542a}
.pc-mark{background:#f0eafd;color:#6a4fd0}
.pc-tune{background:#e3eeff;color:#1e56c8}   /* v0.14.74 #12：调音并入生产日历后的第六色（品牌蓝） */
.pc-assemble{background:#e8e0fb;color:#5a3ec8}   /* v0.14.79 #6：合壳（自 合壳打标 拆出，紫系偏深） */
.pc-repair{background:#f2f2f2;color:#8a8a8a}     /* v0.14.79 #6：维修（售后环节，灰色标注） */
.pc-grind{background:#e0f2f7;color:#17758f}     /* v0.18.46：磨边（合壳后精调前，青系） */
.pc-fine{background:#e3eeff;color:#1e56c8}      /* v0.18.46：精调锚点行（同调音蓝） */
.pc-pack{background:#f3ead9;color:#8a5a12}      /* v0.18.46：打包（精调后，账本金系） */
.pl-anchor{font-weight:700;color:#1e56c8}       /* v0.18.46：精调锚点行文案 */
/* v0.14.76 #6 日格工序分区卡：左色条 + 区标题 */
.pb-sec{margin-top:4px;border-left:3px solid transparent;padding-left:6px;border-radius:0 6px 6px 0;background:rgba(0,0,0,.015)}
.pb-sec-h{font-size:11px;font-weight:800;letter-spacing:.03em;padding:3px 0 1px}
.pb-sec-h b{font-size:11.5px}
.pclead-strip{display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:12.5px;color:var(--tx-mut)}
.pclead-strip .pc-tag{margin-right:2px}
.prod-staff-h{display:flex;align-items:center;gap:5px;font-size:11.5px;font-weight:700;color:var(--tx-mut)}
.prod-task{font-size:11.5px;line-height:1.5;padding:2px 4px;border-radius:6px;margin-top:2px;background:var(--card-bg2,rgba(0,0,0,.03));word-break:break-all}
.prod-task.pend{opacity:.55}
/* v0.14.70 #11 排单规则页·工序时间距离行 */
.pl-grid{display:flex;flex-direction:column;gap:10px;margin-top:10px}
.pl-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.pl-row .pc-tag{font-size:12px;padding:2px 8px;line-height:18px;margin-right:0}
.pl-who{min-width:120px;font-size:12px}
.pl-names{min-width:150px;font-weight:600;font-size:12.5px}   /* v0.14.71 #17：员工姓名列 */
.pl-codes{min-width:120px;font-size:12px}                     /* v0.14.71 #17：员工编号列 */
.pl-lbl{color:var(--tx-mut);font-size:13px}
@media(max-width:920px){.sidemenu{width:118px;padding:12px 8px}.sidemenu a{font-size:12.5px;padding:8px 10px}.sidemenu .brand-logo{width:84px}.sidemenu .brand-name{font-size:11px}}
/* 左侧菜单折叠（Leo 2026-09-16）：« 收起成细条、» 展开，状态存 localStorage 跨刷新记忆 */
.sidemenu{transition:width .18s ease,padding .18s ease,background .25s}
.nav-fold{display:block;margin:-6px 0 10px auto;width:26px;height:26px;border:1px solid var(--bd);border-radius:8px;background:var(--card-bg);color:var(--tx-mut);cursor:pointer;font-size:13px;line-height:1;padding:0}
.nav-fold:hover{color:var(--brand-d);border-color:var(--brand)}
.shell.fold .sidemenu{width:38px;padding:20px 6px;overflow:hidden}
.shell.fold .sidemenu a,.shell.fold .sidemenu .grp,.shell.fold .sidemenu .grp-sep{display:none}
.shell.fold .sidemenu .brand{display:none}   /* 折叠成细条时品牌区同步隐藏（Leo 2026-09-16 框架定版） */
.shell.fold .nav-fold{margin:0 auto}
.shell.fold .content{max-width:calc(100vw - 62px)}
/* 客户角色语言选择（v0.10.12 Leo 定版）：侧栏底部，🌐+下拉；折叠态只留图标 */
.lang-box{display:flex;align-items:center;gap:6px;margin-top:18px;padding:10px 8px 2px;border-top:1px solid var(--bd)}
.lang-box .lang-ico{font-size:14px;flex-shrink:0}
.lang-box select{flex:1;min-width:0;font-size:13px;padding:6px 8px}
.shell.fold .lang-box{border-top:none;padding:6px 0 0;justify-content:center}
.shell.fold .lang-box select{display:none}

/* 登录页大气版（Leo 2026-09-16 定版）：品牌面板+登录面板分栏，宽屏左右/窄屏上下，元素与留白放大 */
.login-stage{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:44px 24px;box-sizing:border-box}
.login-card-lg{display:flex;width:960px;max-width:100%;background:var(--card-bg);border:1px solid var(--bd);border-radius:22px;overflow:hidden;box-shadow:0 14px 44px rgba(30,40,60,.10)}
.login-brand{flex:1.15;background:linear-gradient(158deg,var(--brand-l) 0%,var(--card-bg) 88%);padding:52px 48px;display:flex;flex-direction:column;align-items:flex-start}
.lb-logo{height:120px;width:auto;margin-bottom:22px}
.lb-name{font-size:23px;font-weight:700;color:var(--brand-d);letter-spacing:1.5px}
.lb-en{font-size:12.5px;color:var(--tx-faint);letter-spacing:2.5px;margin-top:4px;text-transform:uppercase}
.lb-slogan{font-size:14.5px;color:var(--tx-mut);margin-top:14px}
.lb-feats{margin-top:32px;display:flex;flex-direction:column;gap:15px}
.lb-feat{display:flex;align-items:center;gap:10px;font-size:13.5px;color:var(--tx)}
.lb-feat i{width:7px;height:7px;border-radius:50%;background:var(--brand);flex-shrink:0}
.lb-ver{margin-top:auto;padding-top:30px;font-size:12px;color:var(--tx-faint);letter-spacing:.5px}
.login-main{flex:1;padding:52px 48px;border-left:1px solid var(--bd)}
.lm-title{font-size:20px;font-weight:600;color:var(--tx);margin-bottom:6px}
.lm-sub{font-size:12.5px;color:var(--tx-mut);margin-bottom:22px}
.lm-portals{margin-top:24px;padding-top:18px;border-top:1px dashed var(--bd);font-size:12.5px;color:var(--tx-mut);display:flex;align-items:center;flex-wrap:wrap;gap:8px 14px}
.lm-portals a{color:var(--brand-d);cursor:pointer}
.lm-portals a:hover{text-decoration:underline}
@media(max-width:880px){
  .login-stage{padding:24px 14px;align-items:flex-start}
  .login-card-lg{flex-direction:column;width:460px}
  .login-brand{padding:30px 26px 20px;align-items:center;text-align:center}
  .lb-logo{height:78px;margin-bottom:12px}
  .lb-name{font-size:19px}
  .lb-feats{display:none}
  .lb-ver{padding-top:14px;margin-top:0}
  .login-main{padding:26px;border-left:none;border-top:1px solid var(--bd)}
}

/* 手碟尺寸（Leo 2026-09-16）：卡片收窄 + 弹窗手碟穹顶预览 */
.hp-card{max-width:none}   /* Leo 2026-09-16 21:40 定版：恢复整页宽度，列比例 260/130/flex/170 */
.hp-modal{width:420px}
/* v0.9.108 弹窗重设计（Leo 定版）：左侧碟形视觉面板 + 右侧表单 + 底部操作条 */
.hp-modal2{width:580px;max-width:94vw;padding:0;overflow:hidden}
.hp-modal2 .modal-h{padding:16px 20px 12px}
.hp-body{display:flex}
.hp-side{width:216px;flex-shrink:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:22px 14px;
  background:linear-gradient(158deg,#F8F3E7 0%,#EFE4CE 100%);border-right:1px solid #E6DABE}
.hp-side .hp-disc{width:132px;height:132px}
.hp-side .hp-disc-v{font-size:23px;margin-top:16px}
.hp-side-name{margin:12px 0 0;font-size:13.5px;font-weight:600;color:#6B5836;text-align:center;max-width:100%;word-break:break-all}
.hp-form{flex:1;padding:18px 20px 8px}
.hp-foot{display:flex;align-items:center;gap:8px;padding:12px 20px 16px;border-top:1px solid rgba(120,100,60,.14);margin-top:8px}
@media(max-width:600px){.hp-body{flex-direction:column}.hp-side{width:100%;border-right:none;border-bottom:1px solid #E6DABE;padding:16px}}
.hp-disc-wrap{display:flex;justify-content:center;padding:4px 0 18px}
.hp-disc{width:150px;height:150px;border-radius:50%;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;
  background:radial-gradient(circle at 38% 30%, #FDFBF6 0%, #F0E8D7 52%, #DCCFB4 100%);
  border:1px solid #D8C9AA;
  box-shadow:0 8px 20px rgba(122,96,48,.18), inset 0 2px 6px rgba(255,255,255,.75), inset 0 -8px 14px rgba(150,118,66,.16);
  transition:opacity .2s}
.hp-disc.dim{opacity:.5}
.hp-disc-ding{position:absolute;top:22%;left:50%;transform:translateX(-50%);width:24px;height:24px;border-radius:50%;
  background:radial-gradient(circle at 35% 30%, #FFFAEC, #D9C7A2);
  border:1px solid #C6B48B;box-shadow:inset 0 1px 3px rgba(122,96,48,.4), 0 1px 2px rgba(122,96,48,.2)}
.hp-disc-v{font-size:26px;font-weight:700;color:#6B5836;margin-top:18px;letter-spacing:.5px}
.hp-disc-u{font-size:12px;color:#98865E;margin-top:1px}
.hp-preview{text-align:center;margin:10px 0 0;font-size:12.5px}
.hp-preview b{color:var(--brand-d)}

/* 全栈数据分析 */

.ana-page{max-width:1080px}
.ana-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:16px}
.ana-kpi{background:var(--card-bg);border:1px solid var(--bd);border-radius:12px;padding:14px 16px}
.ana-kpi-v{font-size:20px;font-weight:800;color:var(--tx);letter-spacing:.3px}
.ana-kpi-t{font-size:12px;color:var(--tx-faint);margin-top:2px}
.ana-chart{display:flex;align-items:flex-end;gap:6px;height:150px;padding:6px 2px 0}
.ana-col{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;position:relative;min-width:0}
.ana-bar{width:70%;max-width:34px;background:linear-gradient(180deg,var(--brand),var(--brand-d));border-radius:5px 5px 0 0;min-height:2px;transition:height .3s}
.ana-ym{font-size:10.5px;color:var(--tx-faint);margin-top:5px}
.ana-ct{position:absolute;top:-2px;font-size:10px;color:var(--brand-d);font-weight:700}
.ana-cols{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px}
@media(max-width:860px){.ana-cols{grid-template-columns:1fr}}
.ana-row{display:flex;align-items:center;gap:10px;padding:5px 0;font-size:13px}
.ana-name{width:150px;flex-shrink:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--tx)}
.ana-track{flex:1;height:8px;background:var(--bd);border-radius:99px;overflow:hidden}
.ana-fill{height:100%;background:var(--brand);border-radius:99px}
.ana-fill.alt{background:var(--green,#1E9E6A)}
.ana-num{width:34px;text-align:right;color:var(--tx)}
.ana-amt{width:86px;text-align:right;color:var(--tx-faint);font-size:12px}
.ana-status{display:flex;flex-direction:column;gap:6px}
.ana-st{display:flex;align-items:center;gap:12px;font-size:13px}
.ana-st .chip{width:86px;text-align:center;flex-shrink:0}
/* 井然版本号 */
.brand-ver{font-size:10.5px;opacity:.65;margin-left:7px;font-weight:400;letter-spacing:.3px}
.login-ver{text-align:center;font-size:11.5px;color:var(--tx-faint);margin-top:22px;letter-spacing:.5px}

/* 全栈模拟中心 */
.simc{max-width:1080px}
.simc-group{margin-bottom:26px}
.simc-gt{font-size:15px;font-weight:700;color:var(--tx);margin-bottom:12px;letter-spacing:.5px;display:flex;align-items:center;gap:10px}
.simc-gt::after{content:"";flex:1;height:1px;background:var(--bd)}
.simc-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px}
.simc-card{position:relative;background:var(--card-bg);border:1.5px solid var(--bd);border-radius:14px;padding:20px 18px;cursor:pointer;transition:all .15s;display:flex;flex-direction:column;gap:6px}
.simc-card b{font-size:15.5px;color:var(--tx)}
.simc-card .hint{font-size:12px}
.simc-card:not(.off):hover{border-color:var(--brand);box-shadow:0 8px 24px rgba(0,0,0,.18);transform:translateY(-2px)}
.simc-card.off{opacity:.45;cursor:not-allowed}
.simc-ico{font-size:30px;margin-bottom:4px}
.simc-go{position:absolute;right:16px;bottom:16px;font-size:12px;color:var(--brand);font-weight:600}

/* 超管模拟窗口（一键身份切换） */
.sim-zone{display:flex;gap:6px;align-items:center;background:var(--purple-l);padding:5px 10px;border-radius:12px;box-shadow:0 2px 10px rgba(122,92,220,.18)}
.sim-tag{font-size:13px;color:var(--purple);font-weight:800;margin-right:3px;white-space:nowrap}
.sim-btn{border:1.5px solid var(--purple);background:var(--card-bg);color:var(--purple);border-radius:16px;padding:4px 14px;font-size:12.5px;font-weight:700;white-space:nowrap;cursor:pointer;transition:all .12s}
.sim-btn:hover{background:var(--purple);color:#fff;transform:translateY(-1px);box-shadow:0 4px 12px rgba(122,92,220,.35)}
.sim-btn.on{background:var(--purple);border-color:var(--purple);color:#fff;box-shadow:0 4px 12px rgba(122,92,220,.4)}
.sim-btn.exit{border-color:var(--red);color:var(--red)}
.sim-btn.exit:hover{background:var(--red);color:#fff;box-shadow:0 4px 12px rgba(217,48,37,.35)}

/* ===== 客户列表 · 卡片风 ===== */
.qq-card{background:var(--card-bg);border:1px solid var(--bd);border-radius:14px;padding:14px 16px;margin-bottom:14px;box-shadow:var(--card-shadow)}
.filter-card{padding:10px 14px}
.qq-filter{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.qq-filter>.btn-pill{margin-right:14px}  /* 搜索按钮与筛选下拉拉开间距 */
.qq-search{position:relative;width:260px;flex:none}
.qq-search .ico{position:absolute;left:12px;top:50%;transform:translateY(-50%);width:16px;height:16px;color:var(--tx-faint);pointer-events:none}
.qq-search input{width:100%;border:1px solid var(--bd);border-radius:20px;padding:6px 14px 6px 34px;font-size:13px;background:var(--card-bg);color:var(--tx);outline:none}
.qq-search input:focus{border-color:var(--brand)}
.qq-input{border:1px solid var(--bd);border-radius:20px;padding:6px 14px;font-size:13px;background:var(--card-bg);color:var(--tx);outline:none}
.qq-input:focus{border-color:var(--brand)}
select.qq-input{min-width:140px}
.qq-count{margin-left:auto;font-size:12px;color:var(--tx-faint)}
.qq-tbl{width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed}   /* v0.16.87：静态布局（列宽钉死，内容折行不裁剪） */
.qq-tbl th{text-align:left;font-size:12px;color:var(--tx-mut);font-weight:500;padding:9px 10px;white-space:nowrap;background:var(--thead-bg);box-shadow:var(--th-shadow)}
.qq-tbl th:first-child{border-radius:10px 0 0 0}.qq-tbl th:last-child{border-radius:0 10px 0 0}
.qq-tbl td{padding:10px;border-bottom:1px solid var(--bd);font-size:13px;vertical-align:top;color:var(--tx)}
.qq-tbl tr:last-child td{border-bottom:none}
.qq-tbl tbody tr{transition:background .15s}
/* v0.21.03（Leo）：删除 .qq-tbl 行 hover 变色（全栈统一） */
.qq-code{font-family:ui-monospace,Consolas,monospace;font-weight:600;color:var(--brand-d);background:var(--brand-l);border-radius:8px;padding:2px 8px;white-space:nowrap}
.qq-region{color:var(--brand-d);background:var(--brand-l);border-radius:12px;padding:1px 10px;font-size:12px;white-space:nowrap}
.qq-phone{font-family:ui-monospace,Consolas,monospace;font-size:12.5px;white-space:nowrap}
.qq-mut{font-size:12px;color:var(--tx-faint);white-space:nowrap}
.btn-pill{border:none;background:var(--brand);color:#fff;border-radius:999px;padding:5px 16px;font-size:12px;box-shadow:var(--btn-shadow);transition:filter .15s,transform .1s}
.btn-pill:hover{filter:brightness(1.08)}
.btn-pill:active{transform:translateY(1px)}
.btn.pill{border-radius:999px}
.buyers-page .qq-tbl{table-layout:fixed;width:100%}
.buyers-page .qq-tbl td{padding:8px 6px;font-size:12.5px;white-space:normal;word-break:break-word;overflow:visible}
.buyers-page .qq-tbl th{padding:8px 6px;overflow:hidden;text-overflow:ellipsis}
.buyers-page .qq-tbl th:nth-child(1){width:6.5%}   /* 编号 */
.buyers-page .qq-tbl th:nth-child(2){width:9.5%}   /* 公司 */
.buyers-page .qq-tbl th:nth-child(3){width:8%}     /* 负责人姓名 */
.buyers-page .qq-tbl th:nth-child(4){width:5%}     /* 地区 */
.buyers-page .qq-tbl th:nth-child(5){width:6%}     /* 国家 */
.buyers-page .qq-tbl th:nth-child(6){width:8.5%}     /* 角色 */
.buyers-page .qq-tbl th:nth-child(7){width:10.5%}    /* 电话 */
.buyers-page .qq-tbl th:nth-child(8){width:4.5%}   /* 订货次数 */
.buyers-page .qq-tbl th:nth-child(9){width:7%}     /* 最后订货 */
.buyers-page .qq-tbl th:nth-child(10){width:6.5%}  /* 创建者 */
.buyers-page .qq-tbl th:nth-child(11){width:7.5%}  /* 最后修改 */
.buyers-page .qq-tbl th:nth-child(12){width:11.5%} /* 负责销售 */
.buyers-page .qq-tbl th:nth-child(13){width:5%}    /* 操作（销售视角） */
.buyers-page .qq-tbl .btn-pill{padding:4px 12px;font-size:11px}
.buyers-page .qq-mut{font-size:11px}
.buyers-page .qq-phone{font-size:11.5px;white-space:normal;word-break:break-word}

/* ===== 外观主题页 ===== */
.theme-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px}
.theme-card{border:2px solid var(--bd);border-radius:14px;overflow:hidden;cursor:pointer;background:var(--card-bg);transition:transform .15s,border-color .15s}
.theme-card:hover{transform:translateY(-2px)}
.theme-card.on{border-color:var(--brand);box-shadow:var(--btn-shadow)}
.theme-prev{height:120px;padding:12px;display:flex;flex-direction:column;gap:6px}
.theme-prev .bar1{height:14px;border-radius:4px}
.theme-prev .bar2{height:34px;border-radius:6px;display:flex;align-items:center;padding:0 10px;font-size:11px}
.theme-prev .pills{display:flex;gap:6px}
.theme-prev .pills span{width:34px;height:12px;border-radius:999px}
.theme-meta{padding:10px 14px;display:flex;align-items:center;justify-content:space-between}
.theme-meta b{font-size:13px}
.theme-meta .sub{font-size:11px;color:var(--tx-faint)}
.btn-pill.danger{background:var(--red);border-color:var(--red)}
.btn-pill.danger:hover{background:var(--red-d);border-color:var(--red-d)}

.btn-pill.xs{padding:1px 10px;font-size:11px}
.btn-pill.promo{background:#1a7f4b;color:#fff}          /* v0.14.82 促销按钮绿色（与编辑/条款蓝/琥珀区分） */
.btn-pill.promo:hover{background:#14663c}
/* 客户编辑弹窗：加宽两栏 + 欧美地址四行 */
.modal-lg{max-width:780px}
.edit-cols{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:4px}
@media(max-width:760px){.edit-cols{grid-template-columns:1fr}}
.sec-t{font-size:12.5px;font-weight:600;color:var(--tx-mut);margin:12px 0 8px;padding-bottom:4px;border-bottom:1px solid var(--bd);display:flex;align-items:center;gap:8px}
.sec-t:first-child{margin-top:0}
.addr-line{display:flex;gap:8px;align-items:flex-start;margin-bottom:10px}
.addr-line>div{flex:1}
.addr-line input{width:100%;border:1px solid var(--bd-strong);border-radius:8px;padding:7px 10px;font-size:13px;background:var(--card-bg);color:var(--tx)}
.addr-line input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-l)}
.addr-no{flex-shrink:0;width:20px;height:20px;border-radius:50%;background:var(--brand);color:#fff;font-size:11px;font-weight:600;display:flex;align-items:center;justify-content:center;margin-top:7px}
.addr-tip{margin:3px 0 0;font-size:11px;color:var(--tx-faint)}
.addr-preview{margin-top:12px;padding:10px 14px;border:1px dashed var(--bd-strong);border-radius:10px;background:var(--brand-l);font-size:13px;line-height:1.7}
.addr-preview .ap-t{font-size:11px;color:var(--tx-mut);margin:0 0 4px;font-weight:600}
/* 待确认卡片与审批 */
.pending-card{border-color:var(--amber);background:linear-gradient(135deg,var(--card-bg) 60%,var(--amber-l))}
.pending-badge{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;border-radius:11px;background:var(--red);color:#fff;font-size:12px;font-weight:700;padding:0 6px;vertical-align:2px}
.btn-pill.warn{background:var(--amber);border-color:var(--amber);color:#fff}
.btn-pill.warn:hover{background:#6d4009;border-color:#6d4009}
.aprv-item{border:1px solid var(--bd);border-radius:10px;padding:12px 14px;margin-bottom:12px;background:var(--card-bg)}
/* 确认修改弹窗（专业偏亮版） */
.aprv-modal{max-width:640px;padding:0;overflow:hidden;border-radius:16px;box-shadow:0 16px 48px rgba(11,61,145,.22)}
.aprv-head{display:flex;align-items:center;gap:12px;padding:16px 20px;background:linear-gradient(135deg,var(--brand) 0%,var(--brand-d) 100%);color:#fff}
.aprv-head h3{margin:0;font-size:16px;color:#fff}
.aprv-head p{margin:2px 0 0;font-size:12px;opacity:.85}
.aprv-head-ico{width:34px;height:34px;flex-shrink:0;border-radius:50%;background:rgba(255,255,255,.22);display:flex;align-items:center;justify-content:center;font-size:17px;font-weight:700}
.aprv-x{margin-left:auto;background:none;border:none;color:#fff;font-size:22px;cursor:pointer;opacity:.8;line-height:1;padding:0 2px}
.aprv-x:hover{opacity:1}
.aprv-body{padding:16px 20px;max-height:56vh;overflow:auto;background:var(--page-bg)}
.aprv-card{background:var(--card-bg);border:1px solid var(--bd);border-left:4px solid var(--brand);border-radius:12px;padding:12px 14px;margin-bottom:12px;box-shadow:0 2px 8px rgba(11,61,145,.06)}
.aprv-card.kind-create{border-left-color:var(--green)}
.aprv-card.kind-delete{border-left-color:var(--red)}
.aprv-card-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.aprv-card-head b{font-size:13.5px}
.aprv-card-head .hint{margin-left:auto;font-size:11.5px}
.aprv-kind{flex-shrink:0;font-size:11px;font-weight:600;padding:2px 9px;border-radius:999px;background:var(--brand-l);color:var(--brand-d)}
.kind-create .aprv-kind{background:var(--green-l);color:var(--green)}
.kind-delete .aprv-kind{background:var(--red-l);color:var(--red)}
.aprv-tbl{width:100%;border-collapse:separate;border-spacing:0;margin-top:10px;font-size:12.5px}
.aprv-tbl th{background:var(--thead-bg);color:var(--tx-mut);font-weight:600;padding:6px 10px;text-align:left;font-size:11.5px;border-bottom:1px solid var(--bd)}
.aprv-tbl td{padding:7px 10px;border-bottom:1px solid var(--bd);vertical-align:top}
.aprv-tbl tr:last-child td{border-bottom:none}
.aprv-tbl .f-lbl{color:var(--tx-mut);white-space:nowrap}
.aprv-tbl .f-old{color:var(--tx-mut)}
.aprv-tbl .f-arrow{color:var(--brand);text-align:center;font-weight:700}
.aprv-tbl .f-new{background:var(--brand-l);color:var(--brand-d);font-weight:500;border-radius:0 6px 6px 0}
.aprv-warn{margin:10px 0 0;font-size:12.5px;color:var(--red-d);background:var(--red-l);border-radius:8px;padding:8px 10px}
.aprv-actions{display:flex;gap:8px;margin-top:12px}
.btn.ok-solid{background:var(--green);border-color:var(--green);color:#fff}
.btn.ok-solid:hover{background:var(--teal-d);border-color:var(--teal-d)}
.btn.no-ghost{background:none;border:1px solid var(--red);color:var(--red)}
.btn.no-ghost:hover{background:var(--red-l)}
.aprv-empty{text-align:center;color:var(--tx-mut);padding:26px 0;font-size:13px}
.aprv-foot{display:flex;align-items:center;justify-content:space-between;padding:12px 20px;border-top:1px solid var(--bd);background:var(--card-bg)}
/* 删除确认弹窗（居中大气） */
.modal-center{align-items:center;justify-content:center;padding:20px}
.confirm-box{max-width:420px;text-align:center;padding:28px 28px 24px;border-radius:16px}
.confirm-ico{width:56px;height:56px;margin:0 auto 14px;border-radius:50%;background:var(--red-l);color:var(--red);display:flex;align-items:center;justify-content:center}
.confirm-ico svg{width:28px;height:28px}
.confirm-title{font-size:17px;font-weight:600;margin:0 0 12px}
.confirm-target{display:flex;flex-direction:column;gap:2px;padding:10px 14px;border-radius:10px;background:var(--brand-l);margin-bottom:14px}
.confirm-target b{color:var(--brand-d);font-size:14px}
.confirm-target span{font-size:14px}
.confirm-target em{font-style:normal;font-size:12px;color:var(--tx-mut)}
.confirm-desc{font-size:13px;color:var(--tx-mut);line-height:1.8;margin:0 0 18px}
.confirm-btns{display:flex;gap:10px;justify-content:center}
.btn.danger-solid{background:var(--red);border-color:var(--red);color:#fff}
.btn.danger-solid:hover{background:var(--red-d);border-color:var(--red-d)}
/* 客户个人资料页（账号中心） */
.profile-cols{display:grid;grid-template-columns:260px 1fr;gap:16px;align-items:start}
@media(max-width:860px){.profile-cols{grid-template-columns:1fr}}
.acct-card{text-align:center;padding:22px 16px}
.acct-badge{display:inline-block;background:var(--brand);color:#fff;font-weight:700;font-size:15px;padding:4px 14px;border-radius:999px;letter-spacing:.5px}
.acct-avatar{width:46px;height:46px;border-radius:50%;padding:0;font-size:19px;display:inline-flex;align-items:center;justify-content:center;letter-spacing:0}
.acct-name{font-size:16px;font-weight:600;margin-top:10px}
.acct-sub{font-size:12.5px;color:var(--tx-mut)}
.acct-roles{display:flex;justify-content:center;gap:4px;flex-wrap:wrap;margin-top:10px}
.acct-meta{margin-top:10px;font-size:12px;color:var(--tx-faint)}
.card-cap{margin:0 0 10px;font-size:12px;font-weight:600;color:var(--tx-mut);text-transform:uppercase;letter-spacing:.4px}
.sales-row{display:flex;align-items:center;gap:10px}
.sales-avatar{width:38px;height:38px;border-radius:50%;background:var(--brand-l);color:var(--brand-d);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:16px;flex-shrink:0}
.stat-row{display:flex;justify-content:space-between;padding:6px 0;font-size:13px}
.stat-row b{font-variant-numeric:tabular-nums}
/* 负责销售行内分配下拉 */
.assign-sel{border:1px solid var(--bd-strong);border-radius:999px;padding:2px 6px;font-size:11.5px;background:var(--card-bg);color:var(--tx);width:100%;max-width:none;cursor:pointer}
.assign-sel:hover{border-color:var(--brand)}
.assign-sel:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-l)}
.lang-sel{width:auto;min-width:180px;max-width:230px}
/* 调式库 */
.scale-cols{display:flex;gap:14px;align-items:flex-start}
.fam-list{width:250px;flex-shrink:0;padding:8px}   /* 2026-09-16 Leo：分类卡片加宽（长名+全数字热度） */
.fam-item{display:flex;justify-content:space-between;align-items:center;padding:8px 10px;border-radius:8px;cursor:pointer;font-size:13px}
.fam-item b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fam-item:hover{background:var(--row-hover)}
.fam-item.on{background:var(--brand-l);color:var(--brand-d)}
.fam-item.on b{font-weight:600}
.note-picked{padding:8px 10px;border-radius:8px;background:var(--brand-l);color:var(--brand-d);font-size:13px;margin-bottom:10px;font-weight:500}
.note-oct{display:flex;align-items:center;gap:6px;margin-bottom:9px;flex-wrap:nowrap}
.note-oct:last-child{margin-bottom:2px}
.note-oct-lbl{width:48px;flex-shrink:0;font-size:11px;color:var(--tx-faint);font-weight:600;text-align:right;padding-right:5px}
.note-chip{min-width:50px;width:auto;height:33px;padding:0 5px;border:1px solid var(--bd-strong);border-radius:8px;background:var(--card-bg);color:var(--tx);font-size:11.5px;cursor:pointer;flex-shrink:0;transition:all .12s}
.note-chip:hover{border-color:var(--brand);color:var(--brand);transform:translateY(-1px)}
.note-chip.on{background:var(--brand);border-color:var(--brand);color:#fff;font-weight:600}
.note-chip:disabled:not(.is-ding){opacity:.55;cursor:not-allowed;background:var(--bd-strong);border-color:var(--bd-strong);color:var(--tx-faint)}
.note-chip:disabled:not(.is-ding):hover{border-color:var(--bd-strong);color:var(--tx-faint);transform:none}
.note-chip.is-ding{opacity:1;border-color:var(--brand);color:var(--brand);font-weight:700;box-shadow:inset 0 0 0 1px var(--brand)}
.note-chip.is-ding:hover{border-color:var(--brand);color:var(--brand);transform:none}
@media(max-width:640px){.note-oct{flex-wrap:wrap;gap:6px}.note-chip{min-width:42px;width:42px;height:32px;font-size:11px}}
.hot-tag{font-size:11px;color:var(--red);font-weight:600;white-space:nowrap}
/* 调式库热度四平台分列（Leo 2026-09-16）：表头紧凑、带 🔥 标识、数字右对齐易比大小 */
.tbl th.heat-col{width:96px;font-size:12px;white-space:nowrap;text-align:right;padding-right:16px}
.heat-col::before{content:"🔥 ";font-weight:400}
/* v0.15.83（Leo 图1）：调式库表格列宽定版——fixed 布局全列 nowrap 省略；音符序列两行封顶（行高整齐），悬停 title 全显；
   v0.15.96（Leo 图1「不要有…」根治）：表 min-width 1160——容器不足时配合卡片 overflow-x:auto 出横向滚动条，fixed 各列永不压缩（音数/碟壳不再出省略号，音符列不再被压成 0 宽瀑布流） */
.scale-tbl{table-layout:fixed;min-width:1234px}   /* v0.16.19：调式名列 118→176 单行保障，保底宽同步 +58 */
.scale-tbl th,.scale-tbl td{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.scale-tbl td.name-td{white-space:nowrap;overflow:hidden;text-overflow:clip}   /* v0.16.19（Leo 图1「调式名字不能出现两行」）：名称单行 clip 防线——绝不折行、绝不出省略号 */
.scale-tbl td.seq{white-space:normal;overflow:visible;padding-top:5px;padding-bottom:5px}
.scale-tbl .seq2{display:block;white-space:normal;overflow:visible;line-height:1.45;word-break:break-all}   /* v0.15.89（Leo 图1「不要出现…，调式可以两行」）：取消 clamp——音符/调式名自然折行完整显示，零省略号 */
.scale-tbl .act-div{margin:0 6px}   /* 操作列收窄配套 */
.scale-tbl th.heat-col::before{content:none}   /* v0.15.89（Leo 图1）：热度列头去 🔥——列内数字已有 🔥 锚点，列头的 18px 让给平台名（Instagram 不再截断） */
.scale-tbl th.heat-col{padding-right:8px}   /* v0.15.89 二轮：右 padding 16→8（Instagram+⇅ 实测需 74px 内容区，94px 列宽刚好放下） */
.heat-td{text-align:right;padding-right:16px}
/* 可排序表头（Leo 2026-09-16）：点击切换升/降序，激活高亮 */
.sort-th{cursor:pointer;user-select:none}
.sort-th:hover{color:var(--brand-d)}
.sort-th.on{color:var(--brand-d)}
.sort-ic{font-size:10px;margin-left:3px;opacity:.45}
.sort-th.on .sort-ic{opacity:1}
.tbl th.ctr,.tbl td.ctr{text-align:center}
/* ===== v0.14.52 表格列宽策略（Leo 定版：按内容类型定宽，全站统一风格） =====
   内容类型 → 类名：序号 c-idx(40px 居中) / 数量·数值 c-qty(右对齐等宽数字) / 金额 c-money(右对齐等宽数字) /
   日期·日期时间 dt(单行不换行，已有) / 状态徽标 c-st(紧凑不换行) / 操作按钮 c-act(按按钮数自适应不换行) /
   长文本 ell(省略号，配 max-width 与 title 悬停全文)。th/td 同名同用；right 对齐组 .r 已有 */
.tbl th.c-idx,.tbl td.c-idx{width:40px;text-align:center;white-space:nowrap}
.tbl th.c-qty,.tbl td.c-qty{width:64px;text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.tbl th.c-money,.tbl td.c-money{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.tbl th.r,.tbl td.r{text-align:right;font-variant-numeric:tabular-nums}   /* 修复存量 bug：class="r" 此前无定义（财务页金额一直左对齐） */
.tbl th.c-st,.tbl td.c-st{white-space:nowrap}
.tbl th.c-act,.tbl td.c-act{white-space:nowrap}
.tbl td.ell,.ell{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* 调式可生产开关 */
.row-off{opacity:.45}
.prod-sw{display:inline-flex;gap:4px}
.prod-sw .btn-pill{opacity:.55}
.prod-sw .btn-pill.on{opacity:1;background:var(--green);border-color:var(--green);color:#fff;font-weight:600}
.prod-sw .btn-pill.on:last-child{background:var(--red);border-color:var(--red)}
.act-div{display:inline-block;width:1px;height:16px;background:var(--bd-strong);margin:0 10px;vertical-align:middle}
/* 客户四卡：显示形式段选 */
.disp-toggle{display:flex;align-items:center;gap:6px;margin:2px 0 10px}
.disp-toggle .btn-pill{opacity:.55}
.disp-toggle .btn-pill.on{opacity:1;background:var(--brand);border-color:var(--brand);color:#fff;font-weight:600}
/* v0.15.73（Leo 图1）：生产日历 周/月切换与邻钮统一 btn sm 同高同字号，选中=品牌底白字 */
.disp-toggle.cal-view{margin:0}
.disp-toggle.cal-view .btn.ghost{opacity:.6}
.disp-toggle.cal-view .btn.ghost.on{opacity:1;background:var(--brand);border-color:var(--brand);color:#fff;font-weight:600;box-shadow:var(--btn-shadow)}
/* 首次登录强制设置页 */
.firstlogin-wrap{min-height:calc(100vh - 60px);display:flex;align-items:center;justify-content:center;padding:24px}
.firstlogin-card{width:460px;max-width:94vw;padding:26px 28px}
.fl-head h2{margin:0 0 6px;font-size:19px}
.fl-head p{margin:0 0 8px;font-size:12.5px}
/* 调式编辑弹窗（上壳/下壳双音阶） */
.scale-modal{max-width:1080px;max-height:calc(100vh - 40px);overflow-y:auto}
/* 全栈架构图 + 术语定位（v0.10.1 平台活文档，Leo 定版：每次改动同步 views-platform.js） */
.arch-2col{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.arch-col-h{font-size:12px;font-weight:600;color:var(--brand-d);margin-bottom:8px;padding-bottom:6px;border-bottom:2px solid var(--brand)}
.arch-row{display:flex;align-items:baseline;gap:6px;padding:3px 6px;border-radius:6px;font-size:13px;line-height:1.55;flex-wrap:wrap}
.arch-row:hover{background:var(--brand-l)}
.arch-row b{font-weight:600;white-space:nowrap}
.arch-tog{width:14px;flex:none;color:var(--brand);cursor:pointer;font-size:11px;user-select:none}
.arch-tog.off{visibility:hidden}
.arch-note{color:var(--tx-mut);font-size:12px}
.arch-kids{margin-left:16px;padding-left:10px;border-left:1px dashed var(--bd)}
.arch-tag{display:inline-block;padding:0 7px;border-radius:10px;font-size:11px;white-space:nowrap}
.arch-tag.now{background:var(--green-l);color:var(--green)}
.arch-tag.new{background:var(--brand-l);color:var(--brand-d)}
.arch-tag.plan{background:var(--bd);color:var(--tx-mut)}
.arch-tag.p4{background:var(--purple-l);color:var(--purple)}
.arch-tag.plat{background:var(--brand-l);color:var(--brand-d)}
.arch-tag.org{background:var(--teal-l);color:var(--teal-d)}
.gloss-row{display:grid;grid-template-columns:110px 1fr;gap:2px 12px;padding:9px 0;border-top:1px dashed var(--bd);font-size:13px}
.gloss-row:first-of-type{border-top:none}
.gloss-t{font-weight:600;color:var(--brand-d)}
.gloss-d{line-height:1.65;color:var(--tx)}
.gloss-e{grid-column:2;color:var(--amber);font-size:12px;line-height:1.6}
@media(max-width:920px){.arch-2col{grid-template-columns:1fr}.gloss-row{grid-template-columns:88px 1fr}}

.modal-h{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}
.modal-h h3{margin-bottom:0}
.modal-x{width:30px;height:30px;flex-shrink:0;border:1px solid var(--bd);border-radius:8px;background:transparent;color:var(--tx);opacity:.65;font-size:14px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .12s}
.modal-x:hover{opacity:1;border-color:var(--brand);color:var(--brand)}
.scale-sec{border:1px solid var(--bd);border-radius:12px;padding:14px 18px;margin-top:14px;background:var(--card-bg)}
.scale-sec.bottom{border-style:dashed}
.scale-sec-h{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px;padding-bottom:8px;border-bottom:1px solid var(--bd)}
.scale-sec-h b{font-size:14px}
.ding-sel{margin-left:auto;min-width:230px}
.ding-sel.sm{min-width:180px;margin-left:0}
.ding-sel.sm:first-of-type{margin-left:auto}
.note-picked.mut{background:var(--thead-bg);color:var(--tx-faint);font-weight:400}
.name-auto{padding:9px 12px;border:1px dashed var(--bd-strong);border-radius:8px;background:var(--thead-bg);font-weight:600;font-size:14px;min-height:38px;display:flex;align-items:center}
.name-auto.mut{color:var(--tx-faint);font-weight:400}

/* ===== 排单系统 + 调音师月历（v0.13.0，Leo 定版） ===== */
/* 排单弹窗 */
.sched-tbl select{width:100%;padding:7px 10px;border:1px solid var(--bd);border-radius:9px;background:var(--card-bg,#fff);font-size:13px;color:var(--tx)}
.sched-tbl select:disabled{background:var(--brand-soft);color:var(--tx-faint);cursor:not-allowed}
.sched-tbl td{vertical-align:middle}
/* 调音师月历：铺满全屏 */
.cal-page{display:flex;flex-direction:column;min-height:calc(100vh - 132px)}   /* v0.14.0：格高×3 后页面自然滚动 */
.cal-head{display:flex;align-items:center;gap:10px;margin-bottom:10px;flex-wrap:wrap}
.cal-head h2{margin:0}
/* v0.15.25（Leo 图1）：月历三种碟色图例说明条 */
.cal-legend{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 8px;font-size:12px;color:var(--tx-mut)}
.cal-legend .lg-i{display:inline-flex;align-items:center;padding:2px 10px;border-radius:7px;font-size:11.5px;font-weight:600;border:1px solid transparent}
.cal-legend .lg-order{background:var(--brand-soft);border-color:var(--bd);color:var(--tx)}
.cal-legend .lg-cust{background:#F3EEFD;border-color:#C9B6F0;color:#5B3FA8}
.cal-legend .lg-done{background:#EDF7F0;border-color:#BFE0C9;color:#1C7A55}
.cal-legend .hint{font-size:11.5px}
.cal-dow{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-bottom:6px}
.cal-dow span{text-align:center;font-size:12px;font-weight:700;color:var(--tx-mut);letter-spacing:.1em;padding:4px 0}
.cal-grid{flex:1;display:grid;grid-template-columns:repeat(7,1fr);grid-template-rows:repeat(6,minmax(420px,auto));gap:6px;min-height:0}   /* v0.14.0 格高 139.8→420px（实测三倍，Leo 定版） */
.cal-cell{background:var(--card-bg,#fff);border:1px solid var(--bd);border-radius:12px;padding:6px;display:flex;flex-direction:column;min-height:0;overflow:hidden}
.cal-cell.dim{opacity:.42}
.cal-cell.wknd{background:var(--brand-soft)}
.cal-cell.today{border-color:var(--brand);box-shadow:0 0 0 2px var(--brand-soft)}
.cal-date{display:flex;align-items:center;justify-content:space-between;font-size:12.5px;font-weight:700;color:var(--tx);margin-bottom:4px;flex:none}
.cal-cap{font-size:11px;color:var(--tx-mut);font-weight:400}
.cal-units{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:4px;min-height:0}
.cal-unit{border:1px solid var(--bd);background:var(--brand-soft);border-radius:8px;padding:4px 7px;font-size:11.5px;line-height:1.45;cursor:pointer;transition:.15s;flex:none}
.cal-unit:hover{border-color:var(--brand);transform:translateY(-1px)}
.cal-unit.done{background:#EDF7F0;border-color:#BFE0C9;cursor:default}   /* v0.15.20（Leo 图1）：完工不虚显不删除线——绿色全显+✓标，内容完整可读 */
.cal-done-mark{color:#1C7A55;font-weight:900;margin-right:2px}
/* v0.15.26（Leo 图1）：碟阶段文字标——粗调/精调/通过/报废/N次（状态用文字表达，颜色仅点缀） */
.qc-stage{display:inline-block;font-style:normal;font-size:10px;font-weight:700;line-height:1.3;padding:1px 5px;border-radius:5px;margin-right:3px;vertical-align:1px;white-space:nowrap}
.qs-rough{background:#EEF1F6;color:#5A6B85}
.qs-fine{background:#EAF2FF;color:#1B5FD9}
.qs-pass{background:#E8F4EE;color:#1C7A55}
.qs-repair{background:#FDF3E3;color:#A96F12}
/* v0.15.49（Leo 定版）：调音四确认阶段标 */
.qs-rough_wait{background:#EEF1F6;color:#5A6B85}
.qs-rough_doing{background:#FDF3E3;color:#A96F12}
.qs-assemble_wait{background:#F3EEFA;color:#7A4FB5}
.qs-fine_wait{background:#EAF2FF;color:#1B5FD9}
.qs-fine_doing{background:#FDF3E3;color:#A96F12}
.qs-done{background:#E8F4EE;color:#1C7A55}
/* v0.15.49：四确认弹窗阶段时间线 */
.ts-timeline{display:grid;grid-template-columns:repeat(2,1fr);gap:7px;margin:10px 0 12px}
.ts-tl-item{display:flex;flex-direction:column;gap:2px;padding:8px 12px;border-radius:9px;border:1px dashed var(--bd);background:var(--page-bg,#F6F8FB)}
.ts-tl-item i{font-style:normal;font-size:11px;color:var(--tx-faint);font-weight:600}
.ts-tl-item b{font-size:12.5px;color:var(--tx-mut);font-variant-numeric:tabular-nums}
.ts-tl-item.on{border:1px solid var(--green,#2A9D8F);background:#E8F4EE}
.ts-tl-item.on i{color:#1C7A55}
.ts-tl-item.on b{color:#1C7A55}
/* v0.15.49（Leo 定版）：工序月历——落库任务（合壳，可完工）与推导参考项（打标等，只读） */
.cal-unit.proc-task{border-color:#B98A2A;background:linear-gradient(180deg,#FFFDF6,#FBF4E2);cursor:pointer}
.cal-unit.proc-task:hover{box-shadow:0 3px 10px rgba(184,138,42,.22);transform:translateY(-1px)}
.cal-unit.proc-task.done{opacity:.72;cursor:default}
.cal-unit.proc-ref{border-style:dashed;background:transparent;cursor:default;opacity:.8}
.qs-scrap{background:#FDECEA;color:#B03A2E}
/* v0.15.27（Leo 六图）：生产日历工序行定制 */
.mx-sub{font-size:10.5px;color:var(--tx-mut);margin-top:1px;display:flex;align-items:center;gap:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mx-l1{font-size:11.5px;font-weight:600;color:var(--tx)}
.mx-mark-has{color:#1C7A55;font-weight:600}
/* v0.15.27（Leo 图5）：打标/下壳信息弹窗 */
.mark-grid{display:flex;gap:14px;align-items:flex-start}
.mark-imgbox{width:132px;flex:none;display:flex;flex-direction:column;gap:6px;align-items:center}
.mark-imgbox img{width:132px;height:132px;object-fit:cover;border-radius:10px;border:1px solid var(--bd,#E4EAF4)}
.mark-imgbox .mut{width:132px;height:132px;display:flex;align-items:center;justify-content:center;border:1px dashed var(--bd,#E4EAF4);border-radius:10px;font-size:12px}
.cal-unit b{display:block;font-size:12px;color:var(--tx)}
.cal-unit .hz{color:var(--tx-mut)}

/* 法定节假日/倒休水印（v0.13.04，Leo 定版：阴影水印倾斜放置；数据自动采集免设置） */
.cal-cell{position:relative}
.cal-cell.holi{background:rgba(231,76,60,.055)}
.cal-cell.adjw{background:rgba(43,127,255,.05)}
.cal-wm{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  transform:rotate(-24deg);font-size:19px;font-weight:900;letter-spacing:.22em;text-indent:.22em;
  color:rgba(220,60,48,.17);pointer-events:none;white-space:nowrap;user-select:none;z-index:0}
.cal-wm.adj{color:rgba(43,127,255,.16);font-size:16px}
.cal-date,.cal-units{position:relative;z-index:1}

/* v0.14.0 排单扩展：返回钮 / 分配弹窗 / 难度徽标 */
.cal-back{margin-bottom:14px}
.back-pill{display:inline-flex;align-items:center;gap:7px;padding:8px 18px 8px 14px;border-radius:999px;
  border:1px solid var(--bd);background:var(--card-bg,#fff);color:var(--tx);font-size:13.5px;font-weight:700;cursor:pointer;
  box-shadow:0 2px 8px rgba(30,45,80,.06);transition:.18s}
.back-pill:hover{border-color:var(--brand);color:var(--brand-d);transform:translateX(-3px);box-shadow:0 6px 16px rgba(30,45,80,.10)}
.back-pill::first-letter{font-size:17px;line-height:1}
.cal-cell.mgr{cursor:pointer}
.cal-cell.mgr:hover{border-color:var(--brand);box-shadow:inset 0 0 0 1px var(--brand)}
.assign-row{display:flex;align-items:center;gap:10px;padding:9px 12px;border:1px solid var(--bd);border-radius:10px;cursor:pointer;transition:.15s;background:var(--card-bg,#fff)}
.assign-row:hover{border-color:var(--brand)}
.assign-row.on{border-color:var(--brand);background:var(--brand-soft)}
.assign-row.off{opacity:.45;cursor:not-allowed}
.assign-row input{flex:none}
.assign-row .hint{margin-left:auto}
.assign-row .chip{flex:none;margin-left:8px}
/* 制作难度三色（v0.14.0 Leo 定版：低端/标准/高端） */
.diff-sel{padding:4px 6px;border-radius:999px;border:1px solid var(--bd);font-size:12px;font-weight:700;background:var(--card-bg,#fff);cursor:pointer;max-width:100%}   /* v0.15.97：左右内边 9→6，给原生下拉箭头让位 */
.scale-tbl td.diff-td{text-overflow:clip}   /* v0.15.97（Leo 图1「依然出现了…」）：难度 select 截断出横向滚动，绝不出省略号 */
.diff-low{color:#1a7f4b;border-color:rgba(26,127,75,.45)}
.diff-std{color:#8a6d1f;border-color:rgba(184,145,47,.5)}
.diff-high{color:#b03a2e;border-color:rgba(176,58,46,.45)}
.chip.diff-low{color:#1a7f4b;border-color:rgba(26,127,75,.45)}
.chip.diff-std{color:#8a6d1f;border-color:rgba(184,145,47,.5)}
.chip.diff-high{color:#b03a2e;border-color:rgba(176,58,46,.45)}

/* 可调调式库弹窗（v0.14.03 Leo 定版：表格双按钮立即生效 + 难度整批） */
.tlib-status{flex:none;display:flex;align-items:center;gap:8px;padding:9px 14px;margin-bottom:10px;border-radius:11px;
  border:1px solid rgba(26,127,75,.4);background:rgba(26,127,75,.06);font-size:13px}
.tlib-status.untouched{border-color:var(--bd);background:var(--brand-soft);color:var(--tx-mut)}
.tlib-batch{flex:none;display:flex;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.tlib-batch-row{display:flex;align-items:center;gap:7px;padding:7px 11px;border:1px solid var(--bd);border-radius:11px;background:var(--card-bg,#fff)}
.tlib-filter{flex:none;display:flex;gap:8px;align-items:center;margin-bottom:10px}
.tlib-filter select,.tlib-filter input{padding:7px 11px;border:1px solid var(--bd);border-radius:9px;font-size:13px;background:var(--card-bg,#fff);color:var(--tx)}
.tlib-filter input{flex:1;min-width:120px}
.tlib-tbl thead th{position:sticky;top:0;background:var(--card-bg,#fff);z-index:2;box-shadow:0 1px 0 var(--bd)}
.tlib-state{font-weight:700;font-size:12.5px}
.tlib-state.ok{color:#1a7f4b}
.tlib-state.no{color:#b03a2e}
.tlib-state .tlib-src{font-weight:400;color:var(--tx-mut);font-style:normal}
.prod-btn{padding:5px 11px;border-radius:999px;border:1px solid var(--bd);background:var(--card-bg,#fff);
  font-size:12.5px;font-weight:700;cursor:pointer;transition:.15s;color:var(--tx-mut)}
.prod-btn:hover{border-color:var(--brand)}
.prod-btn.yes.on{background:#1a7f4b;border-color:#1a7f4b;color:#fff}
.prod-btn.no.on{background:#b03a2e;border-color:#b03a2e;color:#fff}
.prod-btn:disabled{opacity:.5;cursor:default}
.prod-btn + .prod-btn{margin-left:6px}

/* ===== v0.14.04（Leo 圈定四连）===== */
/* 状态圆点（弹窗状态列+难度档统计共用） */
.dot-yes,.dot-no,.dot-mix{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px;vertical-align:0}
.dot-yes{background:#1a7f4b;box-shadow:0 0 0 3px rgba(26,127,75,.15)}
.dot-no{background:#b03a2e;box-shadow:0 0 0 3px rgba(176,58,46,.13)}
.dot-mix{background:#b8912f;box-shadow:0 0 0 3px rgba(184,145,47,.16)}
/* 难度档当前状态数字（④：一眼看出该档能不能生产） */
.tlib-dstat{font-size:12.5px;font-weight:800;padding:3px 10px;border-radius:999px;white-space:nowrap}
.tlib-dstat.all-yes{color:#1a7f4b;background:rgba(26,127,75,.10)}
.tlib-dstat.all-no{color:#b03a2e;background:rgba(176,58,46,.09)}
.tlib-dstat.mixed{color:#8a6d1f;background:rgba(184,145,47,.12)}
/* 弹窗表格底色修正：白底浅灰斑马纹（去掉偏黄的旧底） */
.tlib-tbl tbody tr:nth-child(even){background:rgba(240,244,250,.55)}
/* v0.21.03（Leo）：删除 .tlib-tbl 行 hover 变色（全栈统一） */
/* ② 月历颜色样本：小圆图 + 悬停放大浮层 */
.cal-color{position:relative;cursor:zoom-in}
.cal-color-thumb{width:16px;height:16px;border-radius:50%;object-fit:cover;vertical-align:-3px;margin-right:2px;border:1px solid var(--bd)}
.cal-color-pop{display:none;position:absolute;bottom:calc(100% + 8px);left:-6px;z-index:60;
  background:#fff;border:1px solid var(--bd);border-radius:12px;padding:8px;
  box-shadow:0 12px 34px rgba(20,40,80,.20);flex-direction:column;gap:5px;align-items:center;pointer-events:none}
.cal-color:hover .cal-color-pop{display:flex}
.cal-color-pop img{width:150px;height:150px;object-fit:cover;border-radius:9px}
.cal-color-pop i{font-style:normal;font-size:12px;font-weight:700;color:var(--tx);white-space:nowrap}
/* v0.15.20（Leo 图1）：fixed 定位颜色大图——逃出日格 overflow 裁剪，完整显示 */
.cal-color-popfix{position:fixed;z-index:1200;background:#fff;border:1px solid var(--bd);border-radius:12px;padding:8px;box-shadow:0 12px 34px rgba(20,40,80,.24);display:flex;flex-direction:column;gap:5px;align-items:center;pointer-events:none}
.cal-color-popfix img{width:150px;height:150px;object-fit:cover;border-radius:9px;display:block}
.cal-color-popfix i{font-style:normal;font-size:12px;font-weight:700;color:var(--tx);white-space:nowrap}

/* 斑马纹修正：旧规则设在 td 上（--thead-bg 偏黄），弹窗表格在 td 层级覆盖为浅蓝灰 */
.tlib-tbl tbody tr:nth-child(even) td{background:rgba(240,244,250,.55)}
/* v0.21.03（Leo）：.tlib-tbl td 层 hover 同步删除 */

/* ===== v0.14.05（Leo 定版：自动排单+紧急排单+调音日历）===== */
/* 自动排单按钮组 */
.sug-bar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:9px 12px;margin-bottom:12px;
  border:1px dashed var(--bd);border-radius:12px;background:var(--brand-soft)}
.sug-t{font-size:12.5px;font-weight:800;color:var(--tx-mut);letter-spacing:.06em;margin-right:2px}
.sug-btn{padding:5px 12px;border-radius:999px;border:1px solid var(--bd);background:var(--card-bg,#fff);
  font-size:12.5px;font-weight:700;cursor:pointer;transition:.15s;color:var(--tx)}
.sug-btn:hover{border-color:var(--brand);transform:translateY(-1px)}
.sug-btn.pick{border-color:var(--brand);color:var(--brand-d)}
.sug-btn:disabled{opacity:.5;cursor:default;transform:none}
/* 行内调音师选择+🗓钮 */
.tuner-pick{display:flex;gap:6px;align-items:center}
.tuner-pick select{flex:1}
.cal-mini-btn{flex:none;width:34px;height:34px;border-radius:9px;border:1px solid var(--bd);background:var(--card-bg,#fff);cursor:pointer;font-size:15px;transition:.15s}
.cal-mini-btn:hover{border-color:var(--brand);background:var(--brand-soft)}
/* 调音师迷你日历（子弹窗） */
.mini-cal{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}
.mini-cell{border:1px solid var(--bd);border-radius:9px;padding:5px 6px;min-height:74px;font-size:11px;background:var(--card-bg,#fff)}
.mini-cell.dim{opacity:.4}
.mini-cell.busy{border-color:rgba(43,127,255,.45);background:rgba(43,127,255,.05)}
.mini-day{font-weight:800;font-size:12px;display:flex;justify-content:space-between;align-items:center}
.mini-n{background:var(--brand);color:#fff;border-radius:999px;padding:0 6px;font-size:10.5px;line-height:16px}
.mini-task{margin-top:2px;padding:1px 5px;border-radius:5px;background:var(--brand-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mini-more{color:var(--tx-mut);margin-top:2px}
/* 指定调音师子弹窗 */
.pick-row{display:flex;align-items:center;gap:10px;padding:9px 12px;border:1px solid var(--bd);border-radius:10px;margin-bottom:7px;cursor:pointer;background:var(--card-bg,#fff)}
.pick-row:hover{border-color:var(--brand)}
.pick-row .hint{margin-left:auto}
/* 紧急排单标志 */
.urg-txt{color:#b03a2e;font-weight:800}
.urg-flag{display:inline-block;background:#b03a2e;color:#fff;font-size:10.5px;font-weight:800;border-radius:5px;padding:0 5px;line-height:16px;margin-left:6px;vertical-align:1px}
.urg-flag.sm{margin:0 3px 0 0;padding:0 4px}
tr.urgent td{background:rgba(176,58,46,.05)!important}
.urg-pend-tag{font-style:normal;color:#b03a2e;font-size:10px;font-weight:800;margin-left:5px}
/* 调音师月历：紧急任务样式 */
.cal-unit.urgpend{border:1.5px dashed #b03a2e;background:rgba(176,58,46,.07)}
.cal-unit.urgok{border-left:3px solid #b03a2e}
/* CEO 调音日历：待确认横幅 */
.urg-board{flex:none;border:1.5px solid rgba(176,58,46,.5);background:rgba(176,58,46,.06);border-radius:12px;padding:10px 14px;margin-bottom:10px}
.urg-board>b{color:#b03a2e}
.urg-row{display:flex;align-items:center;gap:9px;padding:7px 0;border-top:1px dashed rgba(176,58,46,.25);font-size:13px;flex-wrap:wrap}
.urg-row:first-of-type{border-top:none}
/* CEO 调音日历：日格调音师分块 */
.board-tuner{border:1px solid var(--bd);border-radius:8px;padding:3px 6px;background:var(--card-bg,#fff)}
.board-tuner-h{font-size:11.5px;font-weight:800;display:flex;justify-content:space-between;align-items:center}
.board-task{font-size:11px;padding:1px 5px;border-radius:5px;background:var(--brand-soft);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.board-task.pend{background:rgba(176,58,46,.10);border:1px dashed rgba(176,58,46,.5)}
.board-task.pend i{color:#b03a2e;font-style:normal;font-weight:800;margin-left:4px}
.board-task.urg{border-left:2px solid #b03a2e}
/* v0.14.29：赫兹随调式名（同行空一点距离）；日历任务条带颜色 */
.hz-inline{font-weight:600;color:var(--tx-mut);font-size:.92em;margin-left:7px}
.board-color{display:block;color:var(--tx-mut);font-size:.95em;margin-top:1px;position:relative}

/* ===== v0.14.07 排单弹窗精致化（Leo 圈定：更漂亮、按钮大气、图标漂亮） ===== */
.sched-modal{width:960px;max-width:97vw;max-height:92vh;overflow:auto;padding:22px 26px}
.sched-modal .modal-h h3{font-size:19px;letter-spacing:.01em}
.sched-modal .tip{margin-bottom:14px}
/* 自动排单面板 */
.sug-panel{border:1px solid var(--bd);border-radius:16px;padding:14px 16px 12px;margin-bottom:16px;
  background:linear-gradient(180deg, rgba(43,127,255,.055), rgba(43,127,255,.015) 60%, transparent);
  box-shadow:0 2px 12px rgba(30,45,80,.05)}
.sug-panel-h{display:flex;align-items:baseline;gap:12px;margin-bottom:11px}
.sug-panel-t{font-size:15.5px;font-weight:900;letter-spacing:.03em;color:var(--tx)}
.sug-rows{display:flex;flex-direction:column;gap:9px}
.sug-row{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.sug-g{flex:none;width:44px;font-size:11.5px;font-weight:800;color:var(--tx-mut);letter-spacing:.08em}
/* 大气按钮：主策略=渐变彩色（图标+名称+说明三行） */
.sug-btn2{display:flex;align-items:center;gap:9px;border-radius:13px;cursor:pointer;transition:.18s;
  border:1px solid transparent;font-family:inherit;text-align:left}
.sug-btn2 i{font-style:normal;font-size:19px;line-height:1;filter:drop-shadow(0 1px 1px rgba(0,0,0,.12))}
.sug-btn2 span{font-size:13.5px;font-weight:800;white-space:nowrap}
.sug-btn2 em{font-style:normal;font-size:11px;font-weight:400;opacity:.82;white-space:nowrap}
.sug-btn2.main{flex-direction:row;padding:10px 16px;color:#fff;box-shadow:0 3px 10px rgba(30,45,80,.16)}
.sug-btn2.main.blue{background:linear-gradient(135deg,#3B8BFF,#1E6AE1)}
.sug-btn2.main.green{background:linear-gradient(135deg,#2BB673,#1A7F4B)}
.sug-btn2.main.purple{background:linear-gradient(135deg,#9F7CFF,#7C3AED)}
.sug-btn2.main em{margin-left:2px}
.sug-btn2.main:hover{transform:translateY(-2px);box-shadow:0 7px 18px rgba(30,45,80,.22)}
.sug-btn2.combo{padding:9px 15px;background:var(--card-bg,#fff);border-color:var(--bd);color:var(--tx)}
.sug-btn2.combo i{font-size:15px}
.sug-btn2.combo span{font-size:12.5px}
.sug-btn2.combo:hover{border-color:var(--brand);transform:translateY(-2px);box-shadow:0 5px 14px rgba(30,45,80,.12)}
.sug-btn2.combo.all{border-color:rgba(124,58,237,.5);background:rgba(124,58,237,.06)}
.sug-btn2.gold{padding:10px 16px;background:linear-gradient(135deg,#E7B84C,#C9962E);color:#fff;box-shadow:0 3px 10px rgba(160,120,30,.22)}
.sug-btn2.gold:hover{transform:translateY(-2px);box-shadow:0 7px 18px rgba(160,120,30,.30)}
.sug-btn2:disabled{opacity:.45;cursor:default;transform:none!important;box-shadow:none}
/* 底部操作栏 */
.sched-foot{display:flex;align-items:center;gap:12px;margin-top:16px;padding-top:14px;border-top:1px dashed var(--bd)}
.btn.big{padding:11px 26px;font-size:14.5px;border-radius:12px}
.urg-warn{margin-left:auto;font-size:13px;font-weight:700;color:#b03a2e;background:rgba(176,58,46,.08);
  border:1px solid rgba(176,58,46,.35);border-radius:10px;padding:7px 12px}

/* ===== v0.14.10（Leo 圈定三连） ===== */
/* ④ 月历宽屏模式：隐藏侧栏，日格更宽 */
body.cal-wide .sidemenu{display:none}
body.cal-wide .cal-page{max-width:none}
body.cal-wide .cal-cell{padding:8px}
/* ① 排单弹窗配色收敛：放弃多彩渐变，统一品牌蓝（克制=档次） */
.sug-panel{background:var(--card-bg,#fff);box-shadow:0 2px 10px rgba(30,45,80,.05)}
.sug-btn2.main{background:var(--card-bg,#fff);border:1.5px solid var(--brand);color:var(--brand-d);box-shadow:none}
.sug-btn2.main.blue,.sug-btn2.main.green,.sug-btn2.main.purple{background:var(--card-bg,#fff)}
.sug-btn2.main i{color:var(--brand)}
.sug-btn2.main em{color:var(--tx-mut);opacity:1}
.sug-btn2.main:hover{background:var(--brand);color:#fff;transform:translateY(-2px);box-shadow:0 6px 16px rgba(43,127,255,.28)}
.sug-btn2.main:hover i{color:#fff}
.sug-btn2.main:hover em{color:rgba(255,255,255,.85)}
.sug-btn2.combo{background:var(--brand-soft);border-color:transparent;color:var(--tx)}
.sug-btn2.combo:hover{border-color:var(--brand);box-shadow:0 4px 12px rgba(30,45,80,.10)}
.sug-btn2.combo.all{background:rgba(43,127,255,.12);border-color:var(--brand)}
.sug-btn2.gold{background:var(--card-bg,#fff);border:1.5px solid #C9962E;color:#8a6d1f;box-shadow:none}
.sug-btn2.gold:hover{background:rgba(201,150,46,.10);transform:translateY(-2px);box-shadow:0 6px 16px rgba(160,120,30,.20)}
/* 紧急行：整行红底 → 左红边线（去颜色噪音） */
tr.urgent td{background:transparent!important}
tr.urgent td:first-child{border-left:3px solid #b03a2e}

/* 宽屏放开内容区限宽（#main 默认 max-width:1200px） */
body.cal-wide #main{max-width:none;padding-left:26px;padding-right:26px}

/* 宽屏真正生效：登录后主容器是 .content（限宽 calc(100vw-200px)），非 #main */
body.cal-wide .content{max-width:none}

/* 同比/环比涨跌徽标（v0.14.15，中国习惯：涨=红 跌=绿） */
.g-badge{display:inline-block;padding:3px 10px;border-radius:999px;font-size:12.5px;font-weight:700;background:var(--brand-soft);color:var(--tx-mut)}
.g-badge.g-up{background:rgba(220,60,48,.12);color:#c0392b}
.g-badge.g-down{background:rgba(26,127,75,.12);color:#1a7f4b}
.bar-g:hover rect{opacity:1}

/* ===== 数据分析顶级排版（v0.14.18，Leo 定版；v0.14.24 五卡分块美化） ===== */
/* 数字单位（120 笔 的「笔」） */
.num-unit{font-size:15px;font-weight:600;color:var(--tx-mut)}
/* 同比/环比卡：标题 → 个数块 → 金额块（虚线分隔） */
.grow-card{text-align:left;padding:16px 20px !important;display:flex;flex-direction:column}
.grow-card .lbl{margin-bottom:6px;font-size:13.5px}
.grow-blk{padding:7px 0}
.grow-blk+.grow-blk{border-top:1px dashed var(--bd)}
.grow-k{font-size:12px;color:var(--tx-mut);font-weight:600;letter-spacing:.05em;margin-bottom:3px}
.grow-line{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.grow-num{font-size:26px;font-weight:800;line-height:1.1}
.grow-amt{font-size:19px;font-weight:700;color:var(--tx)}
.grow-vs{font-size:12.5px;color:var(--tx-mut);margin-top:3px}
.grow-vs b{color:var(--tx);font-weight:700}
/* 大气分段控件（个数/金额、年/季/月） */
.segbar{display:flex;align-items:center;gap:16px;padding:12px 18px}
.segbar.big{padding:16px 22px;gap:20px}
.segbar-t{font-size:16px;font-weight:800}
.segbar.big .seg-btn{padding:10px 26px;font-size:14px}
/* v0.17.32 期间选择器：导航区右置+窄屏换行 */
.ppick{flex-wrap:wrap}
.ppick-nav{display:flex;align-items:center;gap:10px;margin-left:auto}
.ppick-lab{min-width:118px;text-align:center;font-size:15px;color:#4A5568;white-space:nowrap}
/* v0.17.32 数据分析页汇总卡列数（原内联 repeat(N,1fr) 手机端不换行挤压——改类名由 mobile.css 响应式收拢） */
.kpi-cols-4{grid-template-columns:repeat(4,1fr)}
.kpi-cols-3{grid-template-columns:repeat(3,1fr)}   /* v0.18.29：采购总账同比环比三卡 */
.kpi-cols-5{grid-template-columns:repeat(5,1fr)}
.seg{display:inline-flex;background:var(--brand-soft);border:1px solid var(--bd);border-radius:12px;padding:4px;gap:4px}
.seg-btn{border:0;background:transparent;padding:9px 22px;border-radius:9px;font-size:13.5px;font-weight:700;color:var(--tx-mut);cursor:pointer;transition:.18s;letter-spacing:.02em}
.seg-btn:hover{color:var(--tx)}

/* ===== 调音师等级体系（v0.14.28，Leo 定版） ===== */
.lv-inp{width:56px;padding:3px 6px;border:1px solid var(--bd);border-radius:7px;text-align:center;font-weight:700;font-size:13px}
.chip.lv-probation{background:rgba(120,120,120,.14);color:#6b7280}
.chip.lv-junior{background:rgba(43,127,255,.12);color:#1e56c8}
.chip.lv-mid{background:rgba(26,127,75,.12);color:#1a7f4b}
.chip.lv-senior{background:rgba(220,140,20,.14);color:#b06a00}
.chip.lv-none{background:var(--brand-soft);color:var(--tx-mut)}
.chip.lv-manual{background:rgba(150,60,220,.13);color:#7c3aed}
.chip.lv-probation.on,.chip.lv-junior.on,.chip.lv-mid.on,.chip.lv-senior.on{outline:2px solid currentColor;font-weight:800}

/* 排行图例条（v0.14.29，Leo 圈定：原说明太不明显） */
.legend-bar{display:inline-flex;align-items:center;gap:12px;padding:5px 14px;border:1px solid var(--bd);border-radius:999px;background:var(--brand-soft);font-size:12.5px;font-weight:600}
/* v0.15.46（Leo 图6/图12）：标题统计徽章——实色不虚显（替代灰 hint 小字） */
.stat-tag{display:inline-flex;align-items:center;padding:3px 12px;border-radius:999px;background:var(--brand-soft);border:1px solid var(--bd);
  font-size:12.5px;font-weight:600;color:var(--brand-d);letter-spacing:.2px;vertical-align:2px;margin-left:6px}
/* v0.15.48（Leo 图4）：标题统计普通文字版式——实色粗字无框无底（不要按钮/徽章样式）；v0.15.87：stat-txt 随页头型号串一并下线；v0.15.91：sb-badge 随步骤卡徽章删除一并下线 */
.fld-sub{display:block;font-size:11px;color:var(--tx-faint);font-weight:400;margin-top:1px}
.sb-total{display:flex;align-items:center;gap:14px;background:linear-gradient(135deg,#FFF8E7,#FDF3E3);border:1px solid #F0C36D;border-radius:12px;padding:12px 20px;margin:14px 0 16px;flex-wrap:wrap}   /* v0.15.98（Leo 图1「间距留宽一点」）：上下外距 2/10→14/16，内边 9/16→12/20，元素间 12→14 */
.sb-total .v1{font-size:18px;font-weight:800;color:#A96F12}
.sb-total .v2{font-size:19px;font-weight:800;color:#c0392b}
.sb-total .fx{font-size:11.5px;color:#8a6d1a}
/* v0.15.57（Leo 定版）：卡内行式表单（label 左 / 输入框右，逐行）；v0.15.72 全栈整理：清除 sb-cols/pair/sb-unit/sb-sec 系死类 */
.sb-row{display:flex;align-items:center;gap:7px;margin-bottom:9px}
.sb-row>label{width:92px;flex-shrink:0;font-size:12px;font-weight:600;color:var(--tx-mut);text-align:right;line-height:1.25}
.sb-row>input{flex:1;min-width:0}
/* v0.15.59（Leo 七图定版）：弹窗 number 去增减按钮；单位后缀与 ¥ 前缀 */
.modal input[type=number]::-webkit-outer-spin-button,.modal input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.modal input[type=number]{-moz-appearance:textfield;appearance:textfield}
.sb-yen{position:relative;flex:1;min-width:0}
.sb-yen>i{position:absolute;left:9px;top:50%;transform:translateY(-50%);font-style:normal;font-size:12.5px;color:var(--tx-mut);pointer-events:none}
.sb-yen>input{width:100%;padding-left:24px}
/* v0.15.64（Leo 定版）：进货批次弹窗重做——纵向三步骤流程卡（对齐全栈审美） */
.sb-flow{display:flex;flex-direction:column}
.sb-step{background:#fff;border:1px solid var(--bd);border-left:3px solid var(--brand);border-radius:14px;padding:10px 16px 12px;box-shadow:0 2px 10px rgba(43,127,255,.05)}   /* v0.15.70：紧凑化（Leo「太长了」） */
.sb-step-h{display:flex;align-items:center;gap:9px;margin-bottom:8px}
.sb-no2{width:24px;height:24px;border-radius:50%;background:linear-gradient(135deg,#2b7fff,#1e56c8);color:#fff;font-size:13px;font-weight:800;display:inline-flex;align-items:center;justify-content:center;box-shadow:0 2px 6px rgba(43,127,255,.35);flex-shrink:0}
.sb-step-t{font-size:14px;font-weight:800;letter-spacing:.3px}
.sb-arrow{align-self:center;color:var(--brand);font-size:13px;line-height:1;padding:1px 0;opacity:.65}   /* v0.15.70：紧凑化 */
.sb-ctl{display:flex;align-items:center;gap:6px}
.sb-ctl input,.sb-ctl .sb-yen,.sb-ctl select{flex:1;min-width:0}   /* v0.15.80：行内 select（选壳）同占余宽 */
.sb-u{font-size:11.5px;color:var(--tx-mut);background:var(--page-bg,#F6F8FB);border:1px solid var(--bd);border-radius:999px;padding:3px 9px;white-space:nowrap;flex-shrink:0}
/* v0.15.69（Leo 图1 定版）：进货批次卡内逐行行式表单（label 左右对齐 / 输入框右，按标明序列） */
.sb-rows{max-width:560px}
.sb-rows .sb-row{display:flex;align-items:center;gap:7px;margin-bottom:6px}   /* v0.15.70：行距 9→6 紧凑化 */
.sb-rows .sb-row:last-child{margin-bottom:0}
.sb-rows .sb-row>label{width:96px;flex-shrink:0;font-size:12px;font-weight:600;color:var(--tx-mut);text-align:right;line-height:1.25}
.sb-rows .sb-row>.sb-ctl{flex:1;min-width:0}
/* v0.15.70（Leo「太长了·更漂亮」）：输入框紧凑 + 美化——静置浅底、hover 亮边、聚焦白底蓝环、金额等宽数字 */
.sb-rows .sb-ctl input{width:100%;border:1px solid #DDE6F3;border-radius:8px;padding:5px 10px;font-size:13.5px;background:#FCFDFF;color:var(--tx);font-variant-numeric:tabular-nums;transition:border-color .13s,box-shadow .13s,background .13s}   /* v0.15.70：完整定型（原仅 UA 默认边框） */
.sb-rows .sb-ctl input:hover{border-color:#B9CBE6}
.sb-rows .sb-ctl input:focus{border-color:var(--brand);background:#fff;box-shadow:0 0 0 3px rgba(43,127,255,.12);outline:none}
.sb-rows .sb-ctl .sb-yen>input{padding-left:26px}   /* v0.15.71（Leo 图2）：修 v0.15.70 padding 覆盖致 ¥ 图标压住金额首位——特异性补回 */
/* v0.15.70（Leo 图2）：进货批次对话框右栏「本批数据分析」面板 */
.sb-cols2{display:flex;gap:16px;align-items:flex-start}
.sb-main{flex:1;min-width:0}
.sb-an{width:322px;flex-shrink:0;border:1px solid var(--bd);border-radius:12px;background:linear-gradient(180deg,#FBFCFF,#F6F9FF);padding:14px 16px}
.sb-an-t{font-size:13.5px;font-weight:800;margin-bottom:6px}
.sb-an-sec{padding:11px 0;border-top:1px dashed var(--bd)}
.sb-an-sec:first-of-type{border-top:none;padding-top:4px}
.sb-an-k{font-size:11.5px;font-weight:700;color:var(--tx-mut);letter-spacing:.08em;margin-bottom:8px}
.sb-donut{display:block;margin:0 auto;width:132px}
.sb-donut-v{font-size:20px;font-weight:800;fill:var(--tx)}
.sb-donut-k{font-size:9.5px;fill:var(--tx-mut)}
.sb-bars{display:block;margin:0 auto;width:200px;max-width:100%}
.sb-bar-v{font-size:12px;font-weight:700;fill:var(--tx)}
.sb-bar-k{font-size:10.5px;fill:var(--tx-mut)}
.sb-an-sub{font-size:11.5px;color:var(--tx-mut);line-height:1.7;text-align:center;margin:6px 0 0}
.sb-unit-big{font-size:27px;font-weight:800;color:#c0392b;text-align:center;line-height:1.2}
.sb-unit-u{font-size:12px;font-weight:500;color:var(--tx-mut)}
.sb-comp{display:flex;height:10px;border-radius:99px;overflow:hidden;background:#EDF1F7;margin:10px 0 7px}
.sb-comp-lg{display:flex;flex-direction:column;gap:3px;font-size:11px;color:var(--tx-mut)}
.sb-comp-lg i{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:5px}
@media(max-width:900px){.sb-cols2{flex-direction:column}.sb-an{width:100%}}
/* v0.15.50（Leo 图2）：确认中心操作列按钮分隔 */
.aprv-acts{white-space:nowrap}
.aprv-acts .btn{margin-right:8px}
.aprv-acts .btn:last-child{margin-right:0}
.lg-item{display:inline-flex;align-items:center;gap:5px;color:var(--tx)}
.lg-chip{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:18px;padding:0 4px;border-radius:6px;font-size:11px;font-weight:800;font-style:normal}

/* 等级弹窗（v0.14.29 五连改版） */
.lv-hero{display:flex;align-items:center;gap:20px;flex-wrap:wrap;padding:14px 18px;border-radius:14px;background:linear-gradient(135deg,var(--brand-soft),rgba(43,127,255,.06));border:1px solid var(--bd);margin-bottom:12px}
/* v0.14.71 #14 临时等级点选后上方区域高亮脉冲（明显展示变化） */
.lv-hero-pending{border-color:var(--brand);animation:lvPendingPulse 1.3s ease-in-out infinite}
@keyframes lvPendingPulse{0%,100%{box-shadow:0 0 0 0 rgba(184,145,47,.0)}50%{box-shadow:0 0 0 7px rgba(184,145,47,.22)}}
.lv-pending-chip{background:var(--brand)!important;color:#fff!important;font-weight:700}
.lv-hero-k{font-size:12px;color:var(--tx-mut);font-weight:600;letter-spacing:.05em;margin-bottom:6px}
.lv-hero-v{display:flex;align-items:center;gap:10px}
.chip.lv-big{font-size:20px;font-weight:800;padding:8px 20px;border-radius:12px}
.emp-lv{font-weight:700;font-size:13px;padding:5px 14px}   /* v0.14.55 调音师卡当月即时等级（原位替换职位文案，Leo 定版） */
.emp-lv-tmp{font-size:11px;color:var(--amber);font-weight:600;margin-left:6px;vertical-align:middle}
.lv-hero-r{margin-left:auto;display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--tx-mut)}
.lv-auto-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:4px 0 10px}
.lv-manual-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:9px 14px;border:1px dashed rgba(150,60,220,.45);border-radius:10px;background:rgba(150,60,220,.05);margin-bottom:12px}
.lv-manual-lbl{font-weight:700;color:#7c3aed}
.lv-guide{border:1px solid var(--bd);border-radius:12px;padding:10px 14px;margin-bottom:14px;display:flex;flex-direction:column;gap:8px}
.lv-guide-row{display:flex;align-items:flex-start;gap:10px;font-size:12.5px;color:var(--tx-mut);line-height:1.5}
.lv-guide-row .chip{flex:none;margin-top:1px}

/* 三档产能输入（v0.14.29，Leo 圈定：要一目了然） */
.cap-tri{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.cap-cell{border:1.5px solid;border-radius:12px;padding:10px 12px;text-align:center}
.cap-cell .cap-lbl{display:block;font-size:12.5px;font-weight:800;margin-bottom:6px}
.cap-cell input{width:90px;text-align:center;font-size:18px;font-weight:800;padding:7px 10px}
.cap-low{border-color:rgba(26,127,75,.45);background:rgba(26,127,75,.05)}
.cap-low .cap-lbl{color:#1a7f4b}
.cap-std{border-color:rgba(184,145,47,.5);background:rgba(184,145,47,.06)}
.cap-std .cap-lbl{color:#8a6d1f}
.cap-high{border-color:rgba(176,58,46,.45);background:rgba(176,58,46,.05)}
.cap-high .cap-lbl{color:#b03a2e}

/* 排单规则卡（v0.14.30，Leo 圈定：很重要要特别醒目） */
.lead-rule-card{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:14px;padding:14px 20px;border-radius:14px;
  background:linear-gradient(120deg,rgba(232,179,57,.16),rgba(232,179,57,.05));border:2px solid rgba(217,158,20,.55);
  box-shadow:0 4px 18px rgba(217,158,20,.12)}
.lead-rule-main{display:flex;align-items:center;gap:10px}
.lead-rule-ico{font-size:20px}
.lead-rule-t{font-size:16px;font-weight:800}
.lead-rule-lbl{font-size:14px;font-weight:600}
.lead-rule-inp{width:64px;padding:7px 10px;border:2px solid rgba(217,158,20,.6);border-radius:10px;text-align:center;font-weight:800;font-size:18px;background:#fff}
.lead-rule-desc{font-size:13px;color:var(--tx)}
.lead-rule-card .btn{margin-left:auto}
/* 难度结构堆叠条（v0.14.30 调音师数据分析） */
.diff-stack{display:flex;height:30px;border-radius:9px;overflow:hidden;border:1px solid var(--bd);background:var(--brand-soft)}
.diff-stack.sm{height:14px;border-radius:5px}
.diff-stack span{display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:#fff;min-width:0;overflow:hidden;white-space:nowrap;transition:width .3s}
.diff-stack.sm span{font-size:0}
.ds-low{background:#1a7f4b}.ds-std{background:#c78a1b}.ds-high{background:#b03a2e}
.aprv-changed td{background:rgba(199,138,27,.08)}
/* 客户编辑弹窗卡片化（v0.14.30 Leo：照门户「我的信息」编号卡片逻辑） */
.modal-xl{width:min(1180px,96vw);max-width:min(1180px,96vw);max-height:92vh;overflow:auto}
/* v0.14.76 #2 等级弹窗美化：双信息卡 + 等级 2×2 说明卡 + 可选级大卡 */
.lv-info2{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:12px 0}
.lv-info-card{padding:10px 14px;border:1px solid var(--bd);border-radius:11px;background:var(--card-bg2,rgba(0,0,0,.02))}
.lv-info-card.lv-info-dim{opacity:.72}
.lv-info-k{font-size:11.5px;color:var(--tx-mut);font-weight:700;letter-spacing:.04em}
.lv-info-v{margin:5px 0 3px}
.lv-info-s{font-size:11.5px;color:var(--tx-mut);line-height:1.5}
.lv-guide2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.lv-g2-card{padding:10px 14px;border-radius:11px;border:1px solid var(--bd);border-left-width:4px}
.lv-g2-h{margin-bottom:4px}
.lv-g2-b{font-size:12px;color:var(--tx-mut);line-height:1.6}
.lv-g2-probation{border-left-color:#9aa5b1}
.lv-g2-junior{border-left-color:#4f9df7}
.lv-g2-mid{border-left-color:#b47ef0}
.lv-g2-senior{border-left-color:#e6b23c}
.lv-pick{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:6px}
.lv-pick-card{position:relative;display:flex;align-items:center;justify-content:center;padding:14px 8px;border:1.5px solid var(--bd);border-radius:12px;cursor:pointer;transition:all .15s;background:var(--card-bg2,rgba(0,0,0,.02))}
.lv-pick-card:hover{border-color:var(--brand)}
.lv-pick-card.on{border-color:var(--brand);background:var(--brand-soft);box-shadow:0 2px 10px rgba(43,127,255,.18)}
.lv-pick-check{position:absolute;top:4px;right:8px;font-weight:800;color:var(--brand-d);font-size:13px;min-height:16px}

/* v0.14.76 #14 我的考勤月历 */
.myatt-cell{min-height:74px}
/* v0.15.50（Leo 图12）：考勤月历弹窗加宽+格子紧凑——6 行月历+头部+请假单一屏放下，不出横竖滚动轴 */
.attcal-modal{max-height:96vh;overflow:hidden}
.attcal-modal .myatt-cell{min-height:52px}
.attcal-modal .cal-cell{padding:4px 5px}
.attcal-modal .cal-dow{font-size:11.5px}
.myatt-cell.markable{cursor:pointer}
.myatt-cell.markable:hover{outline:2px solid var(--brand-l,#8db8f7);outline-offset:-2px}
.myatt-cell.locked{cursor:default}
.myatt-marks{display:flex;flex-wrap:wrap;gap:3px;margin-top:4px}
.myatt-chip{font-size:10.5px;font-weight:700;padding:0 6px;border-radius:6px;line-height:17px}
.myatt-p{background:#e8f4ee;color:#1c7a55}
.myatt-l{background:#fdecea;color:#b03a2e}
.myatt-o{background:#fdf3e3;color:#a96f12}
.myatt-w{background:#fff3d6;color:#a96f12}   /* v0.14.89 迟到/早退 */
/* v0.14.89 考勤月历弹窗（员工管理内嵌版） */
.attcal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.attcal-dow{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:4px;font-size:11.5px;color:var(--hint);text-align:center}
.attcal-cell{border:1px solid var(--bd);border-radius:8px;min-height:62px;padding:4px 5px;font-size:12px;cursor:pointer;background:var(--card-bg)}
.attcal-cell:hover{outline:2px solid var(--brand-l,#8db8f7);outline-offset:-2px}
.attcal-cell.dim{opacity:.35;cursor:default}
.attcal-cell.dim:hover{outline:none}
.attcal-cell.wknd{background:rgba(120,130,150,.06)}
.attcal-cell.today{outline:2px solid var(--brand);outline-offset:-2px}
.attcal-cell.locked{cursor:default}
.attcal-cell.locked:hover{outline:none}
.attcal-date{font-weight:700;font-size:12.5px}
.lvc-row{display:flex;gap:10px;align-items:center;padding:8px 0;border-bottom:1px dashed var(--bd)}
.lvc-row:last-child{border-bottom:none}
.lvc-name{width:86px;font-weight:700;flex:none}
.lvc-note{flex:1;font-size:12px;color:var(--hint)}

/* v0.14.78 #4/#5 生产日历：工序行×日期列矩阵（左列冻结+今日列高亮+周末淡色） */
.mx-wrap{overflow-x:auto;border:1px solid var(--bd);border-radius:12px;background:#fff}
.mx-tbl{border-collapse:separate;border-spacing:0;width:100%;min-width:900px;table-layout:fixed}   /* v0.15.37（Leo 图1/2）：fixed 布局——每周列宽均分 */
.mx-tbl th,.mx-tbl td{border-bottom:1px solid var(--bd);border-right:1px solid var(--bd);padding:6px 8px;vertical-align:top}
.mx-tbl thead th{background:var(--brand-soft);font-size:12.5px;color:var(--tx-mut);font-weight:600;position:sticky;top:0;z-index:2}
.mx-tbl thead th i{display:block;font-style:normal;font-size:10.5px;color:var(--hint)}
.mx-tbl .mx-proc{position:sticky;left:0;background:#fff;z-index:1;width:96px;min-width:96px;text-align:left;border-right:2px solid var(--bd)}
.mx-tbl thead .mx-proc{background:var(--brand-soft);z-index:3}
.mx-tbl.mx-month{min-width:2976px}   /* v0.15.37：fixed 布局下月视图 30 列×96+工序列 96，撑开横滚后列仍均分 */
.mx-tbl td.wknd,.mx-tbl th.wknd{background:#faf7ee}
.mx-tbl td.today,.mx-tbl th.today{background:#e8f1ff;box-shadow:inset 0 0 0 2px #2b7fff55}
.mx-task{font-size:11.5px;line-height:1.35;padding:3px 7px;border-radius:7px;margin-bottom:4px;border-left:3px solid transparent;background:#f6f8fb;white-space:normal;overflow:visible}   /* v0.15.37（Leo 图1/2）：全部工序行文字整行显示——不截断不省略，列均分后自然舒展 */
.mx-task b{font-weight:600}
.mx-task .hz-inline{font-size:10px;color:var(--tx-mut);margin-left:2px}
.mx-task i{font-style:normal;color:var(--amber);font-size:10.5px}
.mx-task.pend{outline:1.5px dashed var(--amber);background:#fff8e8}
.mx-tune{background:#e3eeff;border-left-color:#1e56c8}
.mx-assemble{background:#e8e0fb;border-left-color:#5a3ec8}   /* v0.14.79 #6：合壳行 */
.mx-mark{background:#f0eafd;border-left-color:#6a4fd0}
.mx-bake{background:#fdeeea;border-left-color:#c2542a}
.mx-press{background:#e8f4ee;border-left-color:#1c7a55}
.mx-draw{background:#fdf3e3;border-left-color:#a96f12}
.mx-prep{background:#eef2f7;border-left-color:#5b6b7f}

/* v0.14.79 #5 人员多选弹窗（加班设定等通用）：搜索+部门分组 */
.spk-grp{margin-bottom:10px}
.spk-grp-h{display:flex;align-items:center;gap:8px;padding:4px 2px;border-bottom:1px dashed var(--bd);margin-bottom:6px}
.spk-grp-h a{margin-left:auto}
.spk-grp-bd{display:flex;flex-wrap:wrap;gap:6px}
.spk-item{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border:1px solid var(--bd);border-radius:999px;cursor:pointer;font-size:12.5px;user-select:none;background:#fff}
.spk-item input{margin:0}
.spk-item i{font-style:normal;font-size:10.5px;color:var(--hint)}
.spk-item.on{border-color:var(--brand);background:var(--brand-soft);font-weight:600}

/* v0.14.85 公开零售店 /shop/:org */
.pshop{max-width:1180px;margin:0 auto;padding:26px 22px 50px}
.pshop-hero{text-align:center;padding:28px 0 22px}
.pshop-hero h1{font-size:32px;margin-bottom:8px}
.pshop-hero p{color:var(--tx-mut);font-size:15px}
.pshop-banner{border-radius:12px;padding:12px 18px;margin-bottom:16px;font-size:14px;font-weight:500}
.pshop-banner.paid{background:#e8f7ee;color:#14663c;border:1px solid #bfe8cd}
.pshop-banner.cancel{background:#fdf3e3;color:#a96f12;border:1px solid #f0ddb0}
.pshop-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:18px}
.pshop-card{background:var(--card-bg);border:1px solid var(--bd);border-radius:14px;overflow:hidden;transition:box-shadow .2s,transform .15s}
.pshop-card:hover{box-shadow:0 8px 24px rgba(43,127,255,.12);transform:translateY(-2px)}
.pshop-img{height:190px;overflow:hidden;background:#f2f5fa}
.pshop-img img{width:100%;height:100%;object-fit:cover}
.pshop-body{padding:16px 16px 14px}
.pshop-body h3{font-size:16.5px;margin-bottom:4px}
.pshop-desc{font-size:13px;color:var(--tx-mut);margin:8px 0;min-height:36px}
.pshop-foot{display:flex;align-items:center;justify-content:space-between;margin:10px 0 12px}
.pshop-price{font-size:22px;color:var(--brand-d)}
.pshop-sum{display:flex;align-items:center;gap:8px;background:var(--brand-soft);border-radius:10px;padding:10px 14px;margin-bottom:12px;font-size:14px}

/* v0.14.84 企业采购平台卡 */
.pplat{border-top:3px solid var(--bd)}
.pplat-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}
.pplat-name{font-size:16px}
.pplat-sub{font-size:12px;margin-bottom:10px}
.pplat-cred{background:var(--brand-soft);border-radius:10px;padding:10px 12px}
.pplat-row{display:flex;align-items:center;gap:10px;padding:3px 0;font-size:13.5px}
.pplat-lbl{width:34px;color:var(--tx-mut);font-size:12px;flex-shrink:0}
.pplat-off{padding:18px 0 14px;text-align:center}
.pplat-off-ico{font-size:30px;opacity:.5;margin-bottom:6px}
.pplat-edit{margin-top:12px;padding-top:12px;border-top:1px dashed var(--bd)}

/* v0.14.83 #1 促销停用/删除确认弹窗（应用内美化） */
.cfm-body{text-align:center;padding:6px 0 14px}
.cfm-ico{font-size:38px;margin-bottom:8px}
.cfm-title{font-size:15px;font-weight:700;margin-bottom:4px}
.cfm-sub{font-size:12.5px;color:var(--tx-mut);margin-bottom:10px}
.cfm-body .tip{text-align:left}

/* v0.14.80 促销弹窗客户锁定行（销售从客户管理带入，不可换人） */
.promo-cust-lock{display:flex;align-items:center;gap:8px;padding:9px 12px;background:var(--brand-soft);border:1px solid #cfe4ff;border-radius:9px;font-size:13.5px}
.promo-cust-lock .hint{font-size:12px}

/* v0.14.78 #10 促销类型说明：一条一行 */
.promo-types-tip{line-height:1.9}
.promo-types-tip .ptt-row{display:block}

/* v0.14.78 #11/#12 运费页尺寸按钮组（撤下拉）；v0.15.43（Leo 图2）美化——胶囊造型+品牌蓝渐变选中 */
.size-btn-row{display:flex;flex-wrap:wrap;gap:10px;flex:1}
.size-fill-btn{display:inline-flex;align-items:center;justify-content:center;padding:10px 24px;border-radius:999px;
  border:1.5px solid var(--bd);background:linear-gradient(180deg,#FFFFFF 0%,#F4F8FE 100%);
  box-shadow:0 2px 6px rgba(20,40,80,.07), inset 0 1px 0 rgba(255,255,255,.85);
  cursor:pointer;transition:all .18s ease;font-family:inherit;user-select:none}
.size-fill-btn:hover{border-color:var(--brand);transform:translateY(-1px);box-shadow:0 5px 14px rgba(43,127,255,.20)}
.size-fill-btn:active{transform:translateY(0) scale(.97)}
.size-fill-btn b{font-size:14px;font-weight:600;color:var(--ink);letter-spacing:.3px;transition:color .18s}
.size-fill-btn.on{background:linear-gradient(135deg,var(--brand-l) 0%,var(--brand) 55%,var(--brand-d) 100%);
  border-color:var(--brand-d);box-shadow:0 5px 16px rgba(43,127,255,.38), inset 0 1px 0 rgba(255,255,255,.35)}
.size-fill-btn.on b{color:#fff}
.size-fill-btn.nobox{border-style:dashed}
.ro-dims{display:inline-flex;align-items:center;gap:4px;padding:6px 2px;font-variant-numeric:tabular-nums}   /* v0.16.46（Leo 图2「不要显示带颜色的输入背景框」）：去底色去边框，纯文字显示 */
.ro-dims b{font-size:13.5px}
.size-fill-btn.nobox{border-style:dashed}

/* v0.14.77 促销：门户下单页专属优惠横幅 + 促销优惠行 */
.promo-banner{background:linear-gradient(135deg,#f0f7ff 0%,#e8f4ee 100%);border:1px solid #cfe4ff}
.promo-banner h3{margin-bottom:8px}
.promo-banner-list{display:flex;flex-direction:column;gap:8px}   /* v0.15.51（Leo 图1）：一行一个内容——促销横幅横排改竖排 */
.promo-banner-item{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:500;padding:6px 12px;background:rgba(255,255,255,.65);border-radius:9px;border:1px solid rgba(207,228,255,.7)}
.sum-row.promo-off{background:#f2fbf5;border-radius:8px}
/* v0.14.77 订单详情促销快照卡 */
.promo-detail-card{margin-top:10px;border:1px solid #cdeedd;background:#f4fbf6;border-radius:10px;padding:10px 14px}
.promo-detail-card .pdc-h{font-weight:700;font-size:13.5px;margin-bottom:6px}
.promo-detail-card .pdc-row{display:flex;align-items:center;gap:8px;font-size:13px;padding:3px 0}
.promo-detail-card .pdc-row b{margin-left:auto}

/* v0.14.76 #9 可排序列头 */
.th-sort{cursor:pointer;user-select:none;white-space:nowrap}
.th-sort:hover{color:var(--brand-d)}

/* v0.14.76 #3 核算单弹窗：定高列布局，外层无滚动条，仅逐碟明细区内滚 */
.slip-modal{height:92vh;display:flex;flex-direction:column;overflow:hidden}
.slip-items{flex:1;min-height:0;display:flex;flex-direction:column}
.slip-items-scroll{flex:1;min-height:0;overflow:auto}
.edit-sec{box-shadow:none;border:1px solid var(--bd)}
.edit-sec h3{margin-bottom:10px}
.edit-sec-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media(max-width:1100px){.edit-sec-grid{grid-template-columns:1fr}}
/* 提成三级单价行内输入组（v0.14.31） */
.lv-price{display:inline-flex;align-items:center;gap:3px}
.lv-price i{font-style:normal;font-size:11px;color:var(--tx-mut);font-weight:700}
.lv-price .rate-in{width:86px}
.lv-price.sm .rate-in{width:64px}
/* 订单号单行显示（v0.14.48 Leo 定版：取消双行/多行折叠，编号 4 位化后单行展示不重复冗余） */
.ono{white-space:nowrap;font-variant-numeric:tabular-nums;letter-spacing:.2px}
.dt{white-space:nowrap;font-variant-numeric:tabular-nums}   /* v0.14.51 通用日期单元格：单行不换行（Leo 圈定：完成日期两行问题全站排查） */
td.ono{min-width:190px}
/* 共享分页条 v0.16.01：旧 .pager/.pager-sz/.pager-btn/.pager-info/.pager-sizes 样式已随 Pager 组件升级清除（统一走 674 行 .pager+.pg-btn 款） */
/* 我的等级英雄卡（v0.14.31 Leo：重排——渐变大卡+四级进度） */
.lvhero{display:flex;align-items:center;gap:28px;flex-wrap:wrap;padding:22px 28px;border-radius:18px;color:#fff;
  box-shadow:0 16px 40px rgba(15,23,42,.18);position:relative;overflow:hidden}
.lvhero::before{content:"";position:absolute;right:-60px;top:-60px;width:220px;height:220px;border-radius:50%;background:rgba(255,255,255,.10)}
.lvhero-probation{background:linear-gradient(120deg,#64748b,#94a3b8)}
.lvhero-junior{background:linear-gradient(120deg,#1a7f4b,#3aa76d)}
.lvhero-mid{background:linear-gradient(120deg,#b97c10,#d9a52e)}
.lvhero-senior{background:linear-gradient(120deg,#1e56c8,#2b7fff)}
.lvhero-none{background:linear-gradient(120deg,#94a3b8,#cbd5e1)}
.lvhero-cap{font-size:13px;opacity:.85;letter-spacing:.5px;margin-bottom:4px}
.lvhero-name{font-size:30px;font-weight:800;letter-spacing:1px;line-height:1.15}
.lvhero-sub{margin-top:8px;font-size:12.5px;opacity:.9}
.lvhero-tag{background:rgba(255,255,255,.22);border-radius:999px;padding:2px 10px;font-weight:700}
.lvhero-r{margin-left:auto}
.lvhero-steps{display:flex;align-items:center;gap:0}
.lvhero-step{display:flex;align-items:center;gap:6px;opacity:.45}
.lvhero-step+.lvhero-step{margin-left:14px;padding-left:14px;border-left:1px solid rgba(255,255,255,.35)}
.lvhero-step.on{opacity:1}
.lvhero-dot{width:12px;height:12px;border-radius:50%;background:rgba(255,255,255,.45);border:2px solid rgba(255,255,255,.8)}
.lvhero-step.cur .lvhero-dot{background:#fff;box-shadow:0 0 0 4px rgba(255,255,255,.28)}
.lvhero-step.cur .lvhero-lbl{font-weight:800}
.lvhero-lbl{font-size:13px}
/* 标准对比三栏面板 */
.std-panel .std-cap{font-size:13px;font-weight:800;color:var(--tx-mut);letter-spacing:.5px;margin-bottom:10px;
  padding-bottom:8px;border-bottom:1px dashed var(--bd)}
.std-row{display:flex;align-items:baseline;gap:10px;padding:7px 0;font-size:13.5px}
.std-row+.std-row{border-top:1px solid var(--bd)}
.std-row span{color:var(--tx-mut);flex:none;width:76px}
.std-row b{font-size:15px}
.std-mark{font-style:normal;font-size:11.5px;font-weight:800;margin-left:auto;padding:2px 8px;border-radius:999px}
.std-mark.ok{background:rgba(26,127,75,.12);color:#1a7f4b}
.std-mark.no{background:rgba(192,57,43,.12);color:#c0392b}
.std-gap{margin-top:10px;padding:8px 12px;border-radius:10px;background:rgba(43,127,255,.08);color:var(--brand-d);font-size:13px}
.std-gap.ok{background:rgba(26,127,75,.10);color:#1a7f4b}
.std-line{font-size:13.5px;line-height:1.8;margin:4px 0 0}
/* 平台编号徽标（v0.14.32 Leo 定版：Maker+国家缩写+顺序三位数） */
.org-no{display:inline-flex;align-items:center;padding:4px 12px;border-radius:9px;background:var(--brand-soft);
  color:var(--brand-d);font-weight:800;font-size:13.5px;letter-spacing:.5px;font-family:ui-monospace,Consolas,monospace}
.org-no.sm{padding:2px 8px;font-size:12px}
.org-hd{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:16px;
  padding-bottom:14px;border-bottom:1px solid var(--bd)}
.org-modal-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}
@media(max-width:1100px){.org-modal-grid{grid-template-columns:1fr}}
/* 系统级服务配置标识条（v0.14.32 Leo：整个系统一套，不随用户/订货商隔离） */
.sys-scope{display:flex;align-items:center;gap:10px;padding:10px 16px;margin-bottom:14px;border-radius:12px;
  background:linear-gradient(90deg,rgba(43,127,255,.10),rgba(43,127,255,.03));border:1px solid rgba(43,127,255,.25);
  font-size:13px;font-weight:600;color:var(--brand-d)}
/* 收支·开销分类堆叠柱图（v0.14.33 Leo 定版） */
.pnl-st{display:flex;align-items:flex-end;gap:26px;height:240px;padding:6px 8px 0}
.pnl-st-item{flex:1;display:flex;flex-direction:column;align-items:center;height:100%;justify-content:flex-end}   /* v0.15.46（Leo 图10）：点击跳改功能移除，cursor 还原 */
.pnl-st-item:hover .pnl-st-col{filter:brightness(1.08)}
.pnl-st-total{font-size:12.5px;font-weight:800;color:var(--tx);margin-bottom:5px}
.pnl-st-col{width:100%;max-width:64px;display:flex;flex-direction:column-reverse;border-radius:7px 7px 0 0;overflow:hidden;transition:filter .15s}
.pnl-st-col>div{width:100%}
.pnl-st-x{text-align:center;font-size:12px;color:var(--tx-mut);margin-top:7px}
tr.clickable{cursor:pointer}
tr.clickable:hover td{background:var(--brand-soft)}
/* 核算单 v0.14.37：汇总条 + 实发 hero + 逐碟明细 */
.slip-band{display:flex;align-items:center;gap:18px;flex-wrap:wrap;padding:10px 18px;margin-bottom:14px;
  background:var(--brand-soft);border:1px solid var(--bd);border-radius:12px;font-size:13px}
.slip-band b{font-size:15px}
.slip-band2{background:#fff;font-size:12.5px;margin-top:-6px}
.slip-money{display:flex;gap:14px;align-items:stretch;margin-bottom:14px;flex-wrap:wrap}
.slip-hero{flex:0 0 320px;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;
  padding:26px 20px;border-radius:16px;color:#fff;
  background:linear-gradient(150deg,var(--brand-l) 0%,var(--brand) 55%,var(--brand-d) 100%);
  box-shadow:0 14px 34px rgba(43,127,255,.32)}
.slip-hero-lbl{font-size:13px;opacity:.85;letter-spacing:2px}
.slip-hero-num{font-size:42px;font-weight:800;margin:8px 0 6px;text-shadow:0 2px 8px rgba(0,0,0,.18)}
.slip-hero-sub{font-size:12px;opacity:.82}
.slip-cols{flex:1;min-width:420px;display:grid;grid-template-columns:1fr 1fr;gap:14px}
.slip-tbl th,.slip-tbl td{font-size:12px;padding:5px 8px;white-space:nowrap}
.slip-tbl td:nth-child(8){white-space:normal;min-width:180px}
/* 上下班时间四格 + 考勤卡副标（v0.14.37） */
.wt-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.wt-cell{border:1px solid var(--bd);border-radius:10px;padding:8px 10px;background:var(--brand-soft)}
.wt-lbl{display:block;font-size:11.5px;color:var(--tx-mut);margin-bottom:4px}
.wt-cell input{width:100%;padding:5px 8px;border:1px solid var(--bd);border-radius:8px;font-size:13px;font-weight:600}
.att-sub{font-size:11.5px;color:var(--tx-mut);font-weight:400;margin-top:4px}
/* 顶栏模拟花名册（v0.14.47：分组全量，无搜索） */
.simpick-grp{margin-bottom:12px}
.simpick-grp-t{font-size:13px;font-weight:800;color:var(--tx);padding:4px 2px 8px;display:flex;align-items:baseline;gap:8px;position:sticky;top:0;background:var(--card-bg)}
.simpick-grid{display:grid;grid-template-columns:1fr 1fr;gap:4px}
.sim-tag-pick{cursor:pointer;user-select:none}
.sim-tag-pick:hover{outline:2px solid rgba(255,255,255,.55)}
.simpick-bar{padding:2px 0 10px}
.simpick-inp{width:100%;padding:10px 14px;border:1.5px solid var(--bd);border-radius:12px;font-size:14px}
.simpick-inp:focus{border-color:var(--brand);outline:none;box-shadow:0 0 0 3px rgba(43,127,255,.15)}
.simpick-list{max-height:380px;overflow:auto;display:flex;flex-direction:column;gap:4px}
.simpick-row{display:flex;align-items:center;gap:10px;padding:9px 12px;border:1px solid var(--bd);border-radius:10px;cursor:pointer;font-size:13px}
.simpick-row:hover{background:var(--brand-soft);border-color:var(--brand)}
.simpick-go{margin-left:auto;color:var(--brand);font-weight:700;font-size:12px;opacity:0;transition:opacity .12s}
.simpick-row:hover .simpick-go{opacity:1}
.sim-toplink{white-space:nowrap;cursor:pointer;font-size:12.5px;color:var(--brand);font-weight:700;padding:4px 10px;border-radius:8px;border:1px solid var(--brand);margin-right:10px}
.sim-toplink:hover{background:var(--brand);color:#fff}
.tsw-wrap{display:flex;flex-direction:column;height:calc(100vh - 118px);gap:8px}
.tsw-head{display:flex;align-items:center;gap:10px;padding:4px 2px;font-size:13.5px}
.tsw-frame{flex:1;width:100%;border:0;border-radius:14px;box-shadow:0 8px 30px rgba(21,86,153,.12);background:#eaf1f8;min-height:420px}
/* 采购平台内嵌登录页（v0.14.35 Leo 定版） */
.plat-frame{border:1px solid var(--bd);border-radius:12px;overflow:hidden;background:#fff}
.plat-frame iframe{display:block;width:100%;height:640px;border:0}
/* 加班倍率卡（v0.14.36 Leo：重排） */
.ot-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:8px}
@media(max-width:1100px){.ot-grid{grid-template-columns:1fr}}
.ot-card{border-radius:14px;padding:18px 20px;border:1.5px solid}
.ot-card.ot-wd{background:rgba(26,127,75,.06);border-color:rgba(26,127,75,.3)}
.ot-card.ot-we{background:rgba(199,138,27,.07);border-color:rgba(199,138,27,.35)}
.ot-card.ot-hd{background:rgba(176,58,46,.06);border-color:rgba(176,58,46,.3)}
.ot-cap{font-size:14.5px;font-weight:800;margin-bottom:10px}
.ot-wd .ot-cap{color:#1a7f4b}.ot-we .ot-cap{color:#a06f0f}.ot-hd .ot-cap{color:#b03a2e}
.ot-pct{display:flex;align-items:center;gap:8px}
.ot-pct input{width:90px;padding:8px 10px;border:1.5px solid var(--bd);border-radius:10px;font-size:18px;font-weight:800;text-align:center}
.ot-pct span{font-size:18px;font-weight:800;color:var(--tx-mut)}
.ot-pct-view{font-size:26px;font-weight:800;margin:8px 0 4px}
.ot-floor{font-size:12px;color:var(--tx-mut)}
.ot-ex{margin-top:10px;padding-top:8px;border-top:1px dashed var(--bd);font-size:12.5px;color:var(--tx-mut)}
/* 核算单四区格 */
.sheet-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media(max-width:800px){.sheet-grid{grid-template-columns:1fr}}
.sheet-sec{box-shadow:none;border:1px solid var(--bd);margin:0}
.sheet-sec h4{margin:0 0 6px;font-size:13.5px;color:var(--brand-d)}
/* v0.14.71 #13（Leo 圈定）：核算单 应发项目/扣缴与成本 改单行显示——原 span 定宽 76px 致「应发基本工资」折两行 */
.sheet-sec .std-row{justify-content:space-between;align-items:center}
.sheet-sec .std-row span{width:auto;white-space:nowrap}
.sheet-sec .std-row b{white-space:nowrap;text-align:right}
/* 音符定价页溢出修复（v0.14.36） */
.oct-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.lv-price.sm .rate-in{width:52px}
/* ===== v0.14.56 提成定价表重排（Leo 定版）：表头完整等级名 + 输入框撑满列宽 ===== */
.sp-lv-head{padding:2px 0 6px;border-bottom:1px solid var(--bd)}
.lv-head-cell{width:86px;flex-shrink:0;text-align:center;font-size:11.5px;color:var(--tx-mut);font-weight:700}
.oct-lv-head{display:grid;grid-template-columns:86px 1fr 1fr 1fr;gap:8px;padding:2px 0 6px;border-bottom:1px dashed var(--bd);margin-bottom:2px}
.oct-lv-head span:not(:first-child){text-align:center;font-size:11.5px;color:var(--tx-mut);font-weight:700}
.oct-grid.tuner-mode .oct-note{display:grid;grid-template-columns:86px 1fr 1fr 1fr;gap:8px}
.oct-grid.tuner-mode .oct-name{min-width:0}
.oct-grid.tuner-mode .lv-price{display:block;width:100%}
.oct-grid.tuner-mode .lv-price .rate-in{width:100%}
.oct-note>.rate-in{flex:1;width:auto;min-width:64px}   /* 单输入套（零售/批发）音符行输入撑满剩余宽 */
/* 排单规则天数步进器（v0.14.30 Leo 圈定：改掉原生数字输入框） */
.lead-stepper{display:inline-flex;align-items:center;gap:2px;background:#fff;border:1.5px solid var(--bd);border-radius:12px;padding:3px}
.lead-step-btn{width:34px;height:34px;border:none;border-radius:9px;background:var(--brand-soft);color:var(--brand-d);font-size:19px;font-weight:800;cursor:pointer;line-height:1;transition:all .15s}
.lead-step-btn:hover:not(:disabled){background:var(--brand);color:#fff}
.lead-step-btn:disabled{opacity:.35;cursor:not-allowed}
.lead-step-n{min-width:44px;text-align:center;font-size:20px;font-weight:800;color:var(--tx)}

/* 我的调音分析·等级标准文字（v0.14.30） */
.lv-stds{display:flex;flex-direction:column;gap:5px;font-size:13px}
.lv-std-cur{font-weight:700;color:var(--tx)}
.lv-std-next{color:#1a7f4b;font-weight:600}
.lv-std-actual{color:var(--tx-mut)}

/* 调音师卡片正文操作钮（v0.14.30，Leo 圈定：从照片角标挪来，带文字更明确） */
.emp-tune-ops{display:flex;gap:8px;margin-top:10px;padding-top:10px;border-top:1px dashed var(--bd)}
.tune-op{flex:1;padding:7px 4px;border:1px solid var(--bd);border-radius:9px;background:var(--brand-soft);font-size:12.5px;font-weight:700;color:var(--tx);cursor:pointer;transition:.15s;white-space:nowrap}
.tune-op:hover{background:var(--brand);color:#fff;border-color:var(--brand)}
.seg-btn.on{background:var(--brand);color:#fff;box-shadow:0 3px 10px rgba(43,127,255,.35)}
/* 排行横条（调式分布/客户排行） */
.rank-row{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:10px;font-size:13px;line-height:1.4}
.rank-row.rk-top10{background:var(--brand-soft)}
.rank-row.rk-gold{background:linear-gradient(90deg,rgba(232,179,57,.20),rgba(232,179,57,.06))}
.rank-row.rk-silver{background:linear-gradient(90deg,rgba(148,163,184,.22),rgba(148,163,184,.06))}
.rank-row.rk-bronze{background:linear-gradient(90deg,rgba(196,136,86,.20),rgba(196,136,86,.06))}
.rank-no{flex:none;width:30px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:8px;font-size:12.5px;font-weight:800;background:var(--card-bg);border:1px solid var(--bd);color:var(--tx-mut)}
.rank-no.rk-gold{background:#e8b339;border-color:#d9a52b;color:#fff}
.rank-no.rk-silver{background:#94a3b8;border-color:#7d8ea3;color:#fff}
.rank-no.rk-bronze{background:#c48856;border-color:#b0764a;color:#fff}
.rank-no.rk-top10{background:var(--brand);border-color:var(--brand-d);color:#fff}
.rank-name{flex:none;width:210px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
.rank-track{flex:1;height:16px;background:rgba(120,130,150,.10);border-radius:8px;overflow:hidden}
.rank-fill{height:100%;border-radius:8px;background:linear-gradient(90deg,var(--brand) 0%,var(--brand-d) 100%);opacity:.9;transition:width .3s}
.rank-fill.rk-gold{background:linear-gradient(90deg,#f0c452,#d9a52b)}
.rank-fill.rk-silver{background:linear-gradient(90deg,#b6c2d1,#8a99ad)}
.rank-fill.rk-bronze{background:linear-gradient(90deg,#d69c68,#b0764a)}
.rank-val{flex:none;width:86px;text-align:right;font-weight:800}
.rank-pct{flex:none;width:58px;text-align:right;font-weight:800;color:var(--brand-d);font-size:13px}

/* v0.18.31 图表全栈统一（Leo 定版「必须保障以后只要是图表就是统一背景统一柱子颜色」）：一切图表=纸底+水墨色谱，亮蓝系永久退役——
   排行横条柱色对齐 SvgBars 墨蓝三段渐变；金/银/铜名次徽章保留（v0.14.76 定版），柱子不再分色 */
.rank-fill{background:linear-gradient(180deg,#7A92AE 0%,#3A5E85 38%,#1F4E79 100%)}
.rank-fill.rk-gold{background:linear-gradient(180deg,#7A92AE 0%,#3A5E85 38%,#1F4E79 100%)}
.rank-fill.rk-silver{background:linear-gradient(180deg,#7A92AE 0%,#3A5E85 38%,#1F4E79 100%)}
.rank-fill.rk-bronze{background:linear-gradient(180deg,#7A92AE 0%,#3A5E85 38%,#1F4E79 100%)}
.rank-pct{color:#1F4E79}
.rank-track{background:rgba(31,78,121,.10)}
.seg-btn.on{background:#2b7fff;color:#fff;box-shadow:0 3px 10px rgba(43,127,255,.35)}

/* v0.18.31 补：Top10 行底改墨蓝软底（原淡亮蓝退役） */
.rank-row.rk-top10{background:rgba(31,78,121,.07)}

/* ===== Element Plus 品牌适配层（v0.14.86 Leo 定版）=====
   主色对齐 QQ 蓝 #2B7FFF；圆角/字号与系统卡片体系一致；只作用于 el-* 组件，不影响既有手制样式 */
:root{
  --el-color-primary:#2B7FFF;
  --el-color-primary-light-3:#5C9AFF; --el-color-primary-light-5:#8AB8FF;
  --el-color-primary-light-7:#BAD4FF; --el-color-primary-light-8:#D6E5FF; --el-color-primary-light-9:#EAF2FF;
  --el-color-primary-dark-2:#1B5FD9;
  --el-border-radius-base:8px; --el-border-radius-small:6px;
  --el-font-size-base:13.5px;
  --el-card-border-radius:12px;
}
.el-card{--el-card-padding:16px 18px;margin-bottom:16px;border:1px solid var(--bd,#E4EAF4);box-shadow:0 2px 10px rgba(30,60,120,.05)}
.el-card__header{padding:12px 18px;font-weight:700}
.el-table{--el-table-header-bg-color:#F2F7FF;--el-table-header-text-color:#33507A;font-size:13px}
.el-dialog{border-radius:14px}
.el-form-item__label{font-weight:600;color:#44546B}
.el-button{font-weight:600}
.ep-h{display:flex;align-items:center;gap:10px;font-size:15px;font-weight:700;margin-bottom:10px}
.ep-h .el-tag{font-weight:600}
.ep-tip{background:#FFF9EC;border:1px solid #F3E2B3;color:#8A6A12;border-radius:10px;padding:10px 14px;font-size:13px;line-height:1.7;margin-bottom:16px}
.ep-sub{font-size:13px;color:#5A6B85;margin:4px 0 10px;line-height:1.7}
/* 页面装修（v0.14.87）：左编辑右预览双栏 */
.builder-wrap{display:grid;grid-template-columns:400px 1fr;gap:16px;align-items:start}
.builder-preview{position:sticky;top:14px;background:#fff;border:1px solid var(--bd,#E4EAF4);border-radius:12px;overflow:hidden;box-shadow:0 2px 10px rgba(30,60,120,.05)}
.builder-preview iframe{width:100%;height:76vh;border:0;display:block}
.builder-preview .bp-bar{display:flex;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px solid var(--bd,#E4EAF4);font-size:12.5px;color:#5A6B85;background:#F6F9FE}
.sec-card{border:1px solid var(--bd,#E4EAF4);border-radius:12px;background:#fff;margin-bottom:12px;overflow:hidden}
.sec-card.off{opacity:.55}
.sec-head{display:flex;align-items:center;gap:8px;padding:10px 12px;background:#F6F9FE;border-bottom:1px solid var(--bd,#E4EAF4);cursor:pointer;user-select:none}
.sec-head b{font-size:13.5px;white-space:nowrap;flex:none}
.sec-body{padding:12px 14px}
@media (max-width:1100px){.builder-wrap{grid-template-columns:1fr}}

/* v0.15.04 锁屏称呼（尊敬的 ××） */
.lock-hello{font-size:15px;font-weight:700;color:var(--brand-d,#1B5FD9);letter-spacing:.02em}

/* v0.15.13 请假单来源标记（虚线框区分——删单即清，不可点改） */
.myatt-req{outline:1px dashed currentColor;outline-offset:1px;opacity:.92}

/* ===== v0.15.15 手碟品控：操作按钮组 + 整行单行化（Leo 图1/2 定版） ===== */
.qc-acts{display:flex;gap:6px;align-items:center;flex-wrap:nowrap}
.qc-btn{flex:none;height:26px;padding:0 10px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap;cursor:pointer;border:1px solid transparent;transition:all .15s;font-family:inherit}
.qc-btn.pass{background:var(--brand,#2B7FFF);color:#fff;border-color:var(--brand,#2B7FFF)}
.qc-btn.pass:hover{background:var(--brand-d,#1B5FD9);border-color:var(--brand-d,#1B5FD9)}
.qc-btn.repair{background:#FFF8EC;color:#A96F12;border-color:#F0D9A8}
.qc-btn.repair:hover{background:#FCEFD6;border-color:#E3C07E}
.qc-btn.scrap{background:#fff;color:#B03A2E;border-color:#F0C4BC}
.qc-btn.scrap:hover{background:#FDECEA;border-color:#E3A298}
/* v0.15.18（Leo 图1 定版）：品控表格不许出现「…」——放弃 fixed 布局与 ellipsis，全列单行 nowrap，
   内容自然撑宽；超出卡片由 .card 横向滚动兜底，保证任何内容完整可见 */
.qc-tbl{width:100%}
.qc-tbl th,.qc-tbl td{white-space:nowrap}
.qc-scroll{overflow-x:auto;padding-bottom:2px}   /* v0.15.18：内容超宽时卡片内横向滚动，绝不用「…」截断 */
.qc-hist-link{cursor:pointer;text-decoration:none}
.qc-hist-link:hover{filter:brightness(.93);text-decoration:underline}
/* v0.15.85（Leo 图1）：维修记录弹窗表格——fixed 布局全列单行 nowrap 溢出省略（禁第二行），title 悬停全显 */
.qc-hist-tbl{table-layout:fixed}
.qc-hist-tbl th,.qc-hist-tbl td{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* v0.15.92（Leo 图1）：碟壳统计批次表——fixed 布局全列 nowrap（13 列按内容最长值配宽，零省略零折行） */
.sb-tbl{table-layout:fixed}
/* v0.16.05（Leo 图1「设置右侧滚动条」）：用量明细整月全量表内滚动 + 表头吸顶 */
.su-scroll{max-height:560px;overflow-y:auto;border-radius:0 0 10px 10px}
.su-scroll thead th{position:sticky;top:0;z-index:2;box-shadow:0 1px 0 var(--bd)}
.sb-tbl th,.sb-tbl td{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ===== v0.15.16 ColorPick 颜色选择器（Leo 图3：缩略图色卡 + hover 自动放大） ===== */
.cpick{display:flex;gap:6px;flex-wrap:wrap}
.cpick-item{position:relative;display:inline-flex;align-items:center;gap:5px;padding:3px 9px 3px 3px;border:1px solid var(--bd,#E4EAF4);border-radius:999px;cursor:pointer;background:#fff;transition:all .13s}
.cpick-item:hover{border-color:#B9CBE6}
.cpick-item.sel{border-color:var(--brand,#2B7FFF);background:var(--brand-l,#EAF2FF);box-shadow:0 0 0 2px rgba(43,127,255,.14)}
.cpick-thumb{width:26px;height:26px;border-radius:50%;object-fit:cover;display:inline-flex;align-items:center;justify-content:center;font-size:11px;color:var(--tx-mut);background:#F0F3F7;flex:none}
.cpick-name{font-size:12.5px;white-space:nowrap}
.cpick-pop{position:absolute;z-index:60;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%);background:#fff;border:1px solid var(--bd,#E4EAF4);border-radius:12px;padding:8px;box-shadow:0 14px 36px rgba(30,60,120,.20);pointer-events:none}
.cpick-pop img{width:160px;height:160px;object-fit:cover;border-radius:9px;display:block}
.cpick-pop i{display:block;text-align:center;font-style:normal;font-size:12px;margin-top:5px;color:var(--tx-mut)}
/* ===== v0.15.19 ColorPick 下拉模式（Leo 图2：颜色必选 + 下拉菜单形态） ===== */
.cpick-dd{position:relative;display:inline-block;min-width:220px}
.cpick-dd-btn{display:flex;align-items:center;gap:8px;border:1px solid var(--bd,#E4EAF4);border-radius:10px;padding:5px 12px 5px 5px;background:#fff;cursor:pointer;min-height:38px;transition:border-color .13s}
.cpick-dd-btn:hover,.cpick-dd-btn.open{border-color:var(--brand,#2B7FFF)}
.cpick-dd-btn.dis{opacity:.55;cursor:not-allowed;background:#F4F7FB}
.cpick-dd-btn.dis:hover{border-color:var(--bd,#E4EAF4)}
.cpick.dis{opacity:.55;pointer-events:none}
.cpick-dd-btn .cpick-name{flex:1}
.cpick-dd-ph{flex:1;color:var(--tx-mut);font-size:12.5px;white-space:nowrap}
.cpick-dd-arrow{color:var(--tx-mut);font-size:12px}
.cpick-dd-mask{position:fixed;inset:0;z-index:70}
.cpick-dd-panel{position:absolute;z-index:71;top:calc(100% + 6px);left:0;min-width:100%;max-height:300px;overflow:auto;background:#fff;border:1px solid var(--bd,#E4EAF4);border-radius:12px;padding:8px;box-shadow:0 14px 36px rgba(30,60,120,.18);display:flex;flex-direction:column;gap:4px}
.cpick-dd-panel .cpick-item{border-radius:9px;padding:4px 10px 4px 4px}
.cpick-dd-panel .cpick-pop{left:auto;right:calc(100% + 8px);bottom:auto;top:50%;transform:translateY(-50%)}
/* ===== v0.15.19（Leo 图3）：非订单生产碟=紫色区分（月历/汇总板同式） ===== */
.cal-unit.cust{border-color:#C9B6F0;background:#F3EEFD}
.cal-unit.cust:hover{border-color:#7C5CD6}
.board-task.cust{border-color:#C9B6F0!important;background:#F3EEFD!important}
/* ===== v0.15.19（Leo 图5）：手碟问题页——带说明卡片网格 ===== */
.qci-add{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.qci-add input:nth-child(2){flex:1;min-width:280px}
.qci-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:10px}
.qci-item{border:1px solid var(--bd,#E4EAF4);border-radius:12px;padding:10px 12px;background:#fff;transition:box-shadow .13s}
.qci-item:hover{box-shadow:0 6px 18px rgba(30,60,120,.10)}
.qci-head{display:flex;align-items:center;gap:8px}
.qci-head b{font-size:13.5px;flex:1}
.qci-del{cursor:pointer;color:#b03a2e;font-weight:700;font-size:13px;padding:2px 5px;border-radius:6px}
.qci-del:hover{background:#FDECEA}
.qci-desc{margin:6px 0 0;font-size:12.3px;line-height:1.6;color:var(--tx-mut)}
/* ===== v0.15.19（Leo 图7）：音区数据步进输入 ===== */
.tf-tbl td{vertical-align:middle}
.tf-step{display:inline-flex;align-items:center;gap:4px}
.tf-step input{width:92px;text-align:center;font-variant-numeric:tabular-nums}
.tf-step input::-webkit-outer-spin-button,.tf-step input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.tf-btn{width:30px;height:30px;border:1px solid var(--bd,#E4EAF4);background:#F6F9FE;color:var(--brand-d,#1B5FD9);border-radius:8px;cursor:pointer;font-size:11px;line-height:1;transition:all .12s;flex:none}
.tf-btn:hover{background:var(--brand,#2B7FFF);color:#fff;border-color:var(--brand,#2B7FFF)}
.tf-btn:active{transform:scale(.92)}
.tf-grp{margin-bottom:18px}
.tf-grp:last-child{margin-bottom:4px}
.tf-grp-h{margin:0 0 8px;font-size:13px;color:var(--brand-d,#1B5FD9);border-left:3px solid var(--brand,#2B7FFF);padding-left:8px}   /* v0.15.24 逐音分组块标题 */
.tf-tbl td .hint{margin-left:6px}
/* v0.15.29（Leo 图1）：每行两组音 + 批量设置条 */
.tf-tbl2 .tf-nh{width:74px;white-space:nowrap}
.tf-tbl2 .tf-step input{width:66px;padding:4px 5px;font-size:12px}
.tf-tbl2 .tf-btn{width:24px;height:26px;font-size:10px}
/* v0.15.16（Leo 图1）：库存台账单行化 */
.ps-tbl{table-layout:fixed;width:100%}
.ps-tbl td{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* v0.15.50（Leo 图11）：编号/录入列完整显示不出省略号——豁免换行 */
.ps-tbl td.col-full{white-space:normal;overflow:visible;text-overflow:clip;word-break:break-all;line-height:1.4}

/* v0.16.28 收支·横向 100% 构成条（Leo 图「没有百分比和每一项细致数据」） */
.pnl-hb-row{display:flex;align-items:center;gap:12px;padding:7px 0;border-bottom:1px dashed var(--bd)}
.pnl-hb-row:last-child{border-bottom:none}
.pnl-hb-m{width:132px;flex:none;display:flex;flex-direction:column;gap:1px}
.pnl-hb-m b{font-size:13px}
.pnl-hb-m span{font-size:11.5px;color:var(--tx-mut)}
.pnl-hb-bar{flex:1;display:flex;height:36px;border-radius:9px;overflow:hidden;background:var(--bg,#f2f5fa)}
.pnl-hb-seg{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:2px;color:#fff;font-size:11px;line-height:1.3;overflow:hidden;white-space:nowrap;transition:filter .15s}
.pnl-hb-seg:hover{filter:brightness(1.12)}
.pnl-hb-seg b{font-weight:700}
.pnl-hb-seg span{font-size:10px;opacity:.92}

/* v0.16.34 使用·报废对比双条（Leo 图「使用数量和报废数量比的图」） */
.us-cmp{margin-top:14px;border-top:1px dashed var(--bd);padding-top:10px}
.us-cmp-h{margin:0 0 8px;font-size:13.5px}
.us-row{display:flex;align-items:center;gap:12px;padding:4px 0}
.us-m{width:118px;flex:none;display:flex;flex-direction:column;gap:1px;font-size:12px}
.us-m b{font-size:12.5px}
.us-m span{font-size:11px;color:var(--tx-mut)}
.us-lines{flex:1;display:flex;flex-direction:column;gap:4px}
.us-line{display:flex;align-items:center;gap:8px;font-size:12px}
.us-line i{display:inline-block;width:10px;height:10px;border-radius:3px;flex:none}
.us-line .us-tag{width:30px;flex:none;color:var(--tx-mut)}
.us-track{flex:1;height:10px;border-radius:5px;background:var(--bg,#f2f5fa);overflow:hidden}
.us-fill{height:100%;border-radius:5px;min-width:0}
.us-line b{width:64px;flex:none;text-align:right;font-size:12px}

/* v0.16.35 碟准PanStrobe手碟调音系统·全屏弹窗（Leo 定版：覆盖侧栏/顶栏） */
.ps-fs{position:fixed;inset:0;z-index:1300;background:var(--bg);display:flex;flex-direction:column}
.ps-fs-h{display:flex;align-items:center;gap:10px;padding:10px 16px;background:var(--card-bg);border-bottom:1px solid var(--bd);flex:none}
.ps-fs-h b{font-size:15px}
.ps-fs-frame{flex:1;width:100%;border:0;display:block}

/* v0.16.53 生产数据五页列宽统一（Leo 五图「模仿材料页统一按钮位置」）：fixed 布局+操作列一律 130px；内容可折行绝不省略（v0.15.96 铁律） */
.fix-tbl{table-layout:fixed}
.fix-tbl th{white-space:nowrap;overflow:hidden}
.fix-tbl td{white-space:normal;overflow:visible}   /* 内容多了折行显示，不裁剪不省略 */

/* v0.16.54 常用工具可收缩栏目（Leo 图「壳收缩的菜单」） */
.sidemenu .fold-p{display:flex;align-items:center;justify-content:space-between}
.sidemenu .fold-arrow{font-style:normal;font-size:11px;color:var(--tx-mut);transition:transform .18s}
.sidemenu .fold-arrow.open{transform:rotate(90deg)}
.sidemenu .fold-kid{display:block;padding:9px 8px 9px 26px;margin:2px 6px;border-radius:10px;font-size:14.5px;color:var(--tx);cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}   /* v0.16.58（Leo 图「字体不要缩小，正常大小」）：字号对齐主菜单项 14.5px */
.sidemenu .fold-kid:hover{background:var(--brand-soft,#EAF2FF);color:var(--brand-d)}

/* v0.16.65 弹窗圆角修复（Leo 图1「这个不是圆角」）：弹窗自身滚动条贴边吃掉右上/右下圆角——全局细滚动条+透明轨道+thumb 内缩，圆角视觉完整 */
.modal{scrollbar-width:thin;scrollbar-color:#c9d6ea transparent}
.modal::-webkit-scrollbar{width:8px}
.modal::-webkit-scrollbar-thumb{background:#c9d6ea;border-radius:8px;border:2px solid transparent;background-clip:content-box}
.modal::-webkit-scrollbar-track{background:transparent}
.modal::-webkit-scrollbar-corner{background:transparent}

/* ═══ v0.16.70 耗材纸质账本（Leo 定版拟物 redesign） ═══ */
.ledger-card{background:linear-gradient(180deg,#FBF6E9,#F6EEDC)!important;border:1px solid #E4D6B8!important;box-shadow:0 3px 14px rgba(120,96,40,.10), inset 0 0 60px rgba(190,160,90,.06)!important}
.ledger{display:flex;font-family:"Kaiti SC","STKaiti","KaiTi","楷体","FangSong","仿宋",Georgia,serif;min-width:806px}   /* v0.17.41：金额列加宽后保底宽同步（装订34+页边32+行内738） */
.ledger-bind{flex:0 0 34px;display:flex;flex-direction:column;justify-content:space-around;align-items:center;padding:18px 0;border-right:1px solid #E0D2B2}
.ledger-bind i{width:11px;height:11px;border-radius:50%;background:radial-gradient(circle at 35% 35%, #fff 0 2px, #D9CBA6 3px, #B7A678 100%);box-shadow:inset 0 1px 2px rgba(90,70,30,.5)}
.ledger-page{flex:1;position:relative;padding:10px 14px 14px 18px;border-left:2px solid rgba(176,58,46,.45)}   /* 装订红线；v0.16.77：背景横格线撤除——改由每行下边框作格线，与日期逐行对齐 */
.ledger-head{display:flex;align-items:flex-end;gap:14px;border-bottom:2.5px solid #4A5568;padding:6px 2px 8px;position:relative}
.ledger-title{font-size:19px;font-weight:800;color:#2E2A26;letter-spacing:3px}
.ledger-sub{font-size:15px;font-weight:700;color:#6B5F4A;letter-spacing:1.5px;margin-left:12px}
.ledger-month{margin-left:auto;margin-right:104px;font-size:15px;font-weight:700;color:#4A5568;letter-spacing:2px}
.ledger-seal{position:absolute;right:10px;top:-6px;width:74px;height:74px;border:2.5px solid rgba(176,58,46,.75);border-radius:50%;
  display:flex;align-items:center;justify-content:center;transform:rotate(-12deg);color:rgba(176,58,46,.85);
  font-size:12.5px;font-weight:800;line-height:1.35;text-align:center;letter-spacing:1px;opacity:.82;
  box-shadow:0 0 0 1.5px rgba(176,58,46,.25) inset;pointer-events:none;mix-blend-mode:multiply}
.lg-row{display:flex;align-items:center;gap:10px;min-height:34px;padding:3px 2px;border-bottom:1px dashed rgba(120,140,170,.30)}
.lg-row:nth-child(even of .lg-row:not(.lg-head)):not(.lg-open):not(.lg-total):not(.we-sat):not(.we-sun):not(.we-holi){background:rgba(255,252,240,.35)}   /* v0.17.50 修：zebra 漂白绕开周末/节假日分色行（否则隔行覆盖，Leo 图「颜色没有改变呀」） */
.lg-head{border-bottom:2px solid #4A5568;font-size:13px;font-weight:800;color:#4A5568;letter-spacing:2px;min-height:30px}
.lg-c-date{flex:0 0 64px;text-align:center}
.lg-c-desc{flex:1 1 auto;min-width:220px}
/* v0.17.41（Leo 图「修改所有比例，让竖线对齐」）：金额列加宽 108→124/74→100（¥999,999.99 从容放下，摘要不再空一大片）；
   min-width:0 是关键——flex 条目默认 min-width:auto 会被大金额顶宽（¥500,000 把整行顶出纸边、竖线全错位），钉 0 后列宽永远钉死，超大内容宁溢不顶行 */
.lg-c-in{flex:0 0 124px;min-width:0;text-align:right;border-left:1.5px solid rgba(176,58,46,.5);padding-right:8px}
.lg-c-out{flex:0 0 124px;min-width:0;text-align:right;border-left:1.5px solid rgba(176,58,46,.5);padding-right:8px}
.lg-c-bal{flex:0 0 100px;min-width:0;text-align:right;border-left:1.5px solid rgba(176,58,46,.5);padding-right:4px}
.lg-c-act{flex:0 0 52px;min-width:0;text-align:right;white-space:nowrap}
.lg-c-act a{color:#5A6B8C;font-size:13px}
.lg-day{font-size:16px;font-weight:800;color:#2E2A26}
.lg-week{font-size:10.5px;color:#8A7F68;display:block;line-height:1}
.lg-tag{display:inline-block;font-size:11px;font-weight:800;padding:1px 7px;border-radius:3px;margin-right:7px;vertical-align:1px;letter-spacing:1px}
.lg-tag.in{color:#1F4E79;border:1px solid #1F4E79;background:rgba(31,78,121,.06)}
.lg-tag.out{color:#B03A2E;border:1px solid #B03A2E;background:rgba(176,58,46,.06)}
.lg-tag.open{color:#7A6F5C;border:1px dashed #A99B7C}
.lg-tag.total{color:#fff;background:#4A5568;letter-spacing:2px}
.lg-thumb{width:22px;height:22px;border-radius:4px;object-fit:cover;vertical-align:-6px;margin-right:5px;border:1px solid #D9CBA6}
.lg-main{font-size:14.5px;font-weight:700;color:#2E2A26}
.lg-note{font-size:11.5px;color:#8A7F68;margin-left:8px}
.lg-c-in b{font-size:14.5px;color:#1F4E79}
.lg-c-out b{font-size:14.5px;color:#B03A2E}
.lg-c-bal b{font-size:15px;color:#2E2A26}
.lg-amt{display:block;font-size:11px;font-weight:400;color:#8A7F68}
/* v0.17.31 账本金额性质徽章（Leo 定版「统计的是库存使用，不是钱的收入和支出」）：计投/加工费/转出/计损/耗用 */
.lg-amt-tag{display:inline-block;font-style:normal;font-size:9.5px;font-weight:800;letter-spacing:1px;
  color:#8A5A12;border:1px solid rgba(138,90,18,.45);border-radius:3px;padding:0 3px;margin-right:4px;
  vertical-align:1px;background:rgba(190,160,90,.10)}
.lg-unit{font-size:10.5px;color:#8A7F68;margin-left:2px}
.lg-open{background:rgba(120,140,170,.05)}
.lg-total{border-top:2px solid #4A5568;border-bottom:3px double #4A5568;background:rgba(190,160,90,.08);min-height:38px}
.lg-empty{text-align:center;color:#A99B7C;font-size:14px;letter-spacing:4px;padding:26px 0 18px}
/* v0.18.29 采购总账·同比环比对比卡（数据分析页同构，红涨绿跌） */
.cmp-line{display:flex;align-items:baseline;gap:8px;margin-top:8px}
.cmp-k{font-size:11.5px;color:#8A94A8;min-width:28px}
.cmp-v{font-size:19px;font-weight:800;color:#1F2A44;white-space:nowrap}
.cmp-pct{font-style:normal;font-size:11px;font-weight:700;padding:1px 6px;border-radius:8px;margin-left:2px;white-space:nowrap}
.cmp-pct.up{background:rgba(176,58,46,.12);color:#B03A2E}
.cmp-pct.down{background:rgba(46,107,79,.12);color:#2E6B4F}
.cmp-vs{font-size:11px;color:#8A94A8;margin:1px 0 2px}
/* v0.18.09 采购总账·三域期间明细条（KPI 行下方，Leo 定版；v0.18.13 碟壳卡撤除改两列） */
.proc-dom-strip{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
.proc-dom-card{background:var(--card,#fff);border:1px solid var(--bd);border-radius:14px;padding:12px 16px}
.proc-dom-t{font-size:13px;font-weight:800;margin-bottom:6px}
.proc-dom-items{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:12.5px;color:#6B7280}
.proc-dom-items b{color:#1F2A44;font-weight:800;white-space:nowrap}
/* v0.18.10 碟壳按尺寸分行（Leo 定版「一个尺寸一行，新型号自动多行」） */
.proc-dom-rows{display:flex;flex-direction:column}
.proc-dom-row{display:flex;flex-wrap:wrap;gap:3px 12px;font-size:12.5px;color:#6B7280;padding:5px 0}
.proc-dom-row+.proc-dom-row{border-top:1px dashed var(--bd)}
.proc-dom-dia{font-weight:800;color:#1F4E79;white-space:nowrap;min-width:44px}
/* v0.18.14 每种壳分析·行内 使用:报废 对比条（Leo 定版「这一行的使用135片和报废的4片做对比」） */
.cmp-wrap{display:inline-flex;align-items:center;gap:8px}
.cmp-bar{position:relative;width:72px;height:7px;border-radius:4px;overflow:hidden;background:rgba(31,78,121,.14)}
.cmp-use{position:absolute;left:0;top:0;bottom:0;width:100%;background:#1F4E79;border-radius:4px}
.cmp-scrap{position:absolute;left:0;top:0;bottom:0;background:#B03A2E;border-radius:4px}
.cmp-pct{font-size:12px;font-weight:800;white-space:nowrap}
/* v0.17.39 品牌 LOGO 印章（三本账右上角；保持纸面印章红圈+斜置质感） */
.ledger-seal-logo{width:72px;height:72px;object-fit:contain;border-radius:50%;
  border:2.5px solid rgba(176,58,46,.55);padding:5px;background:rgba(255,255,255,.55)}
.ledger-seal-logo.on-dark{background:#1F4E79;border-color:rgba(31,78,121,.65)}   /* 白图自动配墨蓝底币（否则白纸上看不见） */
/* v0.17.40 同日多行同高：非首行日期格整格隐形（Leo 定版「多行的非第一行高度都设置成跟首行一样」——内容恒渲染保证行高一致） */
.lg-c-date.lg-cont>*{visibility:hidden}
/* 窄屏：账本横滚由 .ledger-card overflow-x 承担（min-width 760 保证可读） */

.lg-row.blank{border-bottom:1px dashed rgba(120,140,170,.18)}
.lg-row.today-row{background:rgba(176,58,46,.05)}
.lg-row.today-row .lg-day{color:#B03A2E}
/* v0.17.48 周末/节假日整行分色（Leo「周六日和节假日对应的整行都有一些修改，能够更好的看出来」）：
   v0.17.49（Leo 定版「周六、周日一种颜色，节假日一种颜色」）：周末（周六+周日）淡墨蓝、节假日淡朱红；
   倒休补班日 adj 不上色——那是工作日；空白行同样着色 */
.lg-row.we-sat,.lg-row.we-sun{background:rgba(31,78,121,.16)}                 /* 周末：淡墨蓝（v0.17.50 再加深——暖米纸底会中和蓝色，.11 看起来像灰） */
.lg-row.we-holi{background:rgba(176,58,46,.13)}                              /* 节假日：淡朱红（优先于周末色） */
.lg-row.today-row.we-sat,.lg-row.today-row.we-sun,.lg-row.today-row.we-holi{background:rgba(176,58,46,.10)}   /* 今天恰逢周末/节假日：加深 */

/* ═══ v0.18.00 采购清单（平台在线卡 + Tab + 平台徽章） ═══ */
.plat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:10px}
.plat-card{border:1px solid var(--bd);border-radius:10px;padding:10px 12px;background:var(--bg-card,#fff)}
.plat-card-h{display:flex;align-items:center;gap:7px;font-size:13.5px}
.plat-dot{width:9px;height:9px;border-radius:50%;flex:none}
.plat-st{font-size:12px;font-weight:700}
.plat-badge{display:inline-block;font-size:11px;font-weight:700;border-radius:6px;padding:2px 7px;color:#fff;white-space:nowrap}
.plat-badge.tb{background:#B03A2E}.plat-badge.a16{background:#8A5A12}.plat-badge.jd{background:#1F4E79}.plat-badge.pdd{background:#2E6B4F}.plat-badge.other{background:#5A6B8C}

/* v0.16.72 日期分色：周六墨蓝 / 周日朱红 / 法定假期名朱红 / 倒休班灰蓝 */
.lg-c-date.sun .lg-day,.lg-c-date.sun .lg-week{color:#B03A2E}
.lg-c-date.sat .lg-day,.lg-c-date.sat .lg-week{color:#1F4E79}
.lg-c-date.holi .lg-day{color:#B03A2E}
.lg-c-date.holi .lg-week{color:#B03A2E;font-weight:800}
.lg-c-date.adj .lg-day{color:#2E2A26}
.lg-week.adjt{color:#5A6B8C;font-weight:800}

/* v0.16.74 周六日/假期字体加粗加重（Leo 图「加粗明显一些」） */
.lg-c-date.sat .lg-day,.lg-c-date.sun .lg-day,.lg-c-date.holi .lg-day{font-size:17.5px;font-weight:900}
.lg-c-date.sat .lg-week,.lg-c-date.sun .lg-week{font-size:11px;font-weight:800}
.lg-c-date.holi .lg-week{font-size:11.5px;font-weight:900}

/* v0.16.75 账本竖线整页贯通（Leo 图「划线提前画出来」）：单元格撑满行高，边框不断线 */
.lg-row{align-items:stretch}
.lg-c-date{display:flex;flex-direction:column;align-items:center;justify-content:center}
.lg-c-desc{display:flex;align-items:center;flex-wrap:wrap}
.lg-c-in,.lg-c-out,.lg-c-bal{display:flex;flex-direction:column;justify-content:center}
.lg-c-act{display:flex;align-items:center;justify-content:flex-end}

/* v0.16.77 行格线对齐（Leo 图「背景横行和日期不相符」）：每行自身下边框=格线 */
.lg-row{border-bottom:1px solid rgba(120,140,170,.28)}
.lg-row.blank{border-bottom:1px solid rgba(120,140,170,.28)}


/* ═══ v0.16.84 按钮规范补件（Leo 定版《按钮统一规范》落地，规范全文 docs/界面规范.md） ═══ */
/* B3 危险操作（次强形态）：白底红字浅红边——删除/破坏性动作的首选样式（主危操作才用 .btn.danger 实红） */
.btn.danger-outline{background:var(--card-bg);color:var(--red);border:1px solid rgba(192,57,43,.40);box-shadow:none}
.btn.danger-outline:hover{filter:none;background:rgba(192,57,43,.06);border-color:var(--red)}
/* 禁用态：全按钮统一 cursor:not-allowed（原先 .btn 仅半透明） */
.btn:disabled{cursor:not-allowed}
/* 加载中态：繁忙文案 + 禁用（约定 :disabled 同时加 .loading 或直接 :disabled） */
.btn.loading{pointer-events:none;opacity:.6}
/* 表格行内小胶囊危险态已有 .btn-pill.danger（实红）；补次强形态 */
.btn-pill.danger-outline{background:var(--card-bg);color:var(--red);border:1px solid rgba(192,57,43,.40);box-shadow:none}
.btn-pill.danger-outline:hover{background:rgba(192,57,43,.06);border-color:var(--red)}

/* ═══ v0.17.02 耗材图片卡片选择区（Leo 定版：清晰大图+规格） ═══ */
.cons-sel-bar{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:16px}
.cons-sel-card{display:flex;flex-direction:column;align-items:stretch;padding:10px;border:1.5px solid var(--bd);border-radius:16px;background:var(--card-bg);cursor:pointer;transition:all .15s;width:211px}
.cons-sel-card:hover{border-color:var(--brand);box-shadow:0 3px 12px rgba(43,127,255,.16);transform:translateY(-1px)}
.cons-sel-card.on{border-color:var(--brand);background:var(--brand-soft);box-shadow:0 3px 14px rgba(43,127,255,.22)}
.selcard-img{width:189px;height:189px;border-radius:12px;overflow:hidden;flex:none;border:1px solid var(--bd);background:#fff;display:flex;align-items:center;justify-content:center;color:var(--tx-mut);font-size:32px}   /* 189px ≈ 5cm×5cm（96dpi，Leo 定版照片尺寸） */
.selcard-img img{width:100%;height:100%;object-fit:cover}
.selcard-tx{display:flex;flex-direction:column;align-items:center;min-width:0;padding-top:9px}
.selcard-tx b{font-size:14.5px;color:var(--tx);white-space:nowrap}
.selcard-tx .hint{font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:185px;margin-top:2px}

/* ═══ v0.17.06 阴历 + 周六朱红（Leo 定版） ═══ */
.lg-lunar{display:block;font-size:9.5px;color:#A99B7C;line-height:1.25;letter-spacing:.5px}
.lg-lunar.fest{color:#B03A2E;font-weight:800}
/* 周六改为与周日/节假日一致的朱红（倒休补班仍走 .adj 墨色，优先级在其后不受影响） */
.lg-c-date.sat .lg-day,.lg-c-date.sat .lg-week{color:#B03A2E}

/* ═══ v0.17.07 图表纸张背景（Leo 定版：纸底只给全栈图表，不给全程序——v0.17.06 全屏层已撤） ═══ */
svg.chart-paper{background:linear-gradient(180deg,rgba(251,246,233,.92),rgba(245,238,220,.94)),url('/assets/paper.webp');background-size:auto,420px 420px;background-blend-mode:multiply;border:1px solid #E4D6B8;border-radius:12px;box-shadow:inset 0 0 46px rgba(190,160,90,.10)}

/* ═══ v0.17.09 按钮几何统一（Leo 定版：高度全栈统一、宽度按内容自适应、以后新按钮同样对待） ═══ */
.btn{display:inline-flex;align-items:center;justify-content:center;height:36px;padding:0 16px;white-space:nowrap;width:auto;box-sizing:border-box}
.btn.sm{height:30px;padding:0 12px}
.btn.block{width:100%}

/* ═══ v0.17.09 水墨鼠标指针套（Leo 定版：醒目大鼠标·成套） ═══ */
body{cursor:url('/assets/cursor/ink-arrow.png?v=3') 6 2, auto}
a,button,label,select,summary,[role="button"],.clickable,.chip,.sort-th,.th-sort{cursor:url('/assets/cursor/ink-pointer.png?v=3') 24 6, pointer}   /* v0.17.15：垂直手→斜指食指手（Leo 反馈垂直手别扭） */
input[type="text"],input[type="number"],input[type="password"],input[type="email"],input[type="search"],input:not([type]),textarea,[contenteditable="true"]{cursor:url('/assets/cursor/ink-text.png?v=3') 24 24, text}
button:disabled,.btn:disabled,[aria-disabled="true"]{cursor:url('/assets/cursor/ink-no.png?v=3') 24 24, not-allowed}

/* v0.17.12 客户表横滚兜底（声明列总宽 1080，窗口不足时滚动而非挤压） */
.qq-card{overflow-x:auto}

/* ═══ v0.17.16 碟壳流水账（Leo 定版：碟壳模仿耗材账本风） ═══ */
.lg-tag.gold{color:#8A5A12;border:1px solid #8A5A12;background:rgba(138,90,18,.07)}
.pool-lbl{font-size:12px;font-weight:800;color:var(--tx-mut);letter-spacing:2px;margin:2px 0 8px}
.pool-lbl:not(:first-child){margin-top:12px}
.selcard-img.shell-glyph{font-size:64px;line-height:1;background:linear-gradient(180deg,#FDFBF5,#F4EEE0)}
.selcard-img.shell-glyph.bottom{filter:hue-rotate(180deg) saturate(.6);opacity:.85}

/* v0.17.19 碟壳卡片换图按钮（Leo 图「这个怎么换图呢」） */
.selcard-img{position:relative}
.selcard-cam{position:absolute;right:5px;top:5px;width:26px;height:26px;border-radius:50%;background:rgba(255,255,255,.92);border:1px solid var(--bd);display:flex;align-items:center;justify-content:center;font-size:13px;cursor:pointer;opacity:0;transition:opacity .15s;box-shadow:0 1px 4px rgba(0,0,0,.12)}
.cons-sel-card:hover .selcard-cam{opacity:1}
.selcard-cam:hover{background:var(--brand);border-color:var(--brand)}

/* ═══ v0.17.23 旧式 stat 卡全栈升级（Leo 图「这个也要改」：.stat-v/.stat-k 此前从未定义全靠浏览器默认，
   一次定义=64 处旧式 KPI 全部升级 ana-kpi 同款大数字；内联语义色（红/金等）优先保留 ═══ */
.card.stat{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:12px 8px}
.card.stat .stat-v{font-size:20px;font-weight:800;color:var(--tx);line-height:1.25;letter-spacing:.2px}
.card.stat .stat-k{font-size:11.5px;color:var(--tx-mut);font-weight:400;margin-top:4px}

/* ===== 工厂日程安排（v0.18.32 Leo 定版：月历+农历+中外节假日+生日+来访学习） =====
   分色沿用账本铁律：周末 rgba(31,78,121,.16) / 中国节假日 rgba(176,58,46,.13) / 倒休班不上色 */
.fc-page{max-width:none}
.fc-head{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:10px}
.fc-title{margin:0;font-size:18px}
.fc-nav{display:flex;align-items:center;gap:6px}
.fc-mlab{font-size:15px;min-width:96px;text-align:center}
.fc-legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12.5px;color:var(--tx-mut);margin-bottom:10px}
.fc-legend span{display:inline-flex;align-items:center;gap:5px}
.fc-dot{width:10px;height:10px;border-radius:3px;display:inline-block}
.fc-pend{background:rgba(138,90,18,.08);border:1px solid rgba(138,90,18,.30);border-radius:12px;padding:10px 14px;margin-bottom:12px;font-size:13px}
.fc-pend-row{display:flex;align-items:center;gap:8px;margin-top:8px;flex-wrap:wrap}
.fc-pend-t{flex:1;min-width:200px}
.fc-card{padding:10px}
.fc-grid{display:grid;grid-template-columns:repeat(7,1fr);grid-auto-rows:1fr;gap:6px;min-height:calc(100vh - 272px)}   /* v0.18.42（Leo「适当加高，满页面」）：六行均分视口高，日历下方不再大段留白（小屏时由格子 min-height 兜底出滚动） */
.fc-wh{text-align:center;font-size:12.5px;font-weight:700;color:var(--tx-mut);padding:4px 0}
.fc-cell{min-height:104px;border:1px solid var(--bd);border-radius:10px;padding:6px 7px;cursor:pointer;display:flex;flex-direction:column;gap:2px;background:var(--card-bg);transition:box-shadow .15s;overflow:hidden}
.fc-cell:hover{box-shadow:0 2px 10px rgba(31,41,55,.12)}
.fc-cell.out{opacity:.42}
.fc-cell.fc-we{background:rgba(31,78,121,.16)}
.fc-cell.fc-holi{background:rgba(176,58,46,.13)}
.fc-cell.today{border:2px solid #8A5A12;box-shadow:0 0 0 2px rgba(138,90,18,.15)}
.fc-d1{display:flex;align-items:baseline;gap:6px}
.fc-dd{font-size:14.5px;font-weight:800}
.fc-lunar{font-size:11px;color:var(--tx-mut)}
.fc-lunar.fest{color:#B03A2E;font-weight:700}
.fc-hols{display:flex;gap:4px;flex-wrap:wrap;min-height:15px}
.fc-h-cn{font-size:10.5px;color:#B03A2E;font-weight:700}
.fc-h-adj{font-size:10.5px;color:var(--tx-mut)}
.fc-h-cc{font-size:10.5px;color:#1F4E79;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fc-items{display:flex;flex-direction:column;gap:3px;margin-top:1px}
.fc-chip{font-size:11px;line-height:1.25;padding:2px 6px;border-radius:6px;color:#fff;background:#1F4E79;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fc-chip.study{background:#8A5A12}
.fc-chip.bd{background:#2E6B4F}
.fc-chip.pending{opacity:.72;border:1.5px dashed rgba(255,255,255,.85)}
.fc-chip.rejected{opacity:.45;text-decoration:line-through}
.fc-modal{max-width:min(560px,94vw)}
.fc-mrow{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:6px 0;border-bottom:1px dashed var(--bd);font-size:13px}
.fc-mrow:last-of-type{border-bottom:none}
.fc-mrange{color:var(--tx-mut);font-size:12.5px}
.fc-st{font-size:12px;font-weight:700}
.fc-st.pending{color:#8A5A12}
.fc-st.confirmed{color:#2E6B4F}
.fc-st.rejected{color:#B03A2E}
.fc-mops{margin-left:auto;display:flex;gap:6px}
.fc-frow{display:flex;align-items:center;gap:10px;margin:10px 0}
.fc-frow label{flex:none;width:78px;font-size:13px;color:var(--tx-mut);font-weight:600}
.fc-sel,.fc-inp{flex:1;padding:8px 10px;border:1px solid var(--bd);border-radius:9px;font-size:13px;background:#fff;color:var(--tx)}

/* v0.18.34 图表统一背景补全（Leo 图圈「背景图没有变化呀」）：HTML 条形图表区（排行横条/难度构成条等 div 结构）
   与 svg.chart-paper 同款纸底——渐变+纸纹+墨蓝描边+内阴影，一处定义全栈引用 */
.chart-paper-box{background:linear-gradient(180deg,rgba(251,246,233,.92),rgba(245,238,220,.94)),url('/assets/paper.webp');background-size:auto,420px 420px;background-blend-mode:multiply;border:1px solid #E4D6B8;border-radius:12px;box-shadow:inset 0 0 46px rgba(190,160,90,.10);padding:10px 12px}
.fc-flight{font-size:11.5px;color:#1F4E79;font-weight:600;white-space:nowrap}   /* v0.18.37：当日详情·到离机场时间（中国时间） */
.fc-fly{font-size:12px;font-weight:600;line-height:1.3;padding:1px 6px;border-radius:6px;color:#1F4E79;border:1px solid rgba(31,78,121,.45);background:rgba(255,255,255,.55);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}   /* v0.18.41：落地🛬/起飞🛫 标注；v0.18.42（Leo「字太小了」）：10px→12px 加粗 */
.fc-fly.study{color:#8A5A12;border-color:rgba(138,90,18,.5)}

/* v0.18.44 工厂日程弹窗体验（Leo 三点） */
.fc-page .modal-mask{align-items:center;padding:16px}                    /* 弹窗垂直居中屏幕中间（仅日程页） */
.fc-pick-hint{font-size:12.5px;color:#8A5A12;font-weight:600;padding:2px 0 0}  /* 「请先选择类型」提示 */
.fc-off{opacity:.45;pointer-events:none}                                  /* 未选类型：字段区灰化禁点 */
.fc-dt-wrap{position:relative;flex:1;display:flex}
.fc-dt-wrap .fc-inp{width:100%}
.fc-dt.empty{color:transparent}                                           /* datetime 空值时隐藏原生「年/月/日 --:--」 */
.fc-dt-ph{position:absolute;left:10px;top:50%;transform:translateY(-50%);font-size:12.5px;color:var(--tx-mut);pointer-events:none;white-space:nowrap}

/* v0.18.46 生产制造一人多岗：员工卡片第二行全部二级岗位 */
.emp-pos2{display:flex;flex-wrap:wrap;gap:4px;margin-top:3px}
.emp-pos-chip{font-size:10.5px;font-weight:700;padding:1.5px 7px;border-radius:99px;background:rgba(31,78,121,.10);color:#1F4E79;border:1px solid rgba(31,78,121,.28)}
.emp-pos-chip.main{background:rgba(138,90,18,.12);color:#8A5A12;border-color:rgba(138,90,18,.38)}

/* v0.18.51 月历 chip 两行（Leo 定版：第一行名字/第二行 任务·第N天） */
.fc-chip{line-height:1.2;padding:2.5px 6px}
.fc-chip-n{display:block;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fc-chip-t{display:block;font-size:10.5px;opacity:.92;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* v0.18.53 航班标注两行（Leo 定版：第一行名字/第二行 🛬🛫+时刻） */
.fc-fly{white-space:normal}
.fc-fly-n{display:block;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fc-fly-t{display:block;font-size:10.5px;white-space:nowrap}

/* ===== 手碟音区数据推算（v0.18.54 Leo 定版） ===== */
.tz-pgrps{display:grid;grid-template-columns:auto 1fr 1fr;gap:14px 26px;margin-top:6px}
.tz-pgrp-t{display:block;font-size:13px;color:var(--tx-mut);margin-bottom:6px}
.tz-prow{display:flex;align-items:center;gap:8px;margin:5px 0;font-size:13px}
.tz-prow label{flex:none;width:132px;color:var(--tx-mut);font-weight:600;font-size:12.5px}
.tz-num{width:150px;padding:4px 6px;border:1px solid var(--bd);border-radius:7px;font-size:13px;text-align:center;font-weight:700;background:#fff;color:var(--tx)}   /* v0.18.74：86→150px 加宽，17 位全精度面积基准也完整显示 */
.tz-num-ro{width:150px;text-align:center;font-size:13px}
.tz-tbl th,.tz-tbl td{white-space:nowrap}
.tz-thz{background:rgba(31,78,121,.10);color:#1F4E79}
.tz-thd{background:rgba(138,90,18,.10);color:#8A5A12}
.tz-ellipse{width:58px;height:32px;display:block;margin:0 auto}   /* v0.18.86：缩略图 44×29→58×32 */

/* v0.18.77（Leo 图圈）：栏目横条改显式分行（subNavRows/.subnav-row）——手碟生产数据第二行=音区推算/音区数据/调式库；
   旧 :has(≥7钮) 自动换行规则退役（仅手碟生产数据触发过，显式分行全替代）；紧凑密度只作用于多行横条，单行栏目原样不动 */
.subnav-bar:has(.subnav-row:nth-child(2)) .subnav-btn{padding:10px 10px;font-size:13.5px}
.fc-endauto{font-size:14px;color:#1F4E79}   /* v0.18.55：自动生成的结束日期 */

/* v0.18.55 航班航线卡与表单提示 */
.fc-vrow{border-bottom:1px dashed var(--bd);padding:2px 0}
.fc-vrow:last-of-type{border-bottom:none}
.fc-flt{margin:2px 0 8px 6px;padding:7px 10px;border-radius:9px;background:rgba(31,78,121,.06);border:1px solid rgba(31,78,121,.18);font-size:12px}
.fc-flt-row{display:flex;align-items:center;gap:7px;flex-wrap:wrap;padding:2px 0}
.fc-flt-ic{font-size:13px}
.fc-flt-live{display:inline-flex;align-items:center;gap:7px;flex-wrap:wrap}
.fc-flt-live i{font-style:normal;color:var(--tx-mut)}
.fc-flt-st{font-style:normal;font-weight:800;padding:1px 8px;border-radius:99px;background:rgba(31,78,121,.14);color:#1F4E79}
.fc-flt-st.active{background:rgba(46,107,79,.16);color:#2E6B4F}
.fc-flt-st.landed{background:rgba(138,90,18,.16);color:#8A5A12}
.fc-flt-st.cancelled{background:rgba(176,58,46,.16);color:#B03A2E}
.fc-fhint{margin:-4px 0 8px 88px;font-size:12px;color:#1F4E79;font-weight:600}

/* v0.18.56 音区推算分组顺排（仿音区数据页） */
.tz-grp{margin-top:14px}
.tz-grp-t{font-size:13.5px;font-weight:800;color:var(--tx-mut);padding:4px 2px 6px;letter-spacing:1px}
.tz-base{background:rgba(138,90,18,.10)}
.tz-base-tag{display:inline-block;margin-left:6px;padding:0 7px;border-radius:99px;background:#8A5A12;color:#fff;font-size:10px;font-weight:800;line-height:16px;vertical-align:1px}

/* v0.18.57 申请/新建表单修正 */
.fc-frow label{white-space:nowrap;flex:none;min-width:78px;width:auto}   /* 「结束日期（自动）」等长 label 不折行 */
.fc-auto-time{flex:1;font-size:13px;font-weight:700;color:#1F4E79;padding:8px 10px;border:1px dashed rgba(31,78,121,.35);border-radius:9px;background:rgba(31,78,121,.05)}   /* 机场时间=航班检索自动生成（只读显示） */
.fc-auto-time.mut{color:var(--tx-mut);font-weight:500}

/* v0.18.58 音区推算表细节（Leo 四点） */
.tz-tbl th,.tz-tbl td{padding:4px 8px;line-height:1.5}                      /* 数据密集 */
.tz-thz,.tz-thd{text-align:center}                                          /* 分组标题居中 */
.tz-tbl .tz-sep{border-left:1.5px solid rgba(122,111,92,.35)}               /* 音区|Dimple 间、示意列前 竖线 */
.tz-tbl thead .tz-thd.tz-sep{border-left-color:rgba(138,90,18,.4)}
.tz-tbl thead th.tz-thz,.tz-tbl thead th.tz-thd{text-align:center}   /* v0.18.58 补强：分组标题居中（特异度压 .tbl th） */

/* ===== 航班实时详情弹窗（v0.18.59 Leo 定版：航旅纵横式） ===== */
.fc-fly{cursor:pointer}
.fc-flt-link{cursor:pointer}
.fc-flt-link:hover{background:rgba(31,78,121,.12)}
.fd-modal{max-width:min(720px,96vw);padding:0;overflow:hidden}
.fd-head{display:flex;align-items:center;gap:10px;padding:14px 18px 10px;flex-wrap:wrap}
.fd-airline{font-size:17px;font-weight:800;color:#1F4E79}
.fd-no{font-size:15px;font-weight:800;color:var(--tx)}
.fd-meta{font-size:12px;color:var(--tx-mut)}
.fd-st{margin-left:auto;font-size:12px;font-weight:800;padding:3px 12px;border-radius:99px;background:rgba(138,90,18,.14);color:#8A5A12}
.fd-st.active{background:rgba(31,78,121,.14);color:#1F4E79}
.fd-st.landed{background:rgba(46,107,79,.16);color:#2E6B4F}
.fd-st.cancelled{background:rgba(176,58,46,.16);color:#B03A2E}
.fd-x{margin-left:4px}
.fd-banner{margin:0 18px;padding:9px 14px;border-radius:10px;font-size:13.5px;font-weight:800;background:rgba(138,90,18,.10);color:#8A5A12}
.fd-banner.active{background:rgba(31,78,121,.10);color:#1F4E79}
.fd-banner.landed{background:rgba(46,107,79,.12);color:#2E6B4F}
.fd-banner.cancelled{background:rgba(176,58,46,.12);color:#B03A2E}
.fd-route{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:16px 26px 6px}
.fd-apt{flex:1;min-width:0}
.fd-apt.r{text-align:right}
.fd-apt-name{font-size:14.5px;font-weight:800;color:var(--tx);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fd-lbl{font-size:11.5px;color:var(--tx-mut);margin-top:5px}
.fd-big{font-size:34px;font-weight:800;line-height:1.15;color:#1F4E79;font-variant-numeric:tabular-nums}
.fd-plan{font-size:12px;color:var(--tx-mut);min-height:16px}
.fd-mid{flex:none;display:flex;align-items:center;gap:6px;padding-top:34px;width:110px}
.fd-mid i{flex:1;height:1.5px;background:repeating-linear-gradient(90deg,rgba(122,111,92,.5) 0 5px,transparent 5px 9px)}
.fd-mid span{font-size:16px;color:#1F4E79}
.fd-map{padding:8px 18px 0}
.fd-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;padding:12px 18px 0}
.fd-cell{background:var(--card-bg2,rgba(0,0,0,.02));border:1px solid var(--bd);border-radius:9px;padding:8px 10px;text-align:center}
.fd-cell label{display:block;font-size:11px;color:var(--tx-mut);margin-bottom:3px}
.fd-cell b{font-size:13.5px;font-weight:800;color:var(--tx)}
.fd-chain{padding:10px 18px 0}
.fd-chain h4{margin:0 0 8px;font-size:13px;color:var(--tx-mut)}
.fd-chain-row{display:flex;align-items:flex-start}
.fd-node{flex:none;text-align:center;min-width:72px}
.fd-node i{display:block;width:12px;height:12px;margin:0 auto 5px;border-radius:50%;border:2.5px solid rgba(122,111,92,.4);background:var(--card-bg)}
.fd-node.done i{background:#2E6B4F;border-color:#2E6B4F}
.fd-node.cur i{background:#8A5A12;border-color:#8A5A12;box-shadow:0 0 0 4px rgba(138,90,18,.18)}
.fd-node b{display:block;font-size:12.5px;color:var(--tx)}
.fd-node span{display:block;font-size:13px;font-weight:800;color:#1F4E79;font-variant-numeric:tabular-nums}
.fd-node small{display:block;font-size:10.5px;color:var(--tx-mut)}
.fd-node:not(.done):not(.cur) b,.fd-node:not(.done):not(.cur) span{color:var(--tx-mut);font-weight:600}
.fd-link{flex:1;height:2.5px;margin-top:10px;background:rgba(122,111,92,.3);border-radius:2px}
.fd-link.done{background:#2E6B4F}
.fd-upd{padding:10px 18px 14px;font-size:11.5px;color:var(--tx-mut);text-align:right}
@media (max-width:760px){
  .fd-big{font-size:27px}
  .fd-route{padding:14px 16px 4px}
  .fd-grid{grid-template-columns:repeat(2,1fr)}
  .fd-mid{width:64px}
  .fd-node{min-width:58px}
}

/* v0.18.61 排单规则：岗位人员 姓名/编号成对逐行对齐（Leo 图圈「这个列要对齐」） */
.pl-people{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
.pl-pair{display:flex;align-items:baseline;gap:10px;line-height:18px}
.pl-pair .pl-names{flex:none;width:212px;font-weight:600;font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pl-pair .pl-codes{flex:none;font-size:12px;white-space:nowrap}

/* v0.18.62 音区推算表列距与加黑（Leo 六点） */
.tbl.tz-tbl{table-layout:auto;width:auto;max-width:100%}                 /* 各列间距收紧（按内容宽，不再均摊撑满） */
.tz-tbl .tz-sep{padding-left:20px}                                        /* 两条竖线前留距离（竖线=分隔列左边线） */
.tz-tbl td:nth-child(6),.tz-tbl th:nth-child(6){padding-right:20px}       /* 音区短轴列 与 竖线之间留距 */
.tz-tbl td:nth-child(10),.tz-tbl th:nth-child(10){padding-right:20px}     /* Dimple短轴列 与 竖线之间留距 */
.tz-axis b{font-weight:800;color:#221C12}                                  /* 长短轴数值加黑 */

/* v0.18.64 排单规则行布局（Leo 两图）：①人员列钉宽=最宽行（精调 4名+4编号），右侧「早于调音日」「日产」两块全部列对齐并贴近编号（不再顶到最右大留白）；②精调锚点文字与「早于调音日」列同起点 */
.pl-people{flex:none;width:460px;margin-right:10px}
@media(max-width:1100px){.pl-people{width:auto;flex:1 1 100%}}

/* v0.18.65 音区推算六改（Leo 六图） */
.tz-alias{font-weight:800;color:#221C12}                                   /* ①音名别名加黑 */
.tz-groups{display:flex;flex-wrap:wrap;gap:16px 22px;align-items:flex-start}   /* ②分组并排（三组挪二组旁，各组同） */
.tz-tbl thead th.tz-ctr{text-align:center}                                  /* ④示意表头居中 */
.tz-zoomcell{cursor:pointer}
.tz-zoomcell:hover .tz-ellipse{filter:drop-shadow(0 0 3px rgba(31,78,121,.55))}
.tz-zmodal{max-width:min(620px,96vw);padding:18px}
.tz-zlegend{display:flex;flex-direction:column;gap:3px;padding:10px 2px 12px;font-size:13px}
.tz-zlegend .z-z{color:#1F4E79;font-weight:700}
.tz-zlegend .z-d{color:#8A5A12;font-weight:700}
@media(max-width:700px){.tz-groups{flex-direction:column}}

/* v0.18.65 补：表宽压缩让两/三组并排（别名堆叠+收紧） */
.tz-tbl th,.tz-tbl td{padding:3px 5px;font-size:12.5px}
.tz-alias{display:block;font-size:10.5px;line-height:1.2}
.tz-groups .tz-grp{flex:1 1 640px;min-width:0}
.tz-tbl th,.tz-tbl td{padding:3px 4px}   /* v0.18.65 补2：再压 22px，保证常见宽度下并排无内滚 */
.pc-rough{background:#eaf2fb;color:#2f5d8f}   /* v0.18.66：粗调推导行（调音蓝浅档，与精调 pc-fine 区分） */

/* v0.18.67（Leo 图圈「留白太多了，规范一下呀」）：分组改网格拉伸——每行两张表各自拉满列宽，整行铺满页面不再右侧大留白 */
.tz-groups{display:grid;grid-template-columns:repeat(auto-fill,minmax(720px,1fr));gap:16px 22px}   /* v0.18.83：640→720——不足即换单列整宽，不硬挤两张 */
.tz-groups .tz-grp{flex:none;min-width:0}
.tbl.tz-tbl{width:100%;max-width:920px}   /* 表随列宽拉伸（上限 920 防超宽屏单列过度拉散）；列内容仍右对齐 */
@media(max-width:700px){.tz-groups{display:block}}

/* v0.18.70（Leo 图圈「所有的列重新排版吧，让页面更加漂亮」）：音区推算表列版式整体重排——
   ①固定布局：音名 62px/示意 56px 钉宽，9 个数字列等宽均分（各行格子严格对齐成棋盘）；
   ②等宽数字 tabular-nums（同列数字上下逐位对齐）+统一行高；③表头两行：分组色带+组色 2px 底线、
   子标题行 11px 灰字细线收底；④斑马纹+行 hover（基准行保账本金底）；⑤窄屏 min-width 内滚不挤字 */
.tbl.tz-tbl{table-layout:fixed;min-width:720px;border-collapse:separate;border-spacing:0}   /* v0.18.86：700→720（示意列加宽 20） */
.tz-tbl th,.tz-tbl td{padding:7px 4px;font-size:12.5px;font-variant-numeric:tabular-nums}
.tz-tbl .tz-sep{padding-left:4px}                                     /* 固定布局等宽后，竖线列不再额外顶距 */
.tz-tbl td:nth-child(6),.tz-tbl th:nth-child(6),
.tz-tbl td:nth-child(10),.tz-tbl th:nth-child(10){padding-right:4px}
.tz-tbl thead tr:first-child th:first-child{width:64px}               /* 音名列钉宽（与 colgroup 一致，col 权威） */
.tz-tbl thead tr:first-child th:last-child{width:72px}                /* 示意列钉宽（与 colgroup 一致，v0.18.86 加宽） */
.tz-tbl thead th[rowspan]{vertical-align:middle}
.tz-tbl thead .tz-thz{background:rgba(255,252,240,.55);box-shadow:inset 0 -2px 0 rgba(31,78,121,.45)}   /* v0.18.73（Leo 图圈「不要变成特殊颜色」）：分组格背景统一纸底（同子标题行），仅留组色文字+底线 */
.tz-tbl thead .tz-thd{background:rgba(255,252,240,.55);box-shadow:inset 0 -2px 0 rgba(138,90,18,.45)}
.tz-tbl thead tr:nth-child(2) th{font-size:11px;font-weight:600;color:var(--tx-mut);background:rgba(255,252,240,.55);box-shadow:inset 0 -1.5px 0 rgba(122,111,92,.42);padding-top:5px;padding-bottom:5px}
.tz-tbl thead tr:first-child th:first-child,.tz-tbl thead tr:first-child th:last-child{box-shadow:inset 0 -1.5px 0 rgba(122,111,92,.42)}
.tz-tbl tbody tr:nth-child(even):not(.tz-base){background:rgba(31,78,121,.04)}
/* v0.21.03（Leo）：.tz-tbl 行 hover 变色一并删除（全栈统一，含基准行 hover 加深） */
.tz-tbl td.tz-zoomcell{vertical-align:middle}

/* v0.18.81 生成到音区数据 确认弹窗（Leo「放到页面中间，并且改变窗口美化」） */
.tz-acfm{max-width:min(500px,94vw)}
.tz-acfm-body{display:flex;flex-direction:column;gap:7px;font-size:13.5px;line-height:1.6}
.tz-acfm-body p{margin:0}
.tz-acfm-cn{color:#8A5A12;font-weight:800}
.tz-acfm-warn{padding:7px 10px;border-radius:9px;background:rgba(176,58,46,.08);border:1px solid rgba(176,58,46,.25);color:#B03A2E;font-weight:600;font-size:12.5px;line-height:1.55}
.tz-acfm-foot{display:flex;justify-content:flex-end;gap:10px;margin-top:16px;padding-top:12px;border-top:1px dashed var(--bd)}

/* v0.18.71（Leo 三图）：①推算表内容列全部列居中（td/th 的 r→ctr 已模板内改）；②音名别名字号与音名一致（12.5px 加黑），无别名行保留空行——每行高度严格一致；③音区数据页升降音双名同显（F#2 | Gb2 同字号加黑），Hz 独立第二行——行高一致 */
.tz-alias{display:block;font-size:12.5px;line-height:1.35;min-height:1.35em;font-weight:800;color:#221C12}
.tz-tbl td{vertical-align:middle}
.tf-alias{font-weight:800;color:#221C12}
.tf-tbl td .tf-hz{display:block;margin-left:0;font-size:11px;line-height:1.35}
.tf-tbl2 .tf-nh{width:96px}

/* v0.18.87（Leo）：手改值账金色高亮（推算生成/Excel 导入写入时回常态）；
   v0.18.90（Leo 图圈「不要悬浮，固定在页面底部」）：fixed 底栏退役——文档流内页面底部普通卡 */
.tf-step input.tf-mod{color:#8A5A12;font-weight:800;border-color:rgba(138,90,18,.55);background:rgba(138,90,18,.08)}

/* v0.18.88（Leo 五图）：页头页签条（方案子页面切换）——页签跟随页题，小胶囊；
   v0.18.89（Leo 图圈）：页签条移出标题行，放标题正下方单独一行 */
.tz-ptabs{margin:-6px 0 14px}
.tz-ptabs .seg-btn{padding:6px 14px;font-size:12.5px}
@media(max-width:760px){.tz-ptabs{overflow-x:auto}}

/* v0.20.53 压壳辅材数据页（Leo：模仿音区数据使用页版式，一音一整行，垫材双行分组表头） */
.pm-wrap{overflow-x:auto}   /* 移动端铁律：9 列宽表容器内横滚，页面不横滚 */
.pm-tbl{min-width:1060px}
.pm-tbl .tf-nh{width:96px;white-space:nowrap}
.pm-tbl th.pm-solo{min-width:96px;text-align:center;border-left:1px solid var(--bd);vertical-align:middle}
.pm-tbl th.pm-gh{text-align:center;font-weight:700;color:var(--tx);background:rgba(31,78,121,.08);border-left:1px solid var(--bd)}
.pm-tbl th.pm-gh2{background:rgba(138,90,18,.10)}   /* 壳内组淡账金区分壳外淡墨蓝 */
.pm-tbl th.pm-sh{font-size:11.5px;font-weight:600;color:var(--tx-mut);text-align:center;min-width:92px;border-left:1px solid var(--bd)}
.pm-tbl th.pm-sh2{border-left:1px solid var(--bd)}
.pm-tbl td.pm-c{text-align:center;border-left:1px solid var(--bd);vertical-align:middle}
.pm-inp{width:100%;min-width:76px;border:1px solid var(--bd);border-radius:6px;padding:5px 7px;font-size:12.5px;background:#fff;text-align:center}
.pm-inp::placeholder{color:#C9C2B2}
.pm-inp:focus{outline:none;border-color:var(--brand,#2B7FFF);box-shadow:0 0 0 2px rgba(43,127,255,.12)}

/* v0.20.55 压壳垫材设置页 + 推算页四行单元格 */
.pm-addrow{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.pm-f-inp{border:1px solid var(--bd);border-radius:7px;padding:6px 9px;font-size:13px;background:#fff}
.pm-f-inp:focus{outline:none;border-color:var(--brand,#2B7FFF);box-shadow:0 0 0 2px rgba(43,127,255,.12)}
.pm-c4{min-width:150px}
.pm-c4 .pm-ln{display:flex;justify-content:center;align-items:center;padding:1px 0}
.pm-c4 .pm-base{font-size:12.5px;font-weight:600;color:var(--tx-mut)}   /* ①Dimple 调用值 */
.pm-c4 .pm-new{font-size:13px;font-weight:700;color:var(--brand-d,#1B5FD9)}   /* ③新数据 */
.pm-inc{width:74px;border:1px solid var(--bd);border-radius:6px;padding:3px 6px;font-size:12px;text-align:center;background:#FFFDF5}
.pm-inc:focus{outline:none;border-color:var(--brand,#2B7FFF)}
.pm-sel{max-width:150px;border:1px solid var(--bd);border-radius:6px;padding:3px 5px;font-size:12px;background:#fff}
.pm-save-dirty{box-shadow:0 0 0 2px rgba(184,145,47,.55)}

/* v0.20.56 增长值双输入框（长轴×短轴） */
.pm-x{color:var(--tx-mut);font-size:11px;margin:0 1px}

/* v0.20.57 增长值步进箭头（◀ 值 ▶ × ◀ 值 ▶） */
.pm-c4{min-width:196px}
.pm-step{display:inline-flex;align-items:center;gap:2px}
.pm-sbtn{width:17px;height:22px;border:1px solid var(--bd);background:#F4F1E8;border-radius:5px;font-size:9px;cursor:pointer;color:var(--tx-mut);padding:0;line-height:1}
.pm-sbtn:hover{background:#EAE4D3;color:var(--tx)}
.pm-sbtn:active{transform:translateY(1px)}
.pm-step .pm-inc{width:46px;padding:3px 4px;font-size:11.5px}

/* v0.20.58 四行单元格行间距扩大（Leo：「行间距适当扩大」）+ 按住连步防误选 */
.pm-tbl td{padding:13px 10px}
.pm-c4 .pm-ln{padding:4px 0}
.pm-sbtn{user-select:none;-webkit-user-select:none;touch-action:none}

/* v0.20.60（Leo：「输入框显示不全了，至少要能显示+99.99的宽度」）增长值输入框加宽 */
.pm-step .pm-inc{width:58px}
.pm-c4{min-width:224px}

/* v0.20.63 厚度设定行（mm 正数两位） */
.pm-thick{gap:4px}
.pm-tlab{font-size:11px;color:var(--tx-mut)}
.pm-tunit{font-size:11px;color:var(--tx-mut)}
.pm-thick-inp{width:56px;background:#FFFDF5}

/* v0.20.64 厚度行步进箭头适配 */
.pm-thick .pm-step .pm-thick-inp{width:50px;padding:3px 4px;font-size:11.5px}

/* v0.20.65 缩略图 + 放大示意图弹窗（Leo：「下方增加缩略图，可以点开放大。数据来源是第三行」） */
.pm-thumb{cursor:zoom-in;background:#FDFBF3;border:1px solid var(--bd);border-radius:6px;display:block}
.pm-thumb:hover{border-color:var(--brand,#2B7FFF);box-shadow:0 0 0 2px rgba(43,127,255,.12)}
.pm-zoom-mask{position:fixed;inset:0;background:rgba(24,28,36,.45);backdrop-filter:blur(2px);z-index:1200;display:flex;align-items:center;justify-content:center}
.pm-zoom-card{background:#fff;border-radius:14px;box-shadow:0 18px 60px rgba(0,0,0,.3);padding:16px 18px;width:440px;max-width:92vw}
.pm-zoom-h{display:flex;align-items:center;gap:8px;margin-bottom:8px;font-size:14.5px}
.pm-zoom-svg{width:100%;border-radius:10px;border:1px solid var(--bd);display:block}
.pm-zoom-f{margin-top:8px;font-size:12.5px;color:var(--tx-mut);text-align:center}

/* v0.20.66 推算页区块/组切换钮（Leo：「在这个位置做两个按钮吧，一个标准音区、一个Ding音」「在这个位置做按钮，变成2组音、3组音等」） */
.pm-sectab{margin:0 0 14px}
.pm-sectab .seg-btn{padding:7px 18px;font-size:13px}
.pm-grptab{margin:0 0 12px;flex-wrap:wrap}
.pm-grptab .seg-btn{padding:5px 13px;font-size:12.5px}

/* v0.20.69 单元格块间虚线分割（Leo：「加一条虚显直线，分割上面三行和下面内容」「加两条虚显直线，分割内容」） */
.pm-div{border-top:1px dashed rgba(31,28,22,.22); margin:5px 8px 3px}

/* v0.20.71 放大弹窗材料厚度行（Leo：「显示材料和厚度」） */
.pm-zoom-m{margin-top:6px;font-size:12.5px;color:var(--tx-mut);text-align:center}
.pm-zoom-m b{color:var(--tx);font-weight:700}

/* v0.20.82（Leo：「加粗」「和其他单元格颜色一样」）：推算页表头统一加粗；垫材组表头背景回归表格默认底色（不再淡墨蓝/淡账金） */
.pm-tbl thead th{font-weight:700}
.pm-tbl th.pm-gh, .pm-tbl th.pm-gh2{background:var(--thead-bg)}

/* v0.20.82 补：子列头同步加粗（.pm-sh 原 600 特异度更高，须同特异度+后置覆盖） */
.pm-tbl thead th.pm-sh{font-weight:700}

/* v0.20.83（Leo：「不加粗」）：垫材组表头回归常规字重（列头加粗保留） */
.pm-tbl thead th.pm-gh{font-weight:500}

/* v0.21.00（Leo 图6/7：组头字体改成跟「压标准音区Dimple硅胶」一样）：字重 700 + 颜色 tx-mut（与 .pm-solo 同源） */
.pm-tbl thead th.pm-gh{font-weight:700;color:var(--tx-mut)}

/* v0.20.86（Leo：「调整，既要显示完整，又不能折行」）：推算表紧凑化——总宽压进内容区一屏显示 + 全内容不折行 */
.pm-tbl{min-width:1150px}
.pm-tbl .tf-nh{width:84px;white-space:nowrap}
.pm-tbl td{white-space:nowrap;padding:10px 6px}
.pm-c4{min-width:152px}
.pm-c4 .pm-ln{white-space:nowrap}
.pm-c4 .pm-base{font-size:11.5px}
.pm-c4 .pm-new{font-size:12px}
.pm-sbtn{width:15px;height:20px;font-size:8px}
.pm-step .pm-inc{width:42px;font-size:11px;padding:3px 3px}
.pm-thick .pm-step .pm-thick-inp{width:42px}
.pm-sel{max-width:122px;font-size:11px}
.pm-thumb{width:52px;height:34px}
.pm-tlab,.pm-tunit{font-size:10px}

/* v0.20.86 补压：实测 1305 仍超容器 1183——字号/步进器/间距再收一档 */
.pm-tbl{min-width:1080px}
.pm-tbl .tf-nh{width:76px}
.pm-tbl td{padding:10px 4px}
.pm-c4{min-width:136px}
.pm-c4 .pm-base{font-size:10.5px}
.pm-c4 .pm-new{font-size:11px}
.pm-sbtn{width:13px;height:18px;font-size:7px}
.pm-step .pm-inc{width:38px;font-size:10.5px}
.pm-thick .pm-step .pm-thick-inp{width:38px}
.pm-sel{max-width:108px;font-size:10.5px}
.pm-thumb{width:46px;height:30px}

/* v0.20.87 邮箱嵌入页（三栏：文件夹 | 列表 | 阅读窗，仿 QQ 邮箱） */
/* v0.20.99（Leo）：邮箱系统整体统一金色系——容器级覆盖主题变量，凡 var(--brand) 引用点（文件夹选中/未读点/未读徽标/折叠钮/seg 选中）全部变账本金 */
.mbx{--brand:#8A5A12;--brand-d:#6F480E;--brand-l:#F7F0DD;--row-hover:rgba(138,90,18,.07)}
.mbx-grid{display:grid;grid-template-columns:180px 340px 1fr;gap:12px;align-items:stretch;height:calc(100vh - 170px)}   /* v0.21.83：min-height:480 移除（矮视口硬顶出页面滚动条）；height 仅为首屏占位——组件挂载后 JS 实测剩余高度接管 */
.mbx-side{padding:14px 10px;overflow-y:auto}
.mbx-folder{padding:7px 10px;border-radius:8px;cursor:pointer;font-size:13px;color:var(--tx);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mbx-folder:hover{background:var(--row-hover)}
.mbx-folder.on{background:var(--brand,#2B7FFF);color:#fff;font-weight:600}
.mbx-list{display:flex;flex-direction:column;padding:0;overflow:hidden}
.mbx-list-h{display:flex;align-items:center;gap:8px;padding:12px 14px;border-bottom:1px solid var(--bd)}
.mbx-items{flex:1;overflow-y:auto}
.mbx-item{padding:9px 14px;border-bottom:1px solid var(--bd);cursor:pointer}
.mbx-item:hover{background:var(--row-hover)}
.mbx-item.on{background:rgba(138,90,18,.10);box-shadow:inset 3px 0 0 var(--brand)}   /* v0.20.99：统一金色系 */
.mbx-item-t1{display:flex;align-items:center;gap:6px}
.mbx-dot{width:7px;height:7px;border-radius:50%;background:var(--brand,#2B7FFF);flex:none}
.mbx-from{flex:1;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:500}
.mbx-item.unread .mbx-from{font-weight:700}
.mbx-date{font-size:11.5px;color:var(--tx-mut);flex:none}
.mbx-item-t2{font-size:12px;color:var(--tx-mut);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}
.mbx-item.unread .mbx-item-t2{color:var(--tx);font-weight:600}
.mbx-pager{display:flex;align-items:center;justify-content:center;gap:10px;padding:9px;border-top:1px solid var(--bd)}
.mbx-read{display:flex;flex-direction:column;padding:0;overflow:hidden}
.mbx-read-h{padding:14px 16px 10px;border-bottom:1px solid var(--bd)}
.mbx-subj{font-size:16px;font-weight:700;margin-bottom:8px;word-break:break-all}
.mbx-meta{font-size:12.5px;color:var(--tx);line-height:1.8;word-break:break-all}
.mbx-acts{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}
.mbx-atts{display:flex;gap:6px;align-items:center;margin-top:10px;flex-wrap:wrap}
.mbx-body{flex:1;border:0;width:100%;background:#fff;border-radius:0 0 12px 12px}
/* 移动端：三栏收单列，列表限高 */
@media (max-width:1100px){
  .mbx-grid{grid-template-columns:1fr;height:auto}
  .mbx-side{display:flex;gap:6px;overflow-x:auto;padding:10px}
  .mbx-side .btn{width:auto !important;flex:none;margin-bottom:0 !important}
  .mbx-folder{flex:none}
  .mbx-items{max-height:300px}
  .mbx-read{min-height:60vh}
}

/* v0.20.91 邮箱排版模式（Leo：「有几种先进的排版模式可以选择吗」）：三栏 tri / 上下 vert / 单栏 single */
/* 上下式：文件夹横排置顶，列表与阅读窗上下均分 */
.mbx-grid.lay-vert{grid-template-columns:1fr;grid-template-rows:auto minmax(0,1fr) minmax(0,1.2fr)}
.lay-vert .mbx-side{display:flex;gap:6px;overflow-x:auto;padding:10px;align-items:center}
.lay-vert .mbx-side .btn{width:auto !important;flex:none;margin-bottom:0 !important}
.lay-vert .mbx-folder{flex:none}
.lay-vert .mbx-list{min-height:0}
.lay-vert .mbx-read{min-height:0}
/* 单栏式（Gmail 风）：文件夹横排+列表全宽；点开邮件阅读窗全屏覆盖 */
.mbx-grid.lay-single{grid-template-columns:1fr;position:relative}
.lay-single .mbx-side{display:flex;gap:6px;overflow-x:auto;padding:10px;align-items:center}
.lay-single .mbx-side .btn{width:auto !important;flex:none;margin-bottom:0 !important}
.lay-single .mbx-folder{flex:none}
.lay-single .mbx-list{min-height:56vh}
.lay-single .mbx-read{position:absolute;inset:0;z-index:60;min-height:0;box-shadow:0 8px 40px rgba(0,0,0,.18)}

/* v0.20.92 邮箱三栏美化（Leo：「哪种看着最舒服，请你帮我套用，顺便美化了」）：文件夹图标/未读徽标/发件人字徽 */
.mbx-folder{display:flex;align-items:center;gap:7px}
.mbx-fic{flex:none;font-size:13px;width:18px;text-align:center}
.mbx-folder .mbx-fname{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mbx-unread{flex:none;background:var(--brand,#2B7FFF);color:#fff;font-size:10.5px;font-weight:700;border-radius:9px;padding:0 6px;line-height:16px;height:16px}
.mbx-folder.on .mbx-unread{background:rgba(255,255,255,.28)}
.mbx-item{display:flex;align-items:center;gap:10px}
.mbx-ava{flex:none;width:34px;height:34px;border-radius:50%;color:#fff;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;box-shadow:0 1px 3px rgba(0,0,0,.18)}
.mbx-item-main{flex:1;min-width:0}
.mbx-item .mbx-dot{flex:none;align-self:center}

/* v0.20.93 邮箱客户归类（Leo：客户引入邮箱+订单/日常自动分类） */
.mbx-custh{margin:14px 4px 6px;padding-top:12px;border-top:1px dashed var(--bd);font-size:12px;font-weight:700;color:var(--tx-mut)}
.mbx-ccomp{color:var(--tx-mut);font-size:11.5px;font-weight:400}
.mbx-cchip{display:inline-block;background:rgba(138,90,18,.13);color:var(--brand-d);font-size:10.5px;font-weight:700;border-radius:4px;padding:0 5px;line-height:15px;margin-right:4px;vertical-align:1px}   /* v0.20.99：统一金色系 */
.mbx-kchip{display:inline-block;font-size:10.5px;font-weight:700;border-radius:4px;padding:0 5px;line-height:15px;margin-right:4px;vertical-align:1px}
.mbx-kchip.ord{background:rgba(138,90,18,.14);color:#8A5A12}

/* v0.20.94 邮箱布局定版（Leo 五图：列表挪最右+右向收缩 / 文件夹栏 1.5 倍宽 / 删排版切换组 / 删页头 / 写信弹窗 3/4 屏） */
.mbx-grid{grid-template-columns:270px 1fr 340px;height:calc(100vh - 120px)}   /* 栏序=文件夹|阅读|列表；文件夹 270=180×1.5；页头删除后高度回收 */
.mbx-grid.fold{grid-template-columns:270px 1fr 26px}
.mbx-list{position:relative}
.mbx-list .mbx-list-h{padding-right:30px}   /* 让位折叠钮 */
.mbx-foldbtn{position:absolute;top:7px;right:6px;z-index:5;width:21px;height:32px;border:1px solid var(--bd);background:#fff;border-radius:7px;cursor:pointer;color:var(--tx-mut);font-size:12px;line-height:1;padding:0}
.mbx-foldbtn:hover{color:var(--brand,#2B7FFF);border-color:var(--brand,#2B7FFF)}
.mbx-list.folded{padding:0;overflow:hidden;display:flex;align-items:flex-start;justify-content:center}
.mbx-list.folded .mbx-foldbtn{position:static;width:100%;height:64px;border:none;border-radius:12px;color:var(--brand,#2B7FFF)}
/* 写信弹窗 3/4 屏（v0.20.98 富文本+美化重做；v0.20.99 头部深金统一+草稿记忆） */
.modal.mbx-compose{width:75vw;max-width:75vw;height:75vh;max-height:75vh;display:flex;flex-direction:column;overflow:hidden;padding:0;border-radius:14px;box-shadow:0 18px 60px rgba(60,45,10,.28);position:relative}
.mbx-cmp-head{display:flex;align-items:center;gap:12px;padding:13px 20px;background:linear-gradient(135deg,#96691a,#7a5410);border-bottom:1px solid #6F480E;flex:none}
.mbx-cmp-ico{font-size:22px;filter:drop-shadow(0 2px 3px rgba(0,0,0,.25))}
.mbx-cmp-tt{display:flex;flex-direction:column;line-height:1.25}
.mbx-cmp-tt b{font-size:17px;color:#fff;letter-spacing:3px;text-shadow:0 1px 2px rgba(0,0,0,.2)}
.mbx-cmp-tt i{font-style:normal;font-size:9px;color:rgba(255,255,255,.62);letter-spacing:3.5px}
.mbx-cmp-draft{margin-left:14px;font-size:11.5px;color:rgba(255,255,255,.78);background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.22);border-radius:14px;padding:3px 11px;white-space:nowrap}
.mbx-cmp-x{margin-left:auto;width:30px;height:30px;border:none;border-radius:8px;background:transparent;font-size:20px;color:rgba(255,255,255,.75);cursor:pointer;line-height:1;flex:none}
.mbx-cmp-x:hover{background:rgba(255,255,255,.16);color:#fff}
/* v0.20.99：防误关闭内嵌确认卡 */
.mbx-cfm-mask{position:absolute;inset:0;z-index:80;background:rgba(43,32,8,.38);display:flex;align-items:center;justify-content:center;border-radius:14px}
.mbx-cfm{background:#fffdf6;border:1px solid rgba(138,90,18,.35);border-radius:14px;box-shadow:0 16px 50px rgba(43,32,8,.35);padding:24px 30px;text-align:center;max-width:340px}
.mbx-cfm-ico{font-size:30px;margin-bottom:6px}
.mbx-cfm b{font-size:15px;color:#2b2416;display:block;margin-bottom:6px}
.mbx-cfm p{font-size:12.5px;color:#8a7a55;line-height:1.7;margin:0 0 16px}
.mbx-cfm-btns{display:flex;gap:10px;justify-content:center}
/* 字段区：无边框下划线行（仿 163/Gmail 写信页） */
.mbx-cmp-fields{padding:2px 20px;background:#fffdf6;flex:none}
.mbx-cmp-row{position:relative;display:flex;align-items:center;gap:10px;border-bottom:1px solid #eee4cc;padding:1px 0}
.mbx-cmp-row:last-child{border-bottom:none}
.mbx-cmp-row:focus-within{border-bottom-color:#8A5A12}
.mbx-cmp-row label{width:56px;flex:none;text-align:right;font-size:13px;color:#8a7a55;letter-spacing:2px}
.mbx-cmp-row label em{color:#B03A2E;font-style:normal;margin-left:2px}
.mbx-cmp-row input{flex:1;border:none;background:transparent;padding:10px 0;font-size:14px;color:#2b2416;outline:none}
.mbx-cmp-row input::placeholder{color:#c9bb98}
.mbx-cmp-cust{flex:none;border:1px dashed rgba(138,90,18,.45);background:rgba(138,90,18,.06);color:#8A5A12;font-size:12px;padding:5px 11px;border-radius:20px;cursor:pointer;transition:all .15s;white-space:nowrap}
.mbx-cmp-cust:hover,.mbx-cmp-cust.on{background:#8A5A12;color:#fff;border-style:solid}
/* 客户选择弹层 */
.mbx-custpop{position:absolute;right:0;top:calc(100% + 6px);width:min(430px,92vw);background:#fffdf6;border:1px solid rgba(138,90,18,.3);border-radius:12px;box-shadow:0 14px 40px rgba(60,45,10,.25);z-index:50;display:flex;flex-direction:column;overflow:hidden;text-align:left}
.mbx-custpop-h{padding:10px 12px;border-bottom:1px solid #eee4cc;background:#faf4e4}
.mbx-custpop-h input{width:100%;border:1px solid rgba(138,90,18,.3);border-radius:8px;padding:8px 12px;font-size:13px;outline:none;background:#fffdf9}
.mbx-custpop-h input:focus{border-color:#8A5A12;box-shadow:0 0 0 3px rgba(138,90,18,.12)}
.mbx-custpop-list{max-height:300px;overflow-y:auto;padding:6px}
.mbx-custpop-item{padding:8px 10px;border-radius:9px;display:flex;flex-direction:column;gap:5px}
.mbx-custpop-item:hover{background:rgba(138,90,18,.07)}
.mbx-custpop-n{display:flex;align-items:baseline;gap:8px}
.mbx-custpop-n b{font-size:14px;color:#2b2416}
.mbx-custpop-n span{font-size:11px;color:#a08a58}
.mbx-custpop-es{display:flex;flex-wrap:wrap;gap:6px}
.mbx-custpop-e{font-size:12px;color:#1F4E79;background:rgba(31,78,121,.08);border:1px solid rgba(31,78,121,.2);border-radius:6px;padding:3px 9px;cursor:pointer;transition:all .12s}
.mbx-custpop-e:hover{background:#1F4E79;color:#fff}
.mbx-custpop-none{text-align:center;color:#b0a078;font-size:13px;padding:26px 0}
.mbx-custpop-f{border-top:1px solid #eee4cc;background:#faf4e4;color:#a08a58;font-size:11px;text-align:center;padding:7px}
/* 富文本工具栏 */
.mbx-cmp-bar{display:flex;align-items:center;flex-wrap:wrap;gap:3px;padding:7px 14px;background:#f7f0dd;border-top:1px solid #eadfc2;border-bottom:1px solid #eadfc2;flex:none}
.mbx-cmp-b{position:relative;height:29px;min-width:29px;padding:0 6px;border:none;border-radius:7px;background:transparent;color:#4a3f28;font-size:14px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:3px;transition:background .12s}
.mbx-cmp-b:hover{background:rgba(138,90,18,.14)}
.mbx-cmp-b.on{background:rgba(138,90,18,.2);color:#8A5A12}
.mbx-cmp-w{font-size:12px;letter-spacing:1px;padding:0 8px}
.mbx-cmp-tri{font-style:normal;font-size:10px;color:#a08a58}
.mbx-cmp-sep{width:1px;height:18px;background:rgba(138,90,18,.25);margin:0 5px;flex:none}
.mbx-cmp-a{font-weight:700;border-bottom:3px solid #B03A2E;line-height:1;padding-bottom:1px}
.mbx-cmp-hb{border-bottom:3px solid #ffe98a;line-height:1;padding-bottom:1px}
.mbx-cmp-dd{position:relative}
.mbx-cmp-menu{position:absolute;top:calc(100% + 5px);left:0;min-width:92px;background:#fffdf6;border:1px solid rgba(138,90,18,.3);border-radius:10px;box-shadow:0 10px 30px rgba(60,45,10,.22);z-index:60;padding:5px;max-height:280px;overflow-y:auto}
.mbx-cmp-menu-f{min-width:172px}
.mbx-cmp-mi{padding:7px 12px;border-radius:7px;font-size:14px;color:#2b2416;cursor:pointer;white-space:nowrap}
.mbx-cmp-mi:hover{background:rgba(138,90,18,.12)}
.mbx-cmp-mi-s{display:flex;align-items:baseline;gap:5px}
.mbx-cmp-mi-s i{font-style:normal;font-size:10px;color:#a08a58}
.mbx-cmp-menu-c{display:grid;grid-template-columns:repeat(5,26px);gap:6px;padding:9px}
.mbx-cmp-sw{width:26px;height:26px;border-radius:7px;cursor:pointer;border:1px solid rgba(0,0,0,.12);display:inline-flex;align-items:center;justify-content:center;font-size:13px;color:#999;transition:transform .1s}
.mbx-cmp-sw:hover{transform:scale(1.15)}
/* 编辑区 */
.mbx-cmp-edwrap{flex:1;min-height:0;overflow-y:auto;background:#fffdf9}
.mbx-cmp-ed{min-height:100%;padding:18px 24px;outline:none;font-size:14px;line-height:1.75;color:#2b2416;word-break:break-word}
.mbx-cmp-ed:empty:before{content:attr(data-ph);color:#c9bb98}
/* 底部 */
.mbx-cmp-foot{display:flex;align-items:center;gap:10px;padding:11px 20px;border-top:1px solid #eadfc2;background:#f7f0dd;flex:none}
.mbx-cmp-tip{flex:1;font-size:12px;color:#a08a58}
.mbx-cmp-send{padding:8px 36px;font-size:14px;letter-spacing:2px}

/* v0.20.95 客户视图列表头两行排版（Leo：「怎么能够排版这里，让这里不那么丑」） */
.mbx-list-h.cust{flex-direction:column;align-items:stretch;gap:8px;padding:10px 30px 10px 14px}
.mbx-cust-top{display:flex;align-items:center;gap:8px}
.mbx-cust-seg{display:flex;margin:0}
.mbx-cust-seg .seg-btn{flex:1;text-align:center;padding:5px 4px;font-size:11.5px;white-space:nowrap}

/* v0.20.96（Leo：「收缩箭头放到这个位置吧」）：折叠钮挪列表栏左缘中点——挂缝竖条手柄，位置不再跟头部/seg 抢位 */
.mbx-list{overflow:visible}
.mbx-foldbtn{position:absolute;left:-13px;top:50%;transform:translateY(-50%);width:14px;height:64px;border:1px solid var(--bd);border-right:none;background:#fff;border-radius:7px 0 0 7px;cursor:pointer;color:var(--tx-mut);font-size:11px;z-index:5;padding:0;line-height:1}
.mbx-foldbtn:hover{color:var(--brand,#2B7FFF);border-color:var(--brand,#2B7FFF)}
.mbx-list.folded{overflow:visible}
.mbx-list.folded .mbx-foldbtn{position:absolute;left:-13px;top:50%;transform:translateY(-50%);width:14px;height:64px;border:1px solid var(--bd);border-right:none;border-radius:7px 0 0 7px;background:#fff;color:var(--brand,#2B7FFF)}
.mbx-list .mbx-list-h{padding-right:14px}   /* 箭头挪走，头部让位回收 */

/* v0.21.03（Leo 三图定版）：压壳页 zebra 恢复（v0.21.01 的 transparent 已撤销）——Leo 看了音区页后明确要「隔行颜色不同」，昨晚的「颜色问题」真身=行 hover 变色（已全栈删除） */

/* v0.21.06（Leo：「每个直线用实线隔开」）：Ding 音 Dimple硅胶列 6 块之间实线分隔条（区别于块内 pm-div 虚线） */
.pm-div-s{height:0;border-top:1.5px solid rgba(122,111,92,.5);margin:10px 4px 8px}

/* v0.21.07（Leo：「Ding音的这个页面留白太多了，让它更加漂亮」）：Ding 音 Dimple硅胶列 6 块改 3 列×2 行卡片网格——行高从 6 块竖排降到 2 块高，与垫材列齐平，消灭整行留白；每块实线边框圆角小卡（实线分隔的美观呈现），缩略图同步缩小 */
.pm-tbl td.pm-c-z6{min-width:296px}
.pm-zgrid{display:grid;grid-template-columns:repeat(3,minmax(88px,1fr));gap:7px;padding:2px}
.pm-zcell{border:1px solid rgba(122,111,92,.38);border-radius:9px;padding:7px 2px 8px;background:rgba(255,253,247,.65);box-shadow:0 1px 3px rgba(60,45,10,.06)}
@media(max-width:1100px){.pm-tbl td.pm-c-z6{min-width:280px}.pm-zgrid{grid-template-columns:repeat(3,minmax(84px,1fr));gap:6px}}
@media(max-width:760px){.pm-tbl td.pm-c-z6{min-width:264px}.pm-zgrid{grid-template-columns:repeat(3,minmax(80px,1fr));gap:5px}}

/* v0.21.07 续：zcell 卡片内容紧凑化——块内去重复调用行（网格上方统一显示一次）、生成行去 mm 缩字号防溢出 */
.pm-zcall{font-size:12px;font-weight:700;color:var(--tx-mut);text-align:center;margin:0 0 6px;white-space:nowrap}
.pm-zcell .pm-new{font-size:11.5px;white-space:nowrap}
.pm-zcell .pm-ln{white-space:nowrap}
.pm-zcell .pm-tlab{display:none}   /* v0.21.07：卡片内「厚度」标签省略（步进器+mm 自明，防窄卡溢出） */

/* v0.21.08（Leo：「变成3组，要有组的概念。第一组2个、第二组2个、第三组3个」）：7 块分组布局——组1+组2 并排行、组3 独占行；组虚线框+账金组标，与实线块卡分层 */
.pm-tbl td.pm-c-z6{min-width:384px}
.pm-zgroups{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:2px}
.pm-zgrp{border:1.5px dashed rgba(138,90,18,.4);border-radius:11px;padding:6px 7px 8px;background:rgba(138,90,18,.03)}
.pm-zgrp:last-child{grid-column:1/-1}
.pm-zgrp-t{font-size:11px;font-weight:700;color:#8A5A12;letter-spacing:2px;margin:0 0 5px 2px}
.pm-zgrp-cells{display:grid;grid-template-columns:repeat(2,minmax(84px,1fr));gap:7px}
.pm-zgrp:last-child .pm-zgrp-cells{grid-template-columns:repeat(3,minmax(84px,1fr))}
@media(max-width:1100px){.pm-tbl td.pm-c-z6{min-width:360px}}
@media(max-width:760px){.pm-tbl td.pm-c-z6{min-width:336px}.pm-zgrp-cells,.pm-zgrp:last-child .pm-zgrp-cells{grid-template-columns:repeat(2,minmax(76px,1fr))}.pm-zgrp:last-child .pm-zgrp-cells{grid-template-columns:repeat(3,minmax(76px,1fr))}}
.pm-zcell .pm-new{font-size:11px;letter-spacing:-.2px}   /* v0.21.08：分组卡内生成行再缩防顶边 */

/* v0.21.11 压制辅材订货与管理（Leo）：订货卡=缩略图+尺寸+材质厚度+库存/报警/订货三行 */
.po-tbl td.pm-c{vertical-align:top;padding:8px 8px}
.po-zcells{display:flex;flex-wrap:wrap;gap:7px}
.po-two{flex-direction:column;gap:7px}
.po-zgrp{border:1.5px dashed rgba(138,90,18,.4);border-radius:10px;padding:5px 6px 7px;margin-bottom:6px}
.po-zgrp-t{font-size:10.5px;font-weight:700;color:#8A5A12;letter-spacing:2px;margin-bottom:4px}
.po-card{border:1px solid rgba(122,111,92,.35);border-radius:9px;padding:6px 7px;background:rgba(255,253,247,.65);width:122px;flex:none;box-shadow:0 1px 3px rgba(60,45,10,.05)}
.po-card.low{border-color:rgba(176,58,46,.55);background:rgba(176,58,46,.05)}
.po-colname{font-size:10px;color:#8A5A12;font-weight:700;margin-bottom:2px;white-space:nowrap}
.po-thumb{display:block;margin:0 auto}
.po-dim{font-size:11.5px;font-weight:700;text-align:center;white-space:nowrap;margin-top:1px}
.po-mat{font-size:10.5px;color:var(--tx-mut);text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.po-row{display:flex;align-items:center;gap:4px;margin-top:4px;font-size:11px;white-space:nowrap}
.po-lab{color:var(--tx-mut);flex:none}
.po-stock{font-size:12px}
.po-stock.low{color:#B03A2E}
.po-warn{font-size:10px}
.po-mini{flex:none;border:1px solid rgba(138,90,18,.4);background:rgba(138,90,18,.07);color:#8A5A12;font-size:10px;border-radius:5px;padding:1px 6px;cursor:pointer}
.po-mini:hover{background:#8A5A12;color:#fff}
.po-inp{width:44px;border:1px solid var(--bd);border-radius:5px;padding:2px 4px;font-size:11px;text-align:center}
.po-step{display:inline-flex;align-items:center;gap:2px}
.po-sbtn{width:18px;height:20px;border:1px solid rgba(138,90,18,.35);background:rgba(138,90,18,.06);color:#8A5A12;border-radius:5px;font-size:9px;cursor:pointer;padding:0;line-height:1}
.po-sbtn:hover{background:#8A5A12;color:#fff}
.po-ord{width:34px}
.po-lowtag{font-size:12px;color:#B03A2E;font-weight:700;background:rgba(176,58,46,.1);border-radius:12px;padding:3px 10px}
.po-order{border:1px solid var(--bd);border-radius:10px;padding:10px 12px;margin-bottom:12px}
.po-order-h{display:flex;align-items:center;gap:10px}
.po-order-h .mut{flex:1;font-size:11.5px}
@media(max-width:760px){.po-card{width:112px}.po-inp{width:38px}}

/* v0.21.12（Leo）：碟壳+耗材卡片 库存显示与报警设置（仅 CEO/COO 报警） */
.cs-stock{display:block;font-size:12px;font-weight:700;color:#2E6B4F;margin-top:2px}
.cs-stock.low{color:#B03A2E}
.cs-alarm{display:flex;align-items:center;gap:3px;margin-top:3px;font-size:10.5px;color:var(--tx-mut)}
.cs-alarm i{font-style:normal;flex:none}
.cs-alarm input{width:40px;border:1px solid var(--bd);border-radius:5px;padding:1px 4px;font-size:10.5px;text-align:center;background:#fff}
.cs-alarm button{flex:none;border:1px solid rgba(138,90,18,.4);background:rgba(138,90,18,.07);color:#8A5A12;font-size:10px;border-radius:5px;padding:1px 6px;cursor:pointer}
.cs-alarm button:hover{background:#8A5A12;color:#fff}
.cons-sel-card.low{border-color:rgba(176,58,46,.6);box-shadow:0 0 0 2px rgba(176,58,46,.14)}
.selcard-tx .hint.low{color:#B03A2E;font-weight:700}
.po-dim-in{color:#B03A2E;font-weight:600}   /* v0.21.13：环状垫材内圈尺寸（朱红同内圈椭圆） */
.po-seg{display:flex;width:fit-content}   /* v0.21.14：sec/grp 切换各自独占一行（.seg=inline-flex 默认并排） */

/* v0.21.17（Leo：「整个这个板块调整吧，留白太多了。请重新并细致的排版」）：Ding 音订货区重排——
   三组竖排（行高680）→ 组1+组2并排/组3独占行（行高~420）；卡片 flex:1 拉满组框消灭框内空白；垫材列卡拉满列宽 */
.po-tbl td.po-c-dim{min-width:470px}
.po-zgroups.ding{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.po-zgroups.ding .po-zgrp{margin-bottom:0}
.po-zgroups.ding .po-zgrp:last-child{grid-column:1/-1}
/* v0.21.24（Leo：「统一单元宽度」）：v0.21.17 的拉满规则（flex:1/width:100%）废止——订货卡统一 132px 定宽（见尾部规则），此处仅保留居中 */
.po-zcells{justify-content:center}
@media(max-width:1100px){.po-tbl td.po-c-dim{min-width:440px}}
@media(max-width:760px){.po-tbl td.po-c-dim{min-width:400px}}

/* ═══════════════════════════════════════════════════════════════════════════
   v0.21.21（Leo：「全栈整体进行一次美化……我们要有统一标准。包括弹窗，和警告弹出窗口」）
   全栈设计标准（design tokens + 标准族）——主题无关，追加式不覆盖既有规则
   ═══════════════════════════════════════════════════════════════════════════ */
:root{
  /* 字号阶梯：xs=辅助标签 sm=次要信息 base=正文/表格 md=输入/字段 lg=卡片标题 xl=页面标题 */
  --fs-xs:10.5px; --fs-sm:11.5px; --fs-base:12.5px; --fs-md:13.5px; --fs-lg:15px; --fs-xl:17px;
  /* 间距阶梯 */
  --sp-1:4px; --sp-2:7px; --sp-3:10px; --sp-4:14px; --sp-5:20px; --sp-6:28px;
  /* 圆角阶梯 */
  --r-sm:6px; --r-md:9px; --r-lg:12px; --r-xl:16px;
  /* 行高 */
  --lh-tight:1.35; --lh-base:1.55; --lh-loose:1.75;
}
/* 按钮图标与文字间距标准（图标在文字前，只加不删） */
.btn{gap:5px}
/* ── 警告/提示条标准族（弹窗内嵌+页内横幅通用） ── */
.alert{display:flex;align-items:center;gap:8px;padding:9px 12px;border-radius:var(--r-md);font-size:var(--fs-base);font-weight:700;line-height:var(--lh-tight)}
.alert>.alert-ico{font-size:15px;flex:none}
.alert-danger{background:rgba(176,58,46,.09);border:1px solid rgba(176,58,46,.42);color:#B03A2E}
.alert-warn{background:rgba(138,90,18,.08);border:1px solid rgba(138,90,18,.35);color:#8A5A12}
.alert-info{background:rgba(31,78,121,.07);border:1px solid rgba(31,78,121,.30);color:#1F4E79}
.alert-ok{background:rgba(46,107,79,.08);border:1px solid rgba(46,107,79,.35);color:#2E6B4F}
/* ── 推算页/订货页行距美化（Leo：「行间距增加排版更漂亮」）：行距 1px→3.5px、卡内呼吸感加大 ── */
.pm-c4 .pm-ln{padding:3.5px 0}
.pm-zcell{padding:9px 3px 10px}
.pm-zcell .pm-ln{padding:2.5px 0}
.pm-tbl td{padding:12px 6px}
.pm-tbl thead th{padding:8px 6px}
.pm-zgrp{padding:7px 8px 9px}
.pm-zcall{margin:0 0 8px}
.po-row{margin-top:6px}
.po-card{padding:8px 8px 9px}
.po-dim{margin-top:2px}
.po-mat{margin-top:2px}
.po-thumb{margin:2px auto}
.po-zgrp{padding:7px 8px 9px}
.po-zgrp-t{margin-bottom:6px}
@media(max-width:760px){
  .pm-c4 .pm-ln{padding:3px 0}
  .po-row{margin-top:5px}
}
.pm-sh-sub{font-size:11.5px;font-weight:700;color:#8A5A12;letter-spacing:.5px;margin-top:1px;white-space:nowrap}   /* v0.21.22（Leo）：列名推荐材质小字副行；v0.21.67（Leo 圈列头两图：「所有字体跟上一行字体一样大」）：副行字号同主行 10→11.5 */

/* v0.21.23（Leo 两图：「请检查数据显示问题」）：步进器瘦身——增长值 ±XX.XX 全值显示不再截断
   sbtn 17→15px、gap 2→1px、inc 46→44px/10.5px；双组总宽 158px 垫材列/主块列全值平铺；z 卡改两行单组 */
.pm-step{gap:1px}
.pm-sbtn{width:15px;height:20px;border-radius:6px}
.pm-step .pm-inc{width:44px;padding:2px 3px;font-size:10.5px;font-weight:600;letter-spacing:-.2px}
.pm-zcell .pm-step .pm-inc{width:44px}
.pm-thick-inp{width:40px}
.pm-c4 .pm-x{margin:0 2px;font-size:10px;color:var(--tx-faint)}
@media(max-width:760px){.pm-step .pm-inc{width:42px}}

/* v0.21.24（Leo 圈三处宽窄不一的卡：「这些要统一单元宽度呀，内容差距不大」）：
   订货卡统一 132px 定宽（废止 v0.21.17 的 flex:1 拉满与垫材列 width:100%）+列内居中——
   ring 的 Dimple 卡/垫材卡、ding 组内 z 卡全同宽；组框/列宽不变，框内空隙均匀居中 */
.po-tbl .po-card{width:132px;flex:none}
.po-zcells{justify-content:center}
@media(max-width:760px){.po-tbl .po-card{width:118px}}

/* v0.21.25（Leo 两图：「①为什么这个有一个虚线圈 ②不需要那么多留白呀」）：
   ①ring Dimple 单卡去虚线组框（组框=ding 分组专用）②表格按内容收缩+整体居中——列宽贴合 132 卡，消灭列间大留白 */
.po-zgrp.plain{border:none;padding:0;margin:0;background:none}
/* v0.21.26（Leo：「满页呀」）：表格恢复满宽——fixed 布局下列均分、卡片 132 列内居中（空隙左右对称均匀散布整行，页面级无留白） */
.po-tbl th.tf-nh,.po-tbl td.tf-nh{width:96px}
.po-tbl td.po-c-dim{width:auto;min-width:470px}
@media(max-width:1100px){.po-tbl td.po-c-dim{min-width:440px}}
@media(max-width:760px){.po-tbl th.tf-nh,.po-tbl td.tf-nh{width:82px}.po-tbl td.po-c-dim{min-width:400px}}
table.tbl.po-tbl{table-layout:fixed}   /* v0.21.26：满宽+fixed——音名列定宽、垫材列均分 */

/* v0.21.27（Leo 圈低库存耗材卡：「最好在卡片上有一个虚显的三角形带大叹号的警示⚠️标志」）：
   低库存卡右上角浮半透明三角叹号警示标（SVG 内联，opacity .6 虚显不抢内容）——
   耗材卡/碟壳卡（.cons-sel-card.low）与订货卡（.po-card.low）三处统一生效 */
.cons-sel-card,.po-card{position:relative}
/* v0.21.28（Leo：「做成跟卡片宽度一样，再卡片居中，三角圆形显示，叹号做的漂亮些」）：
   警示标升级——宽≈卡宽 74%、卡片居中、圆角三角（path 圆角化）、精致叹号（圆角杠+圆点） */
.cons-sel-card.low::after,.po-card.low::after{
  content:"";position:absolute;left:50%;top:46%;transform:translate(-50%,-50%);
  width:74%;aspect-ratio:10/9;pointer-events:none;z-index:2;
  opacity:.5;filter:drop-shadow(0 3px 10px rgba(176,58,46,.22));
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 90'%3E%3Cpath d='M50 7 C53.2 7 55.6 8.7 57.2 11.5 L94.6 76 C96.9 80 94.3 84.5 89.8 84.5 L10.2 84.5 C5.7 84.5 3.1 80 5.4 76 L42.8 11.5 C44.4 8.7 46.8 7 50 7 Z' fill='rgba(176,58,46,.13)' stroke='%23B03A2E' stroke-width='4' stroke-linejoin='round'/%3E%3Crect x='46.2' y='28' width='7.6' height='27' rx='3.8' fill='%23B03A2E'/%3E%3Ccircle cx='50' cy='67' r='5.2' fill='%23B03A2E'/%3E%3C/svg%3E") no-repeat center/contain;
}

/* v0.21.29（Leo 圈 Dimple 卡：「不要这个框，然后让文字尽量满单元格显示」）：
   订货卡去边框/背景/阴影，内容满单元格平铺（列分隔由 td 竖线承担）；低库存改淡红底圆角（无边框）；输入/尺寸行加宽加大 */
.po-tbl .po-card{width:100%;border:none;background:none;box-shadow:none;padding:2px 4px}
.po-tbl .po-card.low{background:rgba(176,58,46,.06);border-radius:9px}
.po-tbl .po-inp{width:52px;font-size:11.5px;padding:3px 5px}
.po-tbl .po-ord{width:44px}
.po-tbl .po-dim{font-size:12px}
.po-tbl .po-mat{font-size:11px}
.po-tbl .po-row{gap:5px}
.po-tbl .po-mini{padding:2px 8px}
@media(max-width:760px){.po-tbl .po-inp{width:44px}.po-tbl .po-ord{width:38px}}

/* v0.21.31（Leo）：工作台库存报警汇总卡 */
.sa-card{border:1.5px solid rgba(176,58,46,.4);background:linear-gradient(135deg,rgba(176,58,46,.04),rgba(176,58,46,.015))}
.sa-card h3{color:#B03A2E;display:flex;align-items:center;gap:8px}
.sa-cnt{font-size:11px;font-weight:800;background:#B03A2E;color:#fff;border-radius:10px;padding:1px 8px;line-height:16px}
.sa-list{display:flex;flex-direction:column;gap:6px;margin-top:10px}
.sa-item{display:flex;align-items:center;gap:9px;padding:8px 12px;border-radius:9px;background:rgba(255,253,247,.85);border:1px solid rgba(176,58,46,.18);cursor:pointer;transition:all .15s}
.sa-item:hover{border-color:#B03A2E;box-shadow:0 2px 8px rgba(176,58,46,.14);transform:translateY(-1px)}
.sa-kind{flex:none;font-size:10.5px;font-weight:800;color:#B03A2E;background:rgba(176,58,46,.1);border-radius:5px;padding:2px 7px;letter-spacing:.5px}
.sa-name{font-size:13px}
.sa-spec{font-size:11px}
.sa-qty{margin-left:auto;font-size:12px;color:var(--tx-mut);white-space:nowrap}
.sa-qty .sa-low{color:#B03A2E;font-size:13.5px}
@media(max-width:760px){.sa-item{flex-wrap:wrap}.sa-qty{margin-left:0;width:100%}}

/* v0.21.32（Leo 圈 Dimple 卡：「所有单元格内容居中」）：订货表单元格内容垂直居中（Dimple 单列内容少不再偏上）+三行（库存/报警/订货）水平居中 */
.po-tbl td.pm-c{vertical-align:middle}
.po-tbl .po-row{justify-content:center}

/* v0.21.34 压制辅材订货订单页 */
.pol-filter{margin-bottom:14px;padding:12px 16px}
.pol-frow{display:flex;gap:14px;align-items:flex-end;flex-wrap:wrap}
.pol-fitem{display:flex;flex-direction:column;gap:4px;min-width:130px;flex:1}
.pol-fitem label{font-size:11px;font-weight:700;color:var(--tx-mut)}
.pol-fitem input,.pol-fitem select{border:1px solid var(--bd);border-radius:8px;padding:7px 10px;font-size:13px;background:#fff}
.pol-fact{display:flex;gap:8px}
.pol-card{padding:0;overflow:hidden;margin-bottom:10px}
.pol-head{display:flex;align-items:center;gap:10px;padding:12px 16px;cursor:pointer;user-select:none}
.pol-head:hover{background:rgba(138,90,18,.03)}
.pol-no{font-size:14px;font-weight:800}
.pol-st{font-size:11px;font-weight:800;border-radius:10px;padding:2px 9px;line-height:16px}
.pol-st-o{background:rgba(138,90,18,.14);color:#8A5A12}
.pol-st-r{background:rgba(46,107,79,.13);color:#2E6B4F}
.pol-st-c{background:rgba(90,99,114,.13);color:#5A6372}
.pol-sum{font-size:12px;color:var(--tx-mut);font-weight:600}
.pol-arrow{color:var(--tx-faint);font-size:11px;margin-left:4px}
.pol-detail{border-top:1px solid var(--bd);padding:12px 16px;background:rgba(251,247,234,.45)}
.pol-pager{display:flex;align-items:center;justify-content:center;gap:16px;margin-top:14px}
@media(max-width:760px){.pol-head{flex-wrap:wrap;gap:7px}.pol-fitem{min-width:44%}}
.pol-svggrp{display:inline-flex;gap:5px}   /* v0.21.35：多页 SVG 下载链接组 */
/* v0.21.57（Leo）：收货修改记录（时间+内容） */
.pol-edit{display:flex;gap:8px;align-items:baseline;font-size:11.5px;padding:5px 10px;border-left:3px solid rgba(138,90,18,.45);background:rgba(138,90,18,.05);border-radius:0 8px 8px 0;margin-top:6px}
.pol-edit-t{flex:none;font-weight:800;color:#8A5A12;white-space:nowrap}
.pol-edit-c{color:var(--tx-mut);line-height:1.55}
/* v0.21.59（Leo：「这个页面永远不要出现折行」）：收货确认弹窗表格永不折行（窄屏由 modal-b overflow-x 横滚兜底） */
.recv-tbl th,.recv-tbl td{white-space:nowrap}

/* v0.21.37（Leo：「页面怎么乱了」）：table-layout:fixed 下 min-width 失效——ding Dimple 区列宽被均分压窄（组框卡溢出堆叠），改显式 width 钉宽 */
.po-tbl td.po-c-dim{width:590px;min-width:590px}   /* v0.21.38：组内两卡 132×2+gap+padding=287×2+8=582 并排需求 */
@media(max-width:1100px){.po-tbl td.po-c-dim{width:560px;min-width:560px}}
@media(max-width:760px){.po-tbl td.po-c-dim{width:520px;min-width:520px}}

/* v0.21.37 续：fixed 布局列宽只看第一行——ding 表头 Dimple压制 格钉宽（td 上的 width 在 fixed 下无效） */
table.tbl.po-tbl thead th.pm-gh-dim{width:590px}
@media(max-width:1100px){table.tbl.po-tbl thead th.pm-gh-dim{width:560px}}
@media(max-width:760px){table.tbl.po-tbl thead th.pm-gh-dim{width:520px}}

/* v0.21.38（Leo 图1→图2：「排版你完全模仿推算页排版」）：订货卡回 132 定宽——ding 组内卡 2+2+3 并排（v0.21.29 的 width:100% 使组内卡竖排错位）；去框/文字大小保留，ring 单卡与垫材列卡同宽居中 */
.po-tbl .po-card{width:132px}
.po-tbl .po-card.low{border-radius:9px}
@media(max-width:760px){.po-tbl .po-card{width:118px}}

/* v0.21.38 续：组框内宽临界（两卡 271 对内宽 273 四舍五入换行）——gap 7→5、组框 padding 收紧，组内两卡稳定并排 */
.po-zcells{gap:5px}
.po-zgrp{padding:6px 6px 7px}

/* v0.21.38 续2：组框内宽 269=两卡+gap 269 亚像素临界必换行——ding 组内卡 132→130（ring 卡仍 132，2px 差不可辨） */
.po-tbl td.po-c-dim .po-card{width:130px}

/* v0.21.38（Leo）：库存/使用查询弹出页；v0.21.48：内部改版=账本页同款（ana-kpi/ConsFlowChart/.ledger），旧 sv-kpi/flow/ltbl 样式删除 */
.modal.sv-modal{width:75vw;max-width:75vw;height:75vh;max-height:75vh;display:flex;flex-direction:column;overflow:hidden;padding:0;border-radius:14px}
.sv-modal .modal-h{padding:14px 18px 10px}
.sv-sub{padding:0 18px 10px;font-size:11.5px;color:var(--tx-mut);border-bottom:1px solid var(--bd)}
.sv-body{flex:1;overflow-y:auto;padding:14px 18px}
@media(max-width:760px){.modal.sv-modal{width:96vw;max-width:96vw;height:92vh;max-height:92vh}}
/* v0.21.41：压壳确认页 .pc-* 样式随页下线删除 */

/* v0.21.42（Leo 两图：「①Ding音的这个尽量不动单元格，在单元格内排版，排的漂亮一些 ②这些里每个的距离太近了」）：
   Ding 音 Dimple 区单元格内重排——单元格（590 钉宽）与列结构不动；
   ①组内 flex→grid 均分列（组1/2=双列、组3=三列，宽度自动算永远不换行溢出，免 v0.21.38 亚像素算术）
   ②卡距拉开（cells gap 5→12/10、组框 gap 8→12、组框 padding 加大呼吸感）
   ③卡加极淡墨蓝底+圆角显现个体边界（v0.21.29 去框后卡贴卡分不清，淡底非边框、ring 区不动） */
.po-zgroups.ding{gap:12px}
.po-zgroups.ding .po-zgrp{padding:9px 10px 11px}
.po-zgroups.ding .po-zgrp-t{text-align:center;margin-bottom:7px}
.po-tbl td.po-c-dim .po-zcells{display:grid;grid-template-columns:repeat(2,1fr);gap:12px 10px}
.po-zgroups.ding .po-zgrp:last-child .po-zcells{grid-template-columns:repeat(3,1fr)}
.po-tbl td.po-c-dim .po-card{width:auto;background:rgba(31,78,121,.045);border-radius:9px;padding:6px 5px 7px}
.po-tbl td.po-c-dim .po-card.low{background:rgba(176,58,46,.07)}
/* v0.21.43（Leo 圈第7块串位图）修复：grid 轨道=minmax(auto,1fr)，卡内 nowrap 行 min-content（~140px）把轨道撑爆——
   组框 320×2+gap=652 > 单元格内宽 573，溢出 79px 压音区压制前两列（红圈根因）；
   zgrp/卡 min-width:0 允许收缩回 1fr 均分 + 卡内容轻度瘦身（输入/按钮/间距收小，min-content≈115<列宽~124 不顶轨） */
.po-zgroups.ding .po-zgrp{min-width:0}
.po-tbl td.po-c-dim .po-card{min-width:0}
.po-tbl td.po-c-dim .po-inp{width:44px}
.po-tbl td.po-c-dim .po-ord{width:38px}
.po-tbl td.po-c-dim .po-mini{padding:2px 6px}
.po-tbl td.po-c-dim .po-sbtn{width:16px}
.po-tbl td.po-c-dim .po-row{gap:3px}
.po-tbl td.po-c-dim .po-step{gap:1px}
@media(max-width:760px){
  .po-zgroups.ding{gap:9px}
  .po-zgroups.ding .po-zgrp{padding:7px 8px 9px}
  .po-tbl td.po-c-dim .po-zcells{gap:9px 7px}
}

/* v0.21.68 网络访问权限页（移动端铁律：≤760px 开关行纵向收拢） */
.na-flag{display:flex;align-items:center;gap:14px;padding:10px 0;border-bottom:1px dashed rgba(122,111,92,.22)}
.na-flag:last-child{border-bottom:none}
.na-flag-t{flex:1;min-width:0}
.na-flag-t b{display:block;font-size:13.5px;margin-bottom:2px}
.na-flag-t .hint{display:block;font-size:11.5px;line-height:1.5}
@media(max-width:760px){.na-flag{flex-direction:column;align-items:flex-start;gap:8px}}

/* ==================== v0.21.73 客户公告（水墨纸面公告板+编辑器主题化） ==================== */
.ann-list{display:flex;flex-direction:column;gap:16px;max-width:920px}
.ann-card{display:flex;gap:18px;background:var(--card-bg);border:1px solid var(--bd);border-radius:16px;padding:20px 22px;box-shadow:0 2px 10px rgba(96,78,40,.06);transition:box-shadow .2s}
.ann-card:hover{box-shadow:0 6px 22px rgba(96,78,40,.12)}
.ann-card.fresh{border-color:rgba(138,90,18,.45)}
.ann-date{flex:none;width:64px;text-align:center;border-right:1px dashed rgba(122,111,92,.28);padding-right:16px;display:flex;flex-direction:column;justify-content:flex-start;padding-top:2px}
.ann-date b{display:block;font-size:26px;font-weight:800;color:#8A5A12;line-height:1.1}
.ann-date span{display:block;font-size:10.5px;color:var(--tx-mut);margin-top:3px;letter-spacing:.5px}
.ann-body{flex:1;min-width:0;position:relative}
.ann-new{position:absolute;top:-9px;right:0;background:#8A5A12;color:#FFF8E7;font-size:10px;font-weight:700;border-radius:8px;padding:2px 9px;letter-spacing:1px}
.ann-title{margin:0 0 4px;font-size:17.5px;font-weight:800;line-height:1.4}
.ann-sub{margin:0 0 2px;font-size:12.5px;color:var(--tx-mut);line-height:1.55}
.ann-div{height:2px;width:44px;background:linear-gradient(90deg,#8A5A12,rgba(138,90,18,.15));border-radius:2px;margin:10px 0 12px}
.ann-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:14px;font-size:11px;color:var(--tx-mut)}
.ann-empty{text-align:center;padding:56px 20px;background:var(--card-bg);border:1px dashed rgba(122,111,92,.4);border-radius:16px;max-width:920px}
.ann-empty b{display:block;font-size:15px;margin:6px 0 4px}
.ann-empty-ico{font-size:38px}
.ann-portal .ann-hero{display:flex;align-items:center;gap:14px;margin-bottom:18px}
.ann-hero-ico{width:52px;height:52px;flex:none;border-radius:14px;background:linear-gradient(135deg,#8A5A12,#B8860B);display:flex;align-items:center;justify-content:center;font-size:26px;box-shadow:0 4px 14px rgba(138,90,18,.28)}
.ann-hero h2{margin:0;font-size:20px}
.ann-hero p{margin:2px 0 0;font-size:12px}
/* 富文本内容排版（客户端完整展示 / 管理端三行截断） */
.ann-rich{font-size:13.5px;line-height:1.75;word-break:break-word}
.ann-rich h1,.ann-rich h2,.ann-rich h3,.ann-rich h4{margin:14px 0 6px;line-height:1.4}
.ann-rich p{margin:6px 0}
.ann-rich ul,.ann-rich ol{padding-left:22px;margin:6px 0}
.ann-rich blockquote{margin:10px 0;padding:8px 14px;border-left:3px solid #8A5A12;background:rgba(138,90,18,.06);border-radius:0 8px 8px 0;color:var(--tx-mut)}
.ann-rich table{border-collapse:collapse;margin:10px 0;width:100%}
.ann-rich th,.ann-rich td{border:1px solid rgba(122,111,92,.35);padding:6px 10px;font-size:12.5px}
.ann-rich th{background:rgba(138,90,18,.08)}
.ann-rich img{max-width:100%;border-radius:8px}
.ann-rich hr{border:none;border-top:1px dashed rgba(122,111,92,.4);margin:14px 0}
.ann-rich code{background:rgba(31,78,121,.08);border-radius:4px;padding:1px 5px;font-size:12px}
.ann-clamp{display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
/* 编辑弹窗 */
.modal.ann-modal{width:min(1020px,95vw);max-width:min(1020px,95vw);max-height:92vh;display:flex;flex-direction:column}
.ann-form{padding:14px 18px 4px;overflow-y:auto;flex:1}
.ann-frow{display:flex;gap:12px;margin-bottom:12px}
.ann-inp{width:100%;border:1px solid var(--bd);border-radius:8px;padding:8px 11px;font-size:13px;background:#fff}
.ann-inp-title{font-size:14.5px;font-weight:700}
.ann-editor-box{border:1px solid var(--bd);border-radius:10px;overflow:hidden;background:#fff}
/* v0.21.90：公告模板库面板（20 模版） */
/* v0.21.91（Leo 圈图「这个重叠了」）：公告弹窗底栏布局——全局本无 .modal-f 样式（纯文档流，长提示与按钮混排挤重叠），此处仅公告弹窗作用域补 flex 布局，其他弹窗零影响 */
.ann-modal .modal-f{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap;padding:12px 18px;border-top:1px solid var(--bd)}
.ann-modal .modal-f .hint{flex:1;min-width:180px;line-height:1.5}
.ann-tpl-bar{display:flex;align-items:center;gap:10px;margin:4px 0 8px}
.ann-tpl-panel{border:1px solid var(--bd);border-radius:10px;background:#FDFBF3;padding:10px 12px;margin-bottom:10px;max-height:280px;overflow-y:auto}
.ann-tpl-group{margin-bottom:8px}
.ann-tpl-group:last-child{margin-bottom:0}
.ann-tpl-cat{font-size:11.5px;font-weight:800;color:#8A5A12;margin:2px 0 6px;letter-spacing:.5px}
.ann-tpl-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:8px}
.ann-tpl-card{display:flex;align-items:center;gap:8px;text-align:left;border:1px solid var(--bd);border-radius:9px;background:#fff;padding:8px 10px;cursor:pointer;transition:box-shadow .15s,transform .15s,border-color .15s;font-family:inherit}
.ann-tpl-card:hover{border-color:#8A5A12;box-shadow:0 3px 10px rgba(90,74,54,.16);transform:translateY(-1px)}
.ann-tpl-ico{font-size:19px;flex:none}
.ann-tpl-tx{display:flex;flex-direction:column;min-width:0}
.ann-tpl-tx b{font-size:12.5px;color:var(--tx)}
.ann-tpl-tx span{font-size:10.5px;color:var(--tx-mut);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ann-editor-box #ann-tb{border-bottom:1px solid var(--bd);background:#FBF7EA}
.ann-editor-box #ann-ed{height:430px;overflow-y:hidden}
/* wangEditor 水墨主题化 */
.ann-editor-box .w-e-toolbar{background:transparent !important;border-bottom:none !important}
.ann-editor-box .w-e-bar-item button:hover{background:rgba(138,90,18,.1) !important}
.ann-editor-box .w-e-text-container [data-slate-editor]{padding:12px 16px;font-size:13.5px;line-height:1.75}
@media(max-width:760px){
  .ann-card{flex-direction:column;gap:10px;padding:16px}
  .ann-date{flex-direction:row;align-items:baseline;gap:8px;width:auto;border-right:none;border-bottom:1px dashed rgba(122,111,92,.28);padding:0 0 8px}
  .ann-date b{font-size:20px}
  .ann-frow{flex-direction:column}
  .ann-editor-box #ann-ed{height:340px}
  .modal.ann-modal{width:96vw;max-width:96vw;max-height:96vh}
}

/* v0.21.74 公告多语 */
.ann-at{font-size:10.5px;color:#1F4E79;background:rgba(31,78,121,.08);border-radius:6px;padding:1px 7px;cursor:help}
.ann-langs{font-size:10.5px;color:#8A5A12;background:rgba(138,90,18,.08);border-radius:6px;padding:1px 7px;cursor:help}
.ann-srclang{font-size:10.5px;color:var(--tx-mut);background:rgba(122,111,92,.1);border-radius:6px;padding:1px 7px;cursor:help}

/* v0.21.75（Leo 圈公告编辑器工具栏：「不要2行，改成1行」）：工具栏强制单行——按钮收紧+横向可滑（功能不减） */
.ann-editor-box #ann-tb .w-e-toolbar{flex-wrap:nowrap !important;overflow-x:auto !important;overflow-y:hidden !important;scrollbar-width:thin;padding:0 4px !important}
.ann-editor-box #ann-tb .w-e-toolbar::-webkit-scrollbar{height:4px}
.ann-editor-box #ann-tb .w-e-toolbar::-webkit-scrollbar-thumb{background:rgba(138,90,18,.25);border-radius:2px}
.ann-editor-box .w-e-bar-item{padding:0 !important;margin:0 !important}
.ann-editor-box .w-e-bar-item button{padding:0 4px !important;height:32px !important}
.ann-editor-box .w-e-bar-divider{margin:2px 3px !important}

/* v0.21.76 音级生产停用开关（推算页音名列） */
.pm-offsw{display:inline-flex;align-items:center;gap:4px;margin-top:4px;border:1px solid var(--bd);border-radius:9px;padding:1px 7px 1px 2px;font-size:10px;font-weight:700;color:var(--tx-mut);background:rgba(122,111,92,.08);cursor:pointer;transition:all .15s}
.pm-offsw i{display:inline-block;width:14px;height:8px;border-radius:5px;background:rgba(122,111,92,.35);position:relative;transition:background .15s}
.pm-offsw i::after{content:"";position:absolute;top:1px;left:1px;width:6px;height:6px;border-radius:50%;background:#fff;transition:left .15s}
.pm-offsw.on{color:#2E6B4F;border-color:rgba(46,107,79,.4);background:rgba(46,107,79,.08)}
.pm-offsw.on i{background:#2E6B4F}
.pm-offsw.on i::after{left:7px}
.pm-offsw:disabled{opacity:.55;cursor:wait}
.pm-off-row td{opacity:.42;transition:opacity .2s}   /* 停用行整行灰显（开关格保持可读） */
.pm-off-row td.tf-nh{opacity:.85}

/* v0.21.78 采购总账·支出构成环图（水墨四色域区分；左环右例） */
.pl-pie{display:flex;align-items:center;gap:30px;flex-wrap:wrap}
.pl-pie-svg{width:190px;height:190px;flex:none}
.pl-pie-num{font-size:15.5px;font-weight:800;fill:#3A332A}
.pl-pie-lab{font-size:10px;fill:#8A7A55;letter-spacing:1px}
.pl-pie-leg{flex:1;min-width:300px;display:flex;flex-direction:column;gap:10px}
.pl-pie-row{display:flex;align-items:center;gap:10px;padding-bottom:10px;border-bottom:1px dashed rgba(122,111,92,.22)}
.pl-pie-row:last-child{padding-bottom:0;border-bottom:none}
.pl-pie-row i{width:13px;height:13px;border-radius:3.5px;flex:none}
.pl-pie-name{font-size:13px;font-weight:700}
.pl-pie-amt{margin-left:auto;font-size:13px;font-weight:800}
.pl-pie-pct{width:56px;text-align:right;font-size:13px;font-weight:800;color:#8A5A12}
@media(max-width:760px){.pl-pie{justify-content:center;gap:18px}.pl-pie-leg{min-width:0;width:100%}}

/* v0.21.79 双构成环图（左支出右耗用）+卡片加高 */
.pl-duo{display:grid;grid-template-columns:1fr 1fr;gap:0;min-height:330px}
.pl-duo-col{padding:6px 26px 10px 6px;min-width:0}
.pl-duo-r{border-left:1px dashed rgba(122,111,92,.3);padding-left:26px;padding-right:6px}
.pl-duo-t{font-size:14px;font-weight:800;margin-bottom:14px;display:flex;align-items:baseline;gap:10px}
.pl-duo-per{font-size:11px;font-weight:700;color:#8A5A12;background:rgba(138,90,18,.08);border-radius:7px;padding:2px 9px}
.pl-duo .pl-pie{align-items:center;min-height:260px}
.pl-duo .pl-pie-svg{width:220px;height:220px}
.pl-pie-note{display:block;font-style:normal;font-size:10px;color:var(--tx-mut);font-weight:400;margin-top:1px}
.pl-pie-row.pl-pie-off{opacity:.62}
.pl-pie-row.pl-pie-off i{opacity:.5}
@media(max-width:1100px){.pl-duo{grid-template-columns:1fr;min-height:0}.pl-duo-r{border-left:none;border-top:1px dashed rgba(122,111,92,.3);padding-left:6px;padding-top:16px;margin-top:6px}}

/* v0.21.79 移动端收拢补丁（390 实测溢出修复）：环图缩小+图例最小宽解除+列内边距收紧 */
@media(max-width:760px){
  .pl-duo-col{padding:6px 8px 10px}
  .pl-duo .pl-pie{min-height:0;gap:16px;flex-direction:column}   /* 环图与图例纵向堆叠——图例独占整行不被 flex 压窄（132px 窄条教训） */
  .pl-duo .pl-pie-svg{width:188px;height:188px}
  .pl-duo .pl-pie-leg{min-width:0;width:100%;flex:none}
  .pl-pie-amt{font-size:12px}
  .pl-pie-pct{width:48px;font-size:12px}
}

/* v0.21.81 订货订单页分页器条数钮组 */
.pol-size{display:flex;gap:6px;flex-wrap:wrap}

/* v0.21.83（Leo：邮箱页不要页面滚动条）：邮箱=全高应用式布局（grid JS 实测适配视口），
   全局 .content 60px 底 padding 在该页只会顶出滚动条——:has 定位邮箱页收窄底距（其它页面不动） */
.content:has(.mbx){padding-bottom:14px}
