/*!
 * web/assets/css/index/00-ep-shim.css
 * Element Plus 兼容垫片层样式
 *
 * 本文件由 tools/split_spa.py 从单文件 SPA 机械拆出，请勿手工改动切分边界。
 * 加载顺序由入口 HTML 统一控制（经典 script 共享全局词法环境）。
 */

/* ===== Element Plus 兼容垫片层样式 ===== */
.ep-cell{display:flex;align-items:center;padding:10px 16px;background:var(--cd);position:relative;font-size:14px;cursor:default}
.ep-cell--link{cursor:pointer}
.ep-cell::after{content:'';position:absolute;left:16px;right:0;bottom:0;border-bottom:1px solid var(--bd)}
.ep-cell--noborder::after{display:none}
.ep-cell--center{justify-content:center}
.ep-cell__icon{margin-right:8px;color:var(--ts);display:flex;align-items:center}
.ep-cell__main{flex:1;min-width:0}
.ep-cell__title{color:var(--tc)}
.ep-cell__label{font-size:12px;color:var(--ts);margin-top:2px}
.ep-cell__value{flex-shrink:0;color:var(--ts);text-align:right;padding-left:8px}
.ep-cell__right{margin-left:6px;color:var(--ts);display:flex;align-items:center}
.ep-cell-group{background:var(--cd);margin-bottom:12px;border-radius:8px;overflow:hidden}
.ep-cell-group--inset{margin:0 12px 12px}
.ep-cell-group__title{padding:12px 16px 4px;font-size:13px;color:var(--ts)}
.ep-field{display:flex;align-items:flex-start;padding:8px 16px;background:var(--cd);position:relative}
.ep-field--nolabel{flex-direction:column}
.ep-field__label{width:88px;flex-shrink:0;color:var(--tc);padding-top:7px;font-size:14px}
.ep-field__control{flex:1;min-width:0}
.ep-field__err{color:#f56c6c;font-size:12px;margin-top:4px}
.ep-field--error .ep-field__label{color:#f56c6c}
/* 弹层最高层级的 CSS 出口（由 core/52-ep-shims.js 的 _nextZ() 实时写入）。
   任何「必须压在弹层之上」的浮层一律写 calc(var(--gp-ztop) + N)，**不要**再写魔法数字：
   计数器只增不减（每次开弹层 +10，封顶 40000），写死的数字迟早被越过（#117→#162 同一课）。 */
:root{--gp-ztop:2000}
.ep-pop__mask{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:2000;display:flex}
.ep-pop{background:var(--cd);margin:auto;max-width:92vw;max-height:90vh;overflow:auto;border-radius:8px;box-shadow:0 8px 30px rgba(0,0,0,.18);padding:16px}
.ep-pop--center{margin:auto}
.ep-pop--top{align-self:flex-start;width:100%;border-radius:0}
.ep-pop--bottom{align-self:flex-end;width:100%;border-radius:12px 12px 0 0}
.ep-pop--left{align-self:center;margin-right:auto;height:100%;border-radius:0}
.ep-pop--right{align-self:center;margin-left:auto;height:100%;border-radius:0}
/* 2026-09-22 多分辨率扫描：position="bottom" 是移动端抽屉手势的产物，全项目 143 处在用。
   ≥768px 时 width:100% 会把面板铺满整屏（销售对账「订单详情」实测 1280 视口：中间一大片空白，
   商品行左右两端被甩到屏幕两侧，读不出一条记录）。这里收敛成居中的底部浮层卡片，
   保留贴底位置与 slide-up 动效；.ep-pop 本身 margin:auto，所以只要限宽就自然水平居中。 */
@media (min-width:768px){
  .ep-pop--bottom{width:min(680px,92vw);border-radius:14px 14px 0 0}
}
/* 2026-09-19（需求 #19/#22）：居中弹窗（EpPopup position="center" + width）内的吸顶标题栏。
   center 形态下面板自身就是滚动容器（垫片固定 overflow:auto + max-height:88vh），调用点把面板
   padding 归零让 ep-nav-bar 通栏，滚动时标题栏贴顶 → 任何时候都能关掉弹窗。 */
/* 2026-09-20（送审反馈 图3）：吸顶标题栏必须自带不透明底色并压住弹窗内的图表层。
   原来只靠 `.ep-navbar{background:var(--cd)}` 兜着，一旦调用点给 ep-nav-bar 换了根 class
   （或被图表容器的定位层叠上来），滚动内容就会从标题栏上下沿「透」出来，表现为弹窗顶部有缝隙。
   这里把底色与层级显式钉死；z-index 取 5 以压过 EpChart/词云容器（其空态覆盖层用 z-index:1）。 */
/* 2026-09-22（图3 缝隙二次修，本人给的口径）：top 必须是 -17px 而不是 0。
   面板自身有 ~17px 上内边距，`top:0` 的吸顶栏只能贴到内容区顶部，那 17px 的带子留在上面，
   滚动内容从那条带子里穿过去 —— 就是「弹窗顶部有缝隙」。用负值把吸顶栏顶到面板真正的上沿盖住它。
   改这个值前先滚动一次弹窗看还有没有穿帮，别退回 0。 */
.ep-pop .ep-pop__head{position:sticky;top:-17px;z-index:5;background:var(--cd);border-bottom:1px solid var(--bd)}
/* 图表/词云容器一律裁剪，canvas 任何情况下不得画到盒子外 */
.ep-pop .ep-chart-box{overflow:hidden;min-width:0}
.ep-as__mask{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:2001;display:flex;align-items:flex-end}
.ep-as{background:var(--cd);width:100%;border-radius:12px 12px 0 0;padding-bottom:calc(8px + env(safe-area-inset-bottom));max-height:80vh;overflow:auto}
.ep-as__title{padding:14px 16px 6px;text-align:center;font-weight:600;color:var(--tc)}
.ep-as__desc{padding:0 16px 8px;text-align:center;font-size:12px;color:var(--ts)}
.ep-as__item{padding:14px 16px;text-align:center;color:var(--tc);border-top:1px solid var(--bd);font-size:15px}
.ep-as__sub{font-size:12px;color:var(--ts);margin-top:2px}
.ep-as__cancel{margin-top:8px;padding:14px 16px;text-align:center;color:var(--ts);border-top:8px solid var(--bg);font-size:15px}
.ep-navbar{display:flex;align-items:center;height:46px;background:var(--cd);border-bottom:1px solid var(--bd);padding:0 12px;position:relative}
.ep-navbar--fixed{position:fixed;top:0;left:0;right:0;z-index:100}
/* 2026-09-22 多分辨率扫描：返回键实测只有 60x16 —— 图标本身多高，命中区就多高，
   而它所在的导航条有 46px。手机上「返回」是最高频的导航动作，命中区必须吃满整条高度，
   所以让左右两块沿交叉轴拉伸（align-self:stretch），并给右侧留出与左侧对称的内边距。 */
.ep-navbar__left{display:flex;align-items:center;color:var(--pci);min-width:60px;cursor:pointer;align-self:stretch;padding-right:10px}
.ep-navbar__title{flex:1;text-align:center;font-weight:600;color:var(--tc);font-size:16px}
.ep-navbar__right{display:flex;align-items:center;min-width:60px;justify-content:flex-end;color:var(--pci);align-self:stretch;padding-left:10px}
.ep-search{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--cd)}
.ep-search__action{color:var(--pci);font-size:14px;flex-shrink:0}
.ep-tabs--sticky{position:sticky;top:0;z-index:50;background:var(--cd)}
.ep-swipe{position:relative;overflow:hidden}
.ep-swipe__content{position:relative;z-index:1;background:var(--cd);transition:transform .25s;min-height:44px}
.ep-swipe__content--open{transform:translateX(-80px)}
.ep-swipe__right{position:absolute;top:0;right:0;height:100%;width:80px;display:flex;align-items:center;justify-content:center;background:#f56c6c;color:#fff;z-index:0}
.ep-pullrefresh{position:relative}
.ep-pullrefresh__tip{text-align:center;color:var(--ts);font-size:13px;padding:8px}
.ep-notice{display:flex;align-items:center;padding:8px 12px;background:#fffbe8;color:#8a6d3b;font-size:13px}
.ep-notice__icon{margin-right:6px}
.ep-notice__body{flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.ep-notice__close{margin-left:6px;cursor:pointer}
.ep-card{display:flex;background:var(--cd);padding:10px 12px;border-radius:8px;margin-bottom:10px}
.ep-card__thumb{width:64px;height:64px;flex-shrink:0;margin-right:10px;border-radius:6px;overflow:hidden;background:var(--bg)}
.ep-card__img{width:100%;height:100%;object-fit:cover}
.ep-card__body{flex:1;min-width:0}
.ep-card__title{font-weight:600;color:var(--tc)}
.ep-card__desc{font-size:12px;color:var(--ts);margin:2px 0}
.ep-card__tags{display:flex;flex-wrap:wrap;gap:4px;margin:2px 0;font-size:11px}
.ep-card__bottom{display:flex;align-items:center;gap:10px;margin-top:4px}
.ep-card__price{color:#f56c6c;font-weight:600}
.ep-card__num{color:var(--ts);font-size:12px}
.ep-loading{display:inline-flex;align-items:center;gap:6px;color:var(--ts)}
.ep-loading--vertical{flex-direction:column}
.ep-loading__text{font-size:13px}
.ep-list__finished{text-align:center;color:var(--ts);font-size:12px;padding:12px}
.ep-picker{max-height:50vh;overflow:auto;border:1px solid var(--bd);border-radius:8px}
.ep-picker__item{padding:12px;text-align:center;color:var(--tc);border-bottom:1px solid var(--bd)}
.ep-picker__item.is-active{background:var(--pc);color:#fff}
.ep-picker-wrap{background:var(--cd);border-radius:8px;overflow:hidden}
.ep-picker-bar{display:flex;align-items:center;padding:8px 12px;border-bottom:1px solid var(--bd);font-size:14px}
.ep-picker-bar__cancel,.ep-picker-bar__confirm{color:var(--pci);cursor:pointer;padding:4px 6px}
.ep-picker-bar__title{flex:1;text-align:center;color:var(--tc);font-weight:600}
.ep-overlay-mask{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:2002;display:flex}
.ep-overlay-mask>*{margin:auto}
.ep-row{width:100%}
.ep-toast-plain{pointer-events:none}
.ep-dropdown-trigger{cursor:pointer}
:root.dark .ep-cell,:root.dark .ep-pop,:root.dark .ep-as,:root.dark .ep-navbar,:root.dark .ep-card,:root.dark .ep-field,:root.dark .ep-cell-group{background:var(--cd)}
:root.dark .ep-cell__title,:root.dark .ep-cell__value,:root.dark .ep-navbar__title{color:var(--tc)}
/* #448（2026-11-01）：提示条 ep-notice 的淡黄底 + 棕字是浅档配色，暗档下是一块浅色实心片 —— 换成同语义的深底亮字。 */
:root.dark .ep-notice{background:#3A2E10;color:#FFC46B}

/* POS规格弹窗 单选/多选模式按钮 */
.pos-sheet__mode-btn{display:inline-block;padding:4px 14px;border-radius:12px;font-size:12px;border:1px solid var(--bd);background:var(--cd);color:var(--ts);cursor:pointer;transition:all .15s;user-select:none}
.pos-sheet__mode-btn.on{background:var(--pc);color:#fff;border-color:var(--pc)}
.pos-sheet__opt{transition:all .15s}

/* ========== 全局交互动画增强 ========== */
/* 按钮按压反馈 */
.el-button{transition:all .2s cubic-bezier(.4,0,.2,1)}
.el-button:active{transform:scale(.96)}
.el-button--primary:active{transform:scale(.96);filter:brightness(.9)}
/* 卡片悬浮 */
.pos-card,.recon-method-card,.rs-card,.method-card,.amt-card{transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}
.pos-card:active{transform:scale(.98)}
/* 标签/选项 */
.spec-chip,.pos-sheet__opt,.el-tag{transition:all .15s ease}
.spec-chip:active,.pos-sheet__opt:active{transform:scale(.95)}
/* 列表行 */
.recon-row,.order-card,.customer-card{transition:background .15s ease,transform .15s ease}
.recon-row:active,.order-card:active,.customer-card:active{background:var(--cb);transform:scale(.995)}
/* 弹窗淡入 */
.ep-popup .ep-popup__content{animation:popupSlideUp .25s cubic-bezier(.4,0,.2,1)}
@keyframes popupSlideUp{from{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}
/* 页面切换淡入 */
.page{animation:pageFadeIn .2s ease}
/* 2026-09-18：纯淡入去掉 translateY —— transform 会让 .page 成为 fixed 元素包含块，导致底部 fixed 操作栏错位遮挡内容 */
@keyframes pageFadeIn{from{opacity:0}to{opacity:1}}
/* 数字输入框：详细样式在 229 行（边框/底色/按钮透明），此处仅保留历史兼容 */
.el-input-number{transition:border-color .2s ease}
/* Tab切换 */
.el-tabs__item{transition:color .2s ease}
/* 折叠展开 */
.ep-cell{transition:background .15s ease}
.ep-cell:active{background:var(--cb)}
/* 开关 */
.el-switch{transition:all .2s ease}
/* 复选框 */
.el-checkbox__inner{transition:all .2s ease}
/* 下拉选择 */
.el-select .el-input__wrapper{transition:box-shadow .2s ease}
/* 加载骨架 */
@keyframes shimmer{0%{background-position:-200% 0}100%{background-position:200% 0}}
/* 数量变化动画 */
.qty-badge{transition:transform .2s ease}
.qty-badge.bump{animation:qtyBump .3s ease}
@keyframes qtyBump{0%{transform:scale(1)}50%{transform:scale(1.3)}100%{transform:scale(1)}}
/* Toast动画 */
.ep-toast{animation:toastIn .25s ease}
@keyframes toastIn{from{opacity:0;transform:translate(-50%,-10px)}to{opacity:1;transform:translate(-50%,0)}}
/* #33 销售财务对账 - 移动端布局优化（按 #550 重构：清爽简洁） */
.sr-summary-bar{display:flex;gap:8px;padding:10px 12px;background:var(--cb);border-bottom:1px solid var(--br);overflow-x:auto;scrollbar-width:none}
.sr-summary-bar::-webkit-scrollbar{display:none}
.sr-summary-cell{flex:1;min-width:84px;background:var(--cd);border-radius:10px;padding:10px 8px;box-shadow:var(--sh);text-align:center}
.sr-summary-cell--wide{flex:1.6;min-width:130px}
.sr-summary-cell__v{font-size:17px;font-weight:700;color:var(--tc);line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sr-summary-cell__v--amt{color:var(--dc)}
.sr-summary-cell__v--sm{font-size:12px;font-weight:600}
.sr-summary-cell__l{font-size:11px;color:var(--ts);margin-top:3px}
/* 支付方式分项网格 */
.sr-methods{margin:8px 12px 0}
.sr-methods__title{font-weight:600;font-size:14px;margin:6px 0 8px;display:flex;align-items:center;gap:6px}
.sr-methods__hint{font-size:11px;color:var(--ts);font-weight:400}
.sr-methods-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
@media(min-width:500px){.sr-methods-grid{grid-template-columns:repeat(3,1fr)}}
@media(min-width:768px){.sr-methods-grid{grid-template-columns:repeat(4,1fr)}}
@media(min-width:1024px){.sr-methods-grid{grid-template-columns:repeat(5,1fr)}}
.sr-method-card{min-width:0;background:var(--cd);border:1px solid var(--bd);border-radius:10px;padding:10px 8px;cursor:pointer;transition:all .2s;text-align:center;display:flex;flex-direction:column;gap:2px}
.sr-method-card:hover{border-color:var(--pc);box-shadow:0 2px 8px rgba(0,0,0,.06)}
.sr-method-card--on{border-color:var(--pc);background:rgba(0,122,255,.06);box-shadow:0 0 0 2px rgba(22,119,255,.12) inset}
.sr-method-card__name{font-size:12px;color:var(--ts);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:500}
.sr-method-card__amt{font-size:15px;font-weight:700;color:var(--tc);white-space:nowrap;word-break:keep-all;line-height:1.3}
.sr-method-card__sub{font-size:10px;color:var(--ts);line-height:1.3;word-break:break-all;margin-top:2px}

/* ===== #169 销售财务逐笔流水账 =====
   一行六格用 grid 而不是 table：窄屏（移动端是主力端）要把「支付方式」这一列让位，
   表格改列宽会把金额挤成折行，grid 直接换模板列就行。 */
.sr-flows{margin:10px 12px 0;background:var(--cd);border:1px solid var(--bd);border-radius:12px;overflow:hidden}
.sr-flows__hd{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:10px 12px;background:var(--cb);border-bottom:1px solid var(--bd)}
.sr-flows__title{font-weight:600;font-size:14px}
.sr-flows__hint{font-size:11px;color:var(--ts);flex:1;min-width:120px}
.sr-flows__acts{display:flex;gap:6px;flex:none}
.sr-flows__warn{padding:8px 12px;font-size:12px;color:var(--wc);background:var(--cb);border-bottom:1px solid var(--bd)}
.sr-flows__body{max-height:60vh;overflow:auto;-webkit-overflow-scrolling:touch}
.sr-flow-cust{border-bottom:1px solid var(--bd)}
.sr-flow-cust:last-child{border-bottom:0}
.sr-flow-cust__hd{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--cb);cursor:pointer;font-size:12px;position:sticky;top:0;z-index:1}
.sr-flow-cust__ar{flex:none;color:var(--ts);width:12px}
.sr-flow-cust__nm{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}
.sr-flow-cust__kv{flex:none;color:var(--ts);white-space:nowrap}
.sr-flow-cust__n{flex:none;min-width:22px;text-align:center;padding:0 6px;height:18px;line-height:18px;border-radius:9px;background:var(--cd);border:1px solid var(--bd);font-size:11px;color:var(--ts)}
.sr-flow-row{display:grid;grid-template-columns:80px 64px 1fr 84px 96px 96px;align-items:center;gap:8px;padding:7px 12px;font-size:12px;border-top:1px solid var(--bd);cursor:pointer}
.sr-flow-row:hover{background:var(--cb)}
.sr-flow-row__d{color:var(--ts);white-space:nowrap}
.sr-flow-row__k{flex:none;font-size:11px;padding:0 6px;height:18px;line-height:18px;border-radius:4px;text-align:center;background:var(--cb);border:1px solid var(--bd);white-space:nowrap}
.sr-flow-k--sale{color:var(--pci);border-color:var(--pc)}
.sr-flow-k--return,.sr-flow-k--refund{color:var(--dc);border-color:var(--dc)}
.sr-flow-k--pay{color:var(--sc);border-color:var(--sc)}
.sr-flow-k--void{color:var(--wc);border-color:var(--wc)}
.sr-flow-row__doc{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sr-flow-row__m{color:var(--ts);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sr-flow-row__amt{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.sr-flow-row__bal{text-align:right;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}
.sr-flow-row--neg .sr-flow-row__amt,.sr-flow-row--neg .sr-flow-row__bal{color:var(--dc)}
.sr-flow-sub,.sr-flow-total{display:flex;flex-wrap:wrap;gap:10px;padding:7px 12px;font-size:12px;background:var(--cb);border-top:1px solid var(--bd)}
.sr-flow-total{font-weight:700}
.sr-flow-sub__l,.sr-flow-total__l{font-weight:600}
.sr-flow-tie{padding:8px 12px;font-size:12px;border-top:1px solid var(--bd)}
.sr-flow-tie--ok{color:var(--sc);background:rgba(52,199,89,.08)}
.sr-flow-tie--bad{color:#fff;background:var(--dc)}
@media(max-width:768px){
  /* #173 手机上八个金额口径必须全部看得见：原来是一排横滚 + 值 nowrap 省略，
     实测「总计 ¥231,...」「余款净 +¥52...」被裁成半截 —— 而这一屏正是要人核对的数（#126）。
     改成两列网格 + 允许折行，八项一屏两屏能读完，不再需要横向滚。 */
  .sr-summary-bar{display:grid;grid-template-columns:repeat(2,1fr);gap:6px;overflow:visible}
  .sr-summary-cell,.sr-summary-cell--wide{min-width:0;flex:none;padding:8px 6px}
  .sr-summary-cell__v{white-space:normal;overflow:visible;text-overflow:clip;word-break:break-all;font-size:15px}
  .sr-flow-row{grid-template-columns:74px 56px 1fr 96px;}
  .sr-flow-row__m{display:none}
  .sr-flow-row__bal{grid-column:3 / 5;text-align:right}
  .sr-flow-row__amt{grid-column:3 / 5;text-align:right}
  .sr-flow-row{row-gap:2px}
  .sr-flow-cust__kv{font-size:11px}
  /* 客户组标题实测丢掉 104px（客户名是这一组的唯一标识，丢了就不知道这组是谁） */
  .sr-flow-cust__nm{white-space:normal;overflow:visible;text-overflow:clip;word-break:break-all;line-height:1.3}
}
@media(max-width:480px){
  .sr-flow-cust__hd{flex-wrap:wrap}
  /* 360px 实测：右侧"应收/已收/结欠"三段是 flex:none，把客户名挤到只剩 10px 的缺口。
     客户名是这一组的标识 → 让它独占一行，金额行换到第二行。 */
  .sr-flow-cust__nm{flex:1 1 100%;order:-1}
  .sr-flow-row{font-size:11px;padding:6px 8px}
}

/* 采购单顶部：搜索+供应商+日期同一行 */
.record-top-bar{display:flex;align-items:center;gap:8px;padding:8px 12px;flex-wrap:nowrap;background:var(--cd);border-radius:10px;margin:8px 12px}
.record-top-search{flex:1;min-width:180px}
.record-top-supplier{width:150px;flex:0 0 150px;max-width:150px}
.record-top-supplier .el-select{width:100%}
.record-top-date{flex:1;min-width:110px;max-width:180px}
/* #366：宽版（原来写在内联里）改成类，内联的特异度会把断点那条 max-width:none 压死 */
.record-top-date--wide{flex:none;min-width:230px;max-width:300px}
.record-top-sep{color:var(--ts);flex:none;font-size:14px}
.record-top-clear{flex:none;white-space:nowrap}
.record-actions-bar{display:flex;align-items:center;justify-content:space-between;padding:0 12px;margin-bottom:8px;gap:8px;flex-wrap:wrap}
@media(max-width:768px){.record-top-bar{flex-wrap:wrap}.record-top-supplier{width:100%;flex:1 1 100%;max-width:none}.record-top-date,.record-top-date--wide{max-width:none}}

/* 销售开单客户选择列表样式 */
.pos-custpick{margin-top:8px;max-height:50vh;overflow-y:auto;-webkit-overflow-scrolling:touch}
.pos-custpick__row{display:flex;align-items:center;gap:10px;padding:12px 10px;border-radius:10px;margin-bottom:6px;background:var(--cd);border:1px solid var(--bd);cursor:pointer;transition:all .2s}
.pos-custpick__row:hover{border-color:var(--pc);background:rgba(0,122,255,.04)}
.pos-custpick__row.on{border-color:var(--pc);background:rgba(0,122,255,.08)}
.pos-custpick__box{width:22px;height:22px;border-radius:6px;border:2px solid var(--bd);display:flex;align-items:center;justify-content:center;flex:none;transition:all .2s}
.pos-custpick__row.on .pos-custpick__box{background:var(--pc);border-color:var(--pc);color:#fff}
.pos-custpick__name{font-size:14px;color:var(--tc);font-weight:500;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pos-custpick__ph{font-size:12px;color:var(--ts);font-weight:400;margin-left:4px}
.pos-custpick__tip{font-size:12px;color:var(--pci);margin-top:8px;padding:6px 10px;background:rgba(0,122,255,.06);border-radius:6px}

/* 日历选择器弹窗优化 */
.el-picker-panel{min-width:320px !important}
.el-date-picker{min-width:320px !important}
.el-picker-panel__content{min-height:280px}
.el-date-table{width:100%}
.el-date-table td{height:36px;padding:4px 0}
.el-date-table td .el-date-table-cell__text{width:28px;height:28px;line-height:28px;font-size:14px}
.ep-picker-wrap .el-date-editor{width:100% !important}
.ep-picker-wrap .el-input__wrapper{padding:6px 12px}
.ep-picker-wrap .el-input__inner{font-size:14px;height:32px}
/* 确保日期选择器下拉不被截断 */
/* EP 下拉/日期面板：必须浮在所有弹层之上。
   2026-09-17：从 11100 提高到 50000 —— shim 与 EP overlay 现统一由 _nextZ() 分配（上限 40000），
   popper 必须高于这个上限，否则弹窗内的 el-select 下拉被遮挡。 */
.el-popper{z-index:50000 !important}
.el-select-dropdown,.el-picker-panel,.el-autocomplete-suggestion,.el-popper.is-light,.el-popper.is-dark{z-index:50000 !important}

/* 全局弹窗交互动画优化 */
.el-dialog{animation:dialogFadeIn .25s cubic-bezier(.4,0,.2,1)}
@keyframes dialogFadeIn{from{opacity:0;transform:translateY(-20px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}
.el-overlay{animation:fadeIn .2s ease}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
.el-drawer{animation:drawerSlide .3s cubic-bezier(.4,0,.2,1)}
@keyframes drawerSlide{from{transform:translateX(100%)}to{transform:translateX(0)}}
.el-message{animation:msgSlide .3s cubic-bezier(.4,0,.2,1);box-shadow:0 4px 16px rgba(0,0,0,.12);min-width:320px;max-width:90vw;font-size:14px;margin:8px auto;z-index:99999 !important}
.el-notification{z-index:99999 !important}
.el-message--success{border-left:4px solid #67c23a}
.el-message--error{border-left:4px solid #f56c6c}
.el-message__content{line-height:1.5}
@keyframes msgSlide{from{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}
.el-select-dropdown{animation:dropFade .18s ease}
@keyframes dropFade{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}
.el-popper{animation:popperFade .18s ease}
@keyframes popperFade{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}
/* ep-popup 底部弹出动画 */
.ep-popup-overlay{animation:fadeIn .2s ease}
.ep-popup-content{animation:slideUp .28s cubic-bezier(.4,0,.2,1)}
@keyframes slideUp{from{transform:translateY(100%)}to{transform:translateY(0)}}
/* 按钮点击反馈 */
.el-button{transition:all .15s ease}
.el-button:active{transform:scale(.96)}
/* 卡片hover效果 */
.ep-card,.el-card{transition:box-shadow .2s ease}
.ep-card:hover,.el-card:hover{box-shadow:0 4px 16px rgba(0,0,0,.08)}
/* 列表项点击反馈 */
.ep-cell{transition:background .15s ease}
.ep-cell:active{background:rgba(0,122,255,.06)}
/* 标签切换动画 */
.el-tag{transition:all .15s ease}
.el-tag:active{transform:scale(.95)}
/* 输入框聚焦动画 */
.el-input__wrapper{transition:box-shadow .2s ease,border-color .2s ease}
.el-input__wrapper.is-focus{box-shadow:0 0 0 2px rgba(0,122,255,.15) !important}
/* 数字输入框动画 */
.el-input-number{transition:border-color .2s ease;border-radius:6px;background:var(--cd,#fff)}
.el-input-number__decrease,.el-input-number__increase{transition:background .15s ease;border:0 !important;background:transparent !important}
.el-input-number__decrease:hover,.el-input-number__increase:hover{color:var(--pci,#007AFF) !important;background:rgba(0,122,255,.06) !important}
.el-input-number__decrease:active,.el-input-number__increase:active{background:rgba(0,122,255,.1)}
/* 进度条动画 */
.el-progress-bar__inner{transition:width .4s cubic-bezier(.4,0,.2,1)}
/* 表格行动画 */
.el-table__row{transition:background .15s ease}
.el-table__row:hover>td{background:rgba(0,122,255,.04) !important}

/* 订单详情修改记录 */
.ord-modify__row{padding:10px 16px;border-bottom:1px solid var(--bd)}
.ord-modify__top{display:flex;align-items:center;gap:8px}
.ord-modify__tag{font-size:12px;font-weight:600;color:var(--pci);background:rgba(0,122,255,.08);padding:2px 8px;border-radius:6px;white-space:nowrap}
.ord-modify__time{font-size:12px;color:var(--ts);margin-left:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ord-modify__detail{font-size:13px;color:var(--tc);margin-top:4px;line-height:1.5;word-break:break-all}
/* 2026-09-10：role-tab 角色预设选中态（使用 class，避免 :style 函数表达式重渲染问题） */
.role-chip{padding:6px 14px;border-radius:16px;border:1px solid var(--bd);background:var(--cd);color:var(--tc);font-size:13px;cursor:pointer;transition:all .15s}
.role-chip--on{background:var(--pc);color:#fff;border-color:var(--pc)}
.role-chip:hover{border-color:var(--pc-light-3,#79bbff)}
/* 2026-09-10：底部菜单添加路由弹窗下拉。
   2026-09-17：跟随 .el-popper 统一抬到 50000（否则路由下拉会被 40000 级弹层遮住）。 */
.role-route-popper{z-index:50000 !important}

/* 2026-09-10：财务/提成汇总卡片（.recon-summary .rs-card 此前缺失样式） */
.recon-summary{display:flex;gap:8px;flex-wrap:wrap;padding:8px 12px;background:var(--cb)}
.recon-summary .rs-card{flex:1 1 120px;min-width:110px;background:var(--cd);border-radius:10px;padding:10px 8px;box-shadow:var(--sh);text-align:center}
.recon-summary .rs-num{font-size:17px;font-weight:700;color:var(--tc);line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.recon-summary .rs-lab{font-size:11px;color:var(--ts);margin-top:3px}
/* 两列网格（提成页：累计/当前一行，优惠/退款一行） */
.recon-summary.rs-grid2{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.recon-summary.rs-grid2 .rs-card{flex:none;min-width:0}
html.dark .recon-summary{background:transparent}
html.dark .recon-summary .rs-card{background:#1f2937;border:1px solid #374151}
