
  :root{
    --bg:#edeff3; --panel:#ffffff; --ink:#14181f; --muted:#5b6373;
    --line:#d6dbe4; --line-strong:#c4cbd6; --brand:#4d61cc; --brand2:#7382de; --accent:#2c8aa3;
    --green:#138a59; --red:#c93f3f; --yellow:#b3801a;
    --subnav-bg:#e8effb; --subnav-btn:#dde6f7;
    --title-bg:#eef2ff; --title-ink:#1e3a8a;
    --shadow:0 1px 3px rgba(18,26,48,.12),0 6px 22px rgba(18,26,48,.08);
  }
  *{box-sizing:border-box}
  /* v6.10.47 修复 sticky 失效：
     html,body 同时 height:100% 会在 flex 嵌套的深 sticky 场景下把内部 sticky 元素短路。
     改为 min-height:100% 让 body 高度随内容扩展，sticky 容器才能跟着滚。 */
  html,body{margin:0;min-height:100%}
  body{background:var(--bg);color:var(--ink);font:14px/1.55 -apple-system,"Segoe UI","Microsoft YaHei",Roboto,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;overflow-x:hidden}
  /* v6.10.80 手机端：保证任何子元素意外撑超都不会触发横向滚动（特别是 grid/flex item/超长字/svg/canvas/img，
     它们的固有内容宽度可能比父容器更宽，导致 document.scrollWidth > viewport.width）。
     overflow-x:hidden 直接 clip；这是 v6.10.79 等宽修复后的兜底防线。 */
  html{overflow-x:hidden}
  /* sticky 链条的祖先必须全部保持 overflow:visible，否则 sticky 会以首个滚动祖先为边界提早停住。
     这里对深嵌套链（main / .card / .entry-page）加显式兜底，覆盖任何浏览器默认 reset。 */
  .layout,.content,main#view,.card,.entry-page{overflow:visible!important;position:static}
  .entry-page{position:relative}
  header.top{background:linear-gradient(120deg,var(--brand),var(--brand2));color:#fff;padding:14px 22px;display:flex;align-items:center;gap:14px;box-shadow:var(--shadow);position:sticky;top:0;z-index:20}
  header.top h1{font-size:18px;margin:0;font-weight:700;letter-spacing:.5px}
  header.top .sub{opacity:.85;font-size:12px}
  header.top .spacer{flex:1}
  header.top select{background:rgba(255,255,255,.16);color:#fff;border:1px solid rgba(255,255,255,.4);border-radius:8px;padding:5px 8px;font-size:13px}
  header.top select option{color:#222}
  /* v6.10.206 易用(P1-保存状态)：顶栏保存状态指示器 */
  header.top .savestate{font-size:12px;padding:3px 10px;border-radius:20px;margin-left:8px;background:rgba(255,255,255,.14);color:#fff;white-space:nowrap}
  header.top .savestate.saving{background:rgba(251,191,36,.25);color:#ffe3a3}
  header.top .savestate.saved{background:rgba(52,211,153,.22);color:#b8f5d8}
  header.top .savestate.err{background:rgba(248,113,113,.28);color:#ffc9c9}
  /* 布局：左侧功能菜单 + 右侧内容（菜单栏贴最左边，不居中） */
  .layout{display:flex;align-items:flex-start}
  .sidebar{display:flex;flex-direction:column;gap:4px;flex:0 0 172px;width:172px;background:var(--panel);border-right:1px solid var(--line-strong);position:sticky;top:54px;height:calc(100vh - 54px);overflow-y:auto;padding:10px 8px;z-index:15}
  .sidebar button{display:flex;align-items:center;gap:10px;width:100%;background:none;border:none;border-radius:10px;padding:11px 12px;font-size:14px;color:var(--muted);cursor:pointer;text-align:left;white-space:nowrap}
  .sidebar button .ic{font-size:18px;width:22px;flex:0 0 22px;text-align:center}
  .sidebar button:hover:not(.active){background:#f0f2f6}
  .sidebar button.active{background:linear-gradient(120deg,var(--brand),var(--brand2));color:#fff;font-weight:600;box-shadow:var(--shadow)}
  .content{flex:1;min-width:0;padding:16px 22px 60px}
  .subnav{display:flex;flex-wrap:wrap;gap:8px;padding:8px 10px;margin-bottom:14px;background:var(--subnav-bg);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow)}
  /* 桌面端：子标签导航吸顶，不随明细滚动 */
  @media(min-width:821px){
    .subnav{position:sticky;top:50px;background:var(--subnav-bg);z-index:19;padding:8px 10px;border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow)}
  }
  .subnav button{background:var(--subnav-btn);border:1px solid var(--line);border-radius:18px;padding:5px 16px;font-size:13px;color:var(--ink);cursor:pointer}
  .subnav button.active{background:var(--brand);color:#fff;border-color:var(--brand);font-weight:600}
  main{padding:0}
  /* 日常登记表单：单行不换行，超出横向滚动；输入框加宽、随列宽自适应 */
  .form-row{display:flex;flex-wrap:nowrap;gap:12px;align-items:flex-end;overflow-x:auto;padding-bottom:8px}
  .form-row .field{position:relative;flex:0 0 auto;min-width:40px;margin-bottom:0}
  .form-row .field input,.form-row .field select{width:100%}
  .field .resize-h{position:absolute;right:-3px;top:18px;bottom:4px;width:14px;cursor:col-resize;z-index:5;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .12s}
  .field:hover .resize-h{opacity:1}
  .field .resize-h::before{content:"";width:4px;height:16px;border-left:2px solid var(--brand);border-right:2px solid var(--brand);border-radius:2px;opacity:.45}
  .field .resize-h:hover::before{opacity:1}
  .cell-edit{width:90px;max-width:140px}
  .cell-edit[type="date"]{width:110px}
  /* v6.10.267: 摘要/备注默认 6 字宽，悬停显示全文 */
  .hint-field{width:6em !important;flex:0 0 auto !important}
  .hint-field input{width:100% !important}
  .cell-edit.hint-input{width:6em !important;min-width:6em;max-width:6em}
  .card{background:var(--panel);border:1px solid var(--line-strong);border-radius:14px;box-shadow:var(--shadow);padding:18px;margin-bottom:16px}
  .card h2{margin:-18px -18px 14px -18px;padding:12px 18px;background:var(--title-bg);color:var(--title-ink);border-bottom:1px solid var(--title-bg);border-radius:14px 14px 0 0;font-size:16px;font-weight:600;display:flex;align-items:center;justify-content:center;gap:8px;position:relative}
  .card h2 .tag{font-size:11px;color:var(--muted);font-weight:400;background:rgba(255,255,255,.55);padding:2px 8px;border-radius:10px}
  /* v6.10.273: 报表中心/数据分析统一改成首页「账户资金概览」大卡片布局：
     外层一个 .card，顶部 h2 标题条，内部各分析区块用 .rpt-section，
     .rpt-section-head 为灰色小标题条，.rpt-section-body 无边框无背景 */
  .rpt-section{margin-bottom:16px}
  .rpt-section:last-child{margin-bottom:0}
  .rpt-section-head{padding:8px 12px;background:var(--subnav-btn,#f7f8fb);color:var(--ink);border:1px solid var(--line);border-radius:10px;font-size:13px;font-weight:600;text-align:left;margin-bottom:10px}
  .rpt-section-body{}
  .rpt-stack{display:flex;flex-direction:column;gap:14px}
  .rpt-split{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}
  @media(max-width:820px){.rpt-split{grid-template-columns:1fr}}
  .card h2.rpt-header-title{justify-content:space-between;gap:12px;flex-wrap:wrap}
  .card h2.rpt-header-title .rpt-filter-bar{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:400;flex-wrap:wrap}
  .card h2.rpt-header-title .rpt-filter-bar label{font-weight:600}
  .card h2.rpt-header-title .rpt-filter-bar select,.card h2.rpt-header-title .rpt-filter-bar input{font-size:12px;padding:3px 6px}
  .card h2.rpt-header-title .spacer{flex:1}
  .card h2.rpt-header-title .rpt-title{font-size:14px}
  @media(max-width:820px){.card h2.rpt-header-title{justify-content:center}.card h2.rpt-header-title .rpt-filter-bar{width:100%;justify-content:center}.card h2.rpt-header-title .spacer{display:none}}
  .grid{display:grid;gap:14px}
  .kpis{grid-template-columns:repeat(4,1fr)}
  @media(max-width:820px){.kpis{grid-template-columns:repeat(2,1fr)}}
  .kpi{background:var(--panel);border:1px solid var(--line-strong);border-radius:14px;padding:16px;box-shadow:var(--shadow)}
  .kpi .lbl{color:var(--muted);font-size:13px}
  .kpi .val{font-size:24px;font-weight:700;margin-top:6px}
  .kpi.rev .val{color:var(--green)} .kpi.cost .val{color:var(--brand)}
  .kpi.exp .val{color:var(--yellow)} .kpi.profit .val{color:var(--accent)}
  .row{display:flex;flex-wrap:wrap;gap:12px}
  .field{display:flex;flex-direction:column;gap:4px;margin-bottom:10px;position:relative}
  .field label{font-size:12px;color:var(--muted)}
  input,select,textarea{font-family:inherit;font-size:12px;padding:4px 9px;border:1px solid var(--line-strong);border-radius:9px;background:#fff;color:var(--ink);min-width:0}
  input:focus,select:focus,textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(99,110,150,.16)}
  textarea{resize:vertical;min-height:38px}
  /* v6.10.156: 可搜索下拉组件（替代 datalist，兼容手机端微信/iOS） */
  .search-wrap{position:relative;display:flex;align-items:stretch;width:100%}
  .search-wrap input{flex:1 1 auto;min-width:0;border-top-right-radius:0;border-bottom-right-radius:0}
  .search-wrap .drop-btn{flex:0 0 auto;width:26px;border:1px solid var(--line-strong);border-left:none;background:#f8f9fa;border-top-right-radius:9px;border-bottom-right-radius:9px;color:#666;cursor:pointer;font-size:10px;display:flex;align-items:center;justify-content:center;padding:0}
  .search-wrap .drop-btn:active{background:#eef1f6}
  .search-dropdown{display:none;position:absolute;left:0;right:0;top:100%;margin-top:2px;max-height:220px;overflow-y:auto;background:#fff;border:1px solid var(--brand);border-radius:8px;z-index:100;box-shadow:0 4px 12px rgba(0,0,0,.15)}
  .search-dropdown .search-opt{padding:7px 10px;cursor:pointer;font-size:13px;color:var(--ink);border-bottom:1px solid var(--line)}
  .search-dropdown .search-opt:hover,.search-dropdown .search-opt.active{background:var(--subnav-bg,#eef2ff)}
  .search-dropdown .search-empty{padding:8px 10px;color:var(--muted);font-size:12px}
  .search-wrap.cell-search .drop-btn{width:22px;font-size:9px}
  .search-wrap.cell-search .search-dropdown{font-size:12px}
  /* v6.10.157: 下拉浮层脱离父容器（避免被 .form-row 等 overflow 裁剪），fixed 定位置顶 */
  .search-dropdown.detached{position:fixed;margin-top:0;z-index:9999}
  .form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}
  /* 基础资料等：输入框与添加按钮在同一水平线顶部对齐 */
  .form-bar{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap}
  .form-bar .form-fields{display:flex;flex-wrap:wrap;gap:12px;flex:1;align-items:flex-start;min-width:0}
  .form-bar .form-fields .field{flex:0 0 auto;margin-bottom:0;min-width:40px}
  .form-bar .form-actions{align-self:flex-end;flex:0 0 auto}
  .form-bar .form-actions .btn{white-space:nowrap}
  button.btn{background:var(--brand);color:#fff;border:none;border-radius:9px;padding:5.5px 12px;font-size:12px;line-height:1.2;cursor:pointer;font-weight:600}
  button.btn:hover{filter:brightness(1.05)}
  button.btn.ghost{background:#eef1f6;color:#33404f}
  button.btn.sm{padding:4px 8px;font-size:11px;border-radius:7px}
  button.btn.danger{background:#fdecec;color:var(--red)}
  table{width:100%;border-collapse:collapse;font-size:13px}
  th,td{padding:8px 10px;text-align:left;border-bottom:1px solid var(--line);white-space:nowrap}
  th{text-align:center;color:var(--title-ink);font-weight:600;background:var(--title-bg);position:sticky;top:0}
  tbody tr:hover{background:#fafbff}
  td.num{text-align:right;font-variant-numeric:tabular-nums}
  tfoot td{background:#f3f6fb;font-weight:700;border-top:2px solid var(--line);border-bottom:none}
  .table-wrap{max-height:420px;overflow:auto;border:1px solid var(--line-strong);border-radius:10px}
  .table-wrap.no-scroll{max-height:none;overflow:visible}
  .table-wrap thead th{position:sticky;top:0;z-index:2}
  /* 报表中心、数据分析：明细表格不限制高度、随页面整体滚动 */
  .report-mode .table-wrap{max-height:none;overflow:visible;border-radius:10px}
  .report-mode .table-wrap thead th{top:88px}
  /* v6.10.252: 报表中心、数据分析的表格表头与数据全部居中对齐 */
  .report-mode .table-wrap th,
  .report-mode .table-wrap td{text-align:center}
  /* v6.10.253: 电脑端通用数据表格（基础资料、日常登记、库存盘点等）表头与数据全部居中对齐 */
  .table-wrap th,
  .table-wrap td{text-align:center}
  /* v6.10.254~258: 日常登记页（物料采购/采购付款/营收/费用/资金流转/会员/应收/摊销等）拆分表格强制居中，
     覆盖金额列 .num 的右对齐（用 !important + 更具体的 .entry-page 作用域压住下方 .entry-page .table-wrap td.num 的 text-align:right） */
  .entry-page .entry-head th,
  .entry-page .entry-head td,
  .entry-page .entry-body .table-wrap th,
  .entry-page .entry-body .table-wrap td,
  .entry-page .entry-body .table-wrap td.num{text-align:center !important}
  /* 日常登记：表头以上区域固定，明细自然向下展开 */
  .entry-page{position:relative;padding:0}
  /* v6.10.47: 增加 -webkit-sticky 前缀并显式声明 left/right 防止某些浏览器把 sticky 当 absolute 渲染 */
  /* v6.10.264: 顶部缝隙变窄（padding-top 18→10），标题栏高度降低约三分之一（padding 12→8） */
  .entry-sticky{position:-webkit-sticky;position:sticky;top:96px;left:0;right:0;background:var(--panel);z-index:14;border-bottom:none;border-radius:14px 14px 0 0;padding:10px 18px 0;margin-bottom:0}
  .entry-sticky h2{margin:-10px -18px 12px -18px;padding:8px 18px;background:var(--title-bg);color:var(--title-ink);border-radius:14px 14px 0 0;font-size:16px;font-weight:600;display:flex;align-items:center;justify-content:center;gap:8px}
  .entry-form .form-row{margin-bottom:0}
  /* v6.10.262: 日常登记「录入」「筛选」两个区域分别加浅边框与角标标题 */
  .entry-section{position:relative;border:1px solid var(--line);border-radius:10px;padding:14px 14px 10px;margin:14px 0;background:var(--panel)}
  .entry-section-title{position:absolute;top:-10px;left:14px;background:var(--title-bg);color:var(--title-ink);padding:2px 10px;border-radius:6px;font-size:13px;font-weight:600;line-height:1.4;white-space:nowrap}
  .entry-section .entry-form{padding:0}
  .entry-section #entryFilter{padding:0}
  .entry-section #entryFilterBar{margin:0 !important}
  .entry-head{width:100%;border-collapse:collapse;margin:0;border:1px solid var(--line-strong);border-bottom:none;border-radius:14px 14px 0 0}
  /* v6.10.261: 统一 head th 与 body td 的底边框，让两表 box-sizing 后列宽计算一致 */
  .entry-head th{background:var(--title-bg);color:var(--title-ink);border-bottom:1px solid var(--line);border-top:none}
  /* 日常登记明细区：不设最大高度、不独立滚动，全部随最右边主滚动条自然展开；
     上方由 .entry-sticky 整体 sticky 在 top:96px（含标题/表单/筛选/列名），滚动时不动 */
  /* v6.10.53: 日常登记明细区（包括 id="entryTable" 或任意带 .entry-body class 的容器）：
     不设最大高度、不独立滚动，全部随最右边主滚动条自然展开；
     上方由 .entry-sticky 整体 sticky 在 top:96px（含标题/表单/筛选/列名），滚动时不动 */
  #entryTable.entry-body,.card.entry-page > .entry-body{max-height:none !important;overflow:visible !important;margin:0 18px 18px;border:1px solid var(--line-strong);border-top:none;border-radius:0 0 14px 14px}
  /* v6.10.261: 明细 table 也撑满容器，由 alignEntryColumns() 注入百分比 colgroup + table-layout:fixed 锁定列宽 */
  #entryTable.entry-body .table-wrap table,.card.entry-page > .entry-body .table-wrap table{width:100%}
  #entryTable.entry-body .table-wrap,.card.entry-page > .entry-body .table-wrap{max-height:none !important;overflow:visible !important;border:none;border-radius:0}
  .entry-body table thead th{position:sticky;top:0;z-index:3;background:var(--title-bg);color:var(--title-ink);box-shadow:none}
  .entry-body table{border-top:none}
  /* v6.10.220: 采购付款「关联」列限制最大宽度，避免把右侧操作列挤出屏幕 */
  .link-col{max-width:220px;white-space:normal;word-break:break-all;line-height:1.5}
  .entry-head th:last-child,.entry-body td.ops{min-width:90px}
  /* v6.10.266: 分页条放在明细表底部右侧 */
  .entry-pager{display:flex;justify-content:flex-end;align-items:center;gap:8px;flex-wrap:wrap;margin:0 18px 14px 18px;padding:0}
  .entry-pager .btn.ghost{background:transparent;border-color:var(--line);color:var(--muted)}
  .entry-pager .btn.ghost:not(:disabled):hover{border-color:var(--primary);color:var(--primary);background:#f3f7ff}
  .entry-pager .pg-info{white-space:nowrap;color:var(--muted);font-size:13px}
  .entry-pager .pg-size{padding:4px 6px;border:1px solid var(--line);border-radius:6px;text-align:center}
  /* v6.10.300: 应收收款页面表头与内容居中对齐 */
  .coll-tbl th,.coll-tbl td,.collect-rc-table th,.collect-rc-table td{text-align:center}
  .coll-tbl input,.collect-rc-table input{text-align:center}
  @media(max-width:820px){ .link-col{max-width:160px}; .entry-pager{justify-content:center;margin:0 12px 12px 12px} }
  .ledger-sub td{color:var(--red);font-weight:700;background:#fff6f6}
  .ledger-open td{font-weight:700;background:#fafbfc}
  .filters{display:flex;flex-wrap:wrap;gap:10px 14px;align-items:center;margin:4px 0 12px}
  .filters label{font-size:13px;color:var(--muted)}
  .filters select,.filters input{padding:4px 8px;font-size:12px}
  .filters.rpt-bar{align-items:center;margin:2px 0 12px;padding:8px 12px;background:var(--subnav-btn,#f7f8fb);border:1px solid var(--line);border-radius:10px}
  .filters.rpt-bar label{font-weight:600;color:var(--ink)}
  /* v6.10.235: rpt-header 把分析标题 + 导出按钮推到右侧，与报表中心标题区一致 */
  .filters.rpt-bar.rpt-header{flex-wrap:wrap;gap:6px 12px}
  .filters.rpt-bar.rpt-header .rpt-title{margin-left:auto;font-weight:600;color:var(--ink);font-size:14px;display:inline-flex;align-items:center;gap:6px}
  .filters.rpt-bar.rpt-header .rpt-title .tag{font-size:11px;padding:1px 8px}
  .filters.rpt-bar.rpt-header .export-slot{margin-left:6px}
  /* 超级后台：按用户截图朴素重排（删我之前加的装饰：sticky 头锁、grp/emp 背景、阴影、列最小宽） */
  .admin-card{padding:0;overflow:visible;background:var(--panel);border:1px solid var(--line);border-radius:12px}
  .admin-card .admin-head{padding:12px 18px;border-bottom:1px solid var(--title-bg);background:var(--title-bg);border-radius:12px 12px 0 0}
  .admin-card .admin-head h2{margin:0;font-size:16px;font-weight:600;color:var(--title-ink);text-align:center}
  .admin-card .admin-head .hint{margin:0 0 10px;font-size:13px;color:var(--muted);line-height:1.5}
  .admin-card .admin-body{padding:0;overflow:visible}
  .admin-card .admin-body .table-wrap.no-scroll{max-height:none;overflow:visible;border:none;border-radius:0}
  .admin-card .admin-table{margin-top:0;border-collapse:separate;border-spacing:0;width:100%}
  .admin-card .admin-table thead th{background:var(--title-bg);color:var(--title-ink);font-weight:600;padding:10px 12px;border-bottom:none;white-space:nowrap;font-size:13px}
  .admin-card .admin-table tbody td{padding:10px 12px;vertical-align:middle;border-bottom:1px solid #eef0f4;font-size:13px}
  .admin-card .admin-table tbody tr:last-child td{border-bottom:none}
  .admin-card .admin-table tbody tr:hover td{background:#fafbfc}
  .admin-card .admin-table td.exp-cell{white-space:nowrap}
  .admin-card .admin-table td.exp-cell .exp-input{font-size:12px;padding:4px 6px}
  .admin-card .admin-table td.lim-cell .limit-input,
  .admin-card .admin-table td.lim-cell .store-limit-input{width:72px;text-align:center;padding:4px 6px;border:1px solid var(--line);border-radius:6px;font-size:12px;background:#fff;color:var(--ink)}
  .admin-card .admin-table td.lim-cell .limit-input:focus,
  .admin-card .admin-table td.lim-cell .store-limit-input:focus{outline:none;border-color:var(--brand)}
  .admin-card .admin-table td.exp-cell .exp-status{white-space:nowrap;display:block;margin-top:4px;font-size:11px;color:var(--muted)}
  .admin-card .admin-table td.mods .mini-check{padding:3px 8px;font-size:12px;margin:2px 4px 2px 0}
  .admin-card .admin-table td.mods .exp-status{font-size:11px;margin-top:4px;color:var(--muted)}
  .admin-card .admin-table td.ops{gap:6px;flex-wrap:wrap;align-items:center}
  .admin-card .admin-table td.ops .btn{padding:5px 10px;font-size:12px}
  .admin-card .admin-table .remark-input{width:100%;max-width:150px;border:1px solid var(--line);border-radius:6px;padding:4px 8px;font-size:12px;background:#fff;color:var(--ink)}
  .admin-card .admin-table .remark-input:focus{outline:none;border-color:var(--brand)}
  /* 会员与员工分组：保留数据 class 但朴素无背景装饰（按用户截图） */
  .admin-card .admin-table tbody tr.grp td{background:transparent;border-top:none}
  .admin-card .admin-table tbody tr.emp td{background:transparent}
  .admin-card .admin-table tbody tr.emp td:first-child{padding-left:14px}
  .filters.admin-filters{align-items:flex-end;margin:4px 0 12px;padding:10px 12px;background:var(--subnav-btn,#f7f8fb);border:1px solid var(--line);border-radius:10px}
  .filters.admin-filters .filter-title{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:700;color:var(--ink);margin-bottom:8px;padding-right:6px}
  .filters.admin-filters label{font-size:12px;color:var(--muted)}
  .filters.admin-filters .field{margin-bottom:0;min-width:110px}
  .filters.admin-filters .btn{margin-bottom:0}
  /* 日常登记录表头点击排序 */
  th.sortable{cursor:pointer;user-select:none;white-space:nowrap}
  th.sortable:hover{background:#d5ede0}
  th.sortable.active{background:#c6e6d2;color:var(--title-ink)}
  th .sort-ind{font-size:10px;margin-left:3px;opacity:.7}
  th.sortable.active .sort-ind{opacity:1;color:var(--title-ink)}
  th .sort-ind.off{opacity:.3}
  /* v6.10.88: 序号列（物料信息 + 日常登记明细共用 tableOf 的 showNo） */
  .table-wrap th.no,.table-wrap td.no{width:42px;text-align:center;color:inherit;font-variant-numeric:tabular-nums;font-size:12px;white-space:nowrap}
  .table-wrap td.no{color:var(--muted)}
  .stmt-head{display:flex;flex-wrap:wrap;gap:10px 22px;margin:4px 0 14px;font-size:13px;color:var(--muted)}
  .stmt-head b{color:var(--ink);font-weight:700}
  /* v6.10.276: 明细账/对账单大表分页控件 */
  .stmt-pager{display:flex;align-items:center;justify-content:flex-end;gap:10px;margin-top:10px}
  .stmt-pg-info{font-size:12px;color:var(--muted)}
  .stmt-pager .btn.sm[disabled]{opacity:.45;cursor:not-allowed}
  .pill{display:inline-block;padding:2px 9px;border-radius:20px;font-size:12px;background:#eef1f6;color:#33404f}
  .pos{color:var(--red)} .neg{color:var(--green)} /* 中国式：红涨 */
  .empty{color:var(--muted);text-align:center;padding:24px}
  .bar{height:10px;border-radius:6px;background:linear-gradient(90deg,var(--brand),var(--brand2))}
  .barline{display:flex;align-items:center;gap:10px;margin:8px 0}
  .barline .name{width:90px;color:#33404f;font-size:13px}
  .barline .track{flex:1;background:#eef1f6;border-radius:6px;height:10px;overflow:hidden}
  .barline .pct{width:48px;text-align:right;color:var(--muted);font-size:12px}
  .legend{display:flex;gap:18px;font-size:12px;color:var(--muted);margin-top:10px;align-items:center}
  .legend i{display:inline-block;width:14px;height:8px;border-radius:3px;margin-right:6px;vertical-align:middle}
  .legend i.line{width:14px;height:0;border-radius:0;border-top:2px solid var(--accent);background:none}
  .chart-card{background:linear-gradient(180deg,#fbfcfe,#f7f9fc);border:1px solid var(--line);border-radius:14px;padding:8px 6px 2px;margin-top:4px}
  /* v6.10.93: 所有图表（组合图/折线图/饼图/条形图/环形图）统一 hover 交互——同组节点高亮、其他变暗、对应节点放大、显示金额 tooltip */
  svg [data-s]{transition:opacity .18s ease, fill-opacity .18s ease, stroke-opacity .18s ease, stroke-width .15s ease, r .15s ease, transform .15s ease; transform-box:fill-box; transform-origin:center}
  svg [data-s]:hover{cursor:pointer}
  .ch-tip{position:absolute;z-index:9999;background:#14181f;color:#fff;padding:6px 10px;border-radius:6px;font-size:12px;line-height:1.4;pointer-events:none;transform:translate(-50%,calc(-100% - 12px));box-shadow:0 4px 12px rgba(0,0,0,.25);white-space:nowrap;opacity:0;transition:opacity .15s ease}
  .ch-tip.show{opacity:1}
  .ch-tip-title{opacity:0.75;font-size:11px;margin-bottom:2px}
  .ch-tip-val{font-weight:700;font-size:13px;font-variant-numeric:tabular-nums}
  .hint{font-size:12px;color:var(--muted);margin-top:8px}
  .toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:#14181f;color:#fff;padding:10px 18px;border-radius:10px;box-shadow:var(--shadow);opacity:0;transition:.25s;z-index:50;pointer-events:none}
  .toast.show{opacity:1}
  .chips{display:flex;flex-wrap:wrap;gap:6px}
  .chip{background:var(--subnav-btn,#eef1f6);border:1px solid var(--line);border-radius:18px;padding:4px 12px;font-size:13px;display:flex;align-items:center;gap:6px}
  .chip b{cursor:pointer;color:var(--red);font-weight:700}
  /* v6.10.95: 表格内可点击钻取链接（会员报表→会员明细） */
  .lnk{color:var(--brand);cursor:pointer;text-decoration:underline;text-underline-offset:2px}
  .lnk:hover{color:#2a47c9}
  .split{display:grid;grid-template-columns:1fr 1fr;gap:16px}
  @media(max-width:820px){.split{grid-template-columns:1fr}}
  /* v6.10.231: 账户资金概览卡片美化 */
  .acct-overview .table-wrap{ background:transparent; border:none; border-radius:0 }
  .acct-overview .table-wrap th{ background:transparent; color:var(--ink); font-weight:600; border-bottom:2px solid var(--line-strong) }
  .acct-overview .table-wrap td{ border-bottom:1px solid var(--line) }
  .acct-overview .table-wrap tfoot td{ background:#f8fafc; border-top:2px solid var(--line-strong) }
  .acct-split{ grid-template-columns:1.35fr 1fr; align-items:start }
  .acct-pie{ display:flex; flex-direction:column; align-items:center; padding-top:4px; min-width:0 }
  .acct-pie .pie-caption{ font-size:12px; color:var(--muted); margin-bottom:8px; letter-spacing:.5px }
  /* v6.10.232: 账户余额占比 SVG 跟左边表格等高适配——取消强制最小宽度，改用最大宽高限制，避免饼图过大撑爆右列 */
  .acct-pie .pie-leader{ width:100%; display:flex; justify-content:center; align-items:flex-start }
  .acct-pie .pie-leader svg{ width:100%; height:auto; max-height:300px; max-width:100% }
  @media(max-width:820px){ .acct-split{ grid-template-columns:1fr } .acct-pie{ padding-top:10px } }
  .mini{font-size:12px;color:var(--muted)}
  /* v6.10.57 首页看板新增样式 */
  .flow-row{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:16px}
  @media(max-width:820px){.flow-row{grid-template-columns:1fr}}
  /* 今日实时卡：与下方「本期」四卡同属一套视觉语言（纯色卡/圆角/左对齐），仅略小形成层级 + 彩色左边框点明收/支/盈 */
  .flow-kpi{background:var(--panel);border:1px solid var(--line-strong);border-left:4px solid var(--brand);border-radius:14px;padding:14px 16px;box-shadow:var(--shadow)}
  .flow-kpi .lbl{color:var(--muted);font-size:12px;font-weight:600;line-height:1.3}
  .flow-kpi .val{font-size:20px;font-weight:700;margin-top:4px;line-height:1.25}  /* v6.10.86: 22→20 整体协调 */
  .flow-kpi.in{border-left-color:var(--green)} .flow-kpi.out{border-left-color:var(--red)} .flow-kpi.net{border-left-color:var(--accent)}
  .flow-kpi.in .val{color:var(--green)} .flow-kpi.out .val{color:var(--red)} .flow-kpi.net .val{color:var(--accent)}
  .pie-leader{display:flex;justify-content:center;align-items:flex-start;padding:4px 0}
  /* v6.10.233: 所有卡片里的饼/环图 SVG 加 max-height 限制，跟左右表格数据等高适配；别太大也别太小 */
  .pie-leader svg{ max-width:100%; width:100%; height:auto; max-height:300px }
  .tag-exc{display:inline-block;padding:1px 9px;border-radius:20px;font-size:11px;background:#e7f6ee;color:var(--green);font-weight:700}
  .tag-pot{display:inline-block;padding:1px 9px;border-radius:20px;font-size:11px;background:#fff4e0;color:var(--yellow);font-weight:700}
  .pctbar{margin:10px 0 4px}
  .pctbar .row{display:flex;align-items:center;gap:10px;margin:7px 0}
  .pctbar .nm{width:60px;font-size:13px;color:#33404f;flex:0 0 auto}
  .pctbar .track{flex:1;height:14px;background:#eef1f6;border-radius:8px;overflow:hidden;min-width:40px}
  .pctbar .fill{height:100%;border-radius:8px}
  .pctbar .vv{width:88px;text-align:right;font-size:13px;font-weight:700;font-variant-numeric:tabular-nums;flex:0 0 auto}
  /* v6.10.304 同比环比 & 经营建议 */
  .info-card{border:1px solid var(--line);border-radius:12px;padding:14px 16px;background:#fbfcfe}
  .info-card .info-t{font-weight:700;font-size:14px;color:var(--brand);margin-bottom:6px}
  .info-card .info-b{font-size:13px;line-height:1.7;color:#3a4654}
  .info-card .info-b b{color:var(--ink)}
  .tips-wrap{display:flex;flex-direction:column;gap:10px}
  .tip-card{display:flex;gap:10px;align-items:flex-start;border-radius:12px;padding:12px 14px;border:1px solid var(--line);font-size:13px;line-height:1.7}
  .tip-card .ico{flex:0 0 auto;font-size:15px;line-height:1.5}
  .tip-card b{font-variant-numeric:tabular-nums}
  .tip-good{background:#eafaf1;border-color:#bfe9cf;color:#1f7a47}
  .tip-warn{background:#fff8e8;border-color:#f4e0a6;color:#8a6300}
  .tip-bad{background:#fdeeee;border-color:#f3c4c4;color:#b3271f}
  .tip-info{background:#eef3ff;border-color:#cdddfb;color:#2a4d8f}
  .info-grid{grid-template-columns:1fr 1fr;gap:16px}
  @media(max-width:820px){ .info-grid{grid-template-columns:1fr} }
  /* v6.10.305 同比环比简洁版 */
  .trend-mini-tip{display:flex;flex-wrap:wrap;gap:10px 18px;padding:10px 14px;background:#f6f8fb;border-radius:10px;font-size:13px;color:#4b5563;margin:0 0 14px}
  .trend-mini-tip span{white-space:nowrap}
  .trend-main-tbl{width:100%;border-collapse:collapse}
  .trend-main-tbl th,.trend-main-tbl td{padding:11px 10px;border-bottom:1px solid var(--line)}
  .trend-main-tbl th{font-size:12px;color:#6b7280;background:#f8fafc;font-weight:600}
  .trend-main-tbl td.trend-name{font-weight:600;color:var(--ink)}
  .trend-main-tbl td.center{text-align:center}
  .health-badge{display:inline-block;min-width:44px;text-align:center;padding:3px 10px;border-radius:12px;font-size:12px;font-weight:700}
  .health-badge.good{background:#e6f7ed;color:#1a7c46}
  .health-badge.warn{background:#fff5e0;color:#8a6300}
  .health-badge.bad{background:#fde8e8;color:#b3261e}
  .trend-bar-chart{padding:8px 4px}
  .trend-bar-row{display:flex;align-items:center;gap:10px;margin:10px 0}
  .trend-bar-name{width:72px;font-size:13px;color:#374151;flex:0 0 auto}
  .trend-bar-bars{flex:1;display:flex;flex-direction:column;gap:5px}
  .trend-bar-track{height:14px;background:#eef1f6;border-radius:8px;overflow:hidden;position:relative}
  .trend-bar-fill{height:100%;border-radius:8px;transition:width .4s ease}
  .trend-bar-fill.cur{background:linear-gradient(90deg,var(--green),#4ade80)}
  .trend-bar-fill.prev{background:linear-gradient(90deg,var(--muted),#c1c9d4)}
  .trend-bar-vals{width:140px;text-align:right;font-size:12px;color:#4b5563;flex:0 0 auto;display:flex;flex-direction:column;gap:4px}
  .trend-bar-vals .cur{font-weight:700;color:var(--green)}
  .trend-bar-vals .prev{color:var(--muted)}
  .trend-bar-legend{display:flex;gap:16px;justify-content:center;margin-top:10px;font-size:12px;color:#4b5563}
  .trend-bar-legend .cur{color:var(--green);font-weight:600}
  .trend-bar-legend .prev{color:var(--muted);font-weight:600}
  @media(max-width:820px){
    .trend-mini-tip{font-size:12px}
    .trend-bar-row{flex-wrap:wrap}
    .trend-bar-name{width:100%;margin-bottom:-4px}
    .trend-bar-vals{width:100%;text-align:left;flex-direction:row;gap:14px;margin-top:-4px}
    .trend-bar-bars{min-width:0;width:calc(100% - 10px)}
    .trend-main-tbl th,.trend-main-tbl td{padding:9px 6px;font-size:12px}
  }
  /* v6.10.59 等高 split：左图右表卡片高度对齐（桌面端） */
  @media(min-width:821px){
    .split.eq-h{align-items:stretch}
    .split.eq-h > div{display:flex;flex-direction:column;gap:6px;min-width:0}
    .split.eq-h > div > .chart-card,
    .split.eq-h > div > .table-wrap{flex:1 1 auto;min-height:0}
    .split.eq-h > div > .chart-card > svg{width:100%;height:100%}
    .split.eq-h > div > .chart-card.mem-chart{display:flex;align-items:center;justify-content:center}
  /* 应收应付：左右两列等高，表头对齐同一水平线（左 svg 高 → 表格自动推到底） */
  .split.eq-table > div{display:flex;flex-direction:column;gap:10px;min-width:0}
  .split.eq-table > div > .table-wrap{margin-top:auto;flex:0 1 auto}
  }
  /* v6.10.59 首页汇总表统一样式（与各科目收入/各平台收入保持一致） */
  .sumtbl{margin-top:10px}
  svg text{font-family:inherit}
  /* ============ 响应式：手机 / 电脑通用 ============ */
  @media(max-width:820px){
    .layout{flex-direction:column;max-width:100%}
    .sidebar{position:sticky;top:0;flex:0 0 auto;width:100%;height:auto;flex-direction:row;display:flex;overflow-x:auto;border-right:none;border-bottom:1px solid var(--line);padding:6px 12px;z-index:18;scrollbar-width:thin}
    .sidebar button{width:auto;flex:0 0 auto;border-radius:18px;padding:8px 12px;font-size:13px}
    .sidebar button .label{flex:0 0 auto}
    .content{padding:8px 12px 72px}
  }
  @media(max-width:600px){
    /* v6.10.78 手机端：BANNER 与下方卡片等宽——header.top / .subnav / .card 三层
       水平 padding 统一为 12px，让最外层渲染宽度、内容左右边界都对齐到 viewport-24px 一线 */
    header.top{position:static;padding:8px 12px;gap:6px;flex-wrap:nowrap;align-items:center}
    header.top .topuser{padding:0}
    .sidebar{padding:6px 12px}
    .subnav{padding:8px 12px;margin-bottom:10px;border-radius:0;border-left:none;border-right:none}
    .subnav button{padding:6px 12px;font-size:13px}
    header.top h1{font-size:0;margin:0}
    header.top h1 span{display:none}
    header.top .sub{display:none}
    header.top select{padding:4px 6px;font-size:12px;min-width:0}
    header.top label.sub{display:none}
    /* v6.10.249 手机端：CSS Grid 2行×4列精确布局（对齐用户目标格式）
       Row 1: 默认店铺[col1, 左] | 弹性空档[col2, 1fr] | 年份[col3, 右] | 主题[col4, 右]
       Row 2: 店铺管理[col1, 左，贴默认店铺正下方] | 弹性空档 | 设置+退出[col2~4 跨列, justify-self:end 贴右边线]
       用户名 uname 隐藏（目标格式 Row2 只显示 设置 退出） */
    header.top{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;grid-template-rows:auto auto;grid-column-gap:6px;grid-row-gap:6px;padding:8px 12px;align-items:center}
    header.top #storeSel{grid-column:1;grid-row:1;justify-self:start;min-width:88px;max-width:45vw;height:28px;font-size:12px;padding:3px 8px;border-radius:6px}
    header.top .spacer{grid-column:2;grid-row:1}
    header.top #yearSel{grid-column:3;grid-row:1;justify-self:end;min-width:62px;max-width:78px}
    header.top #themeSel{grid-column:4;grid-row:1;justify-self:end;min-width:58px;max-width:74px}
    /* 设置 + 退出：第 2 行，跨 col2~col4 右对齐，与第 1 行主题右边缘对齐（贴右边线） */
    .topuser{grid-column:2/-1;grid-row:2;justify-self:end;display:flex;align-items:center;gap:6px;margin:0;padding:0;font-size:12px}
    .topuser .uname{display:none}
    .topuser .btns{display:flex;gap:4px;flex-shrink:0}
    .topuser .btn.ghost{padding:4px 8px;font-size:12px;border-radius:6px}
    /* 店铺管理：第 2 行第 1 列，左对齐，正好排在默认店铺正下方 */
    header.top .store-mg{grid-column:1;grid-row:2;justify-self:start;padding:4px 10px;font-size:12px;border-radius:6px;margin:0}
    /* 非显式 grid 放置的子项（h1 标题、.sub 标签、#saveState）一律隐藏，避免被 auto-flow 占据格位 */
    header.top h1,header.top .sub,header.top label.sub,header.top #saveState{display:none}
    /* 手机端：登录/注册页面 header 与下方卡片左右对齐（统一 16px 内距），卡片通栏展示；
       整体高度变小、输入框高度和字号变小、输入框宽度变宽（占满）、居中对齐 */
    body.auth-view{margin:0;min-height:100vh;background:var(--bg,#f2f5f9)}
    body.auth-view header.top{display:none}
    body.auth-view #view{padding:0;display:flex;align-items:center;justify-content:center;min-height:100vh;width:100%}
    /* v6.10.132 手机端登录卡：完全撑满视口宽度，左右无白边；圆角略小、padding 适中；
       自动适配各种手机（iPhone/Android 横竖屏、不同分辨率），靠视口宽度自适应卡片宽度 */
    body.auth-view .auth-card{width:100%;max-width:none;margin:0 !important;padding:22px 18px 20px;border-radius:16px;background:#fff;border:none}
    body.auth-view .auth-card h1{font-size:22px;margin:0 0 2px;text-align:center}
    body.auth-view .auth-sub{font-size:12.5px;margin-bottom:16px}
    body.auth-view .auth-msg{margin-bottom:12px;padding:8px 10px;font-size:12px}
    body.auth-view .auth-tabs{margin-bottom:16px}
    body.auth-view .auth-tab{padding:9px;font-size:14px;min-width:0}
    body.auth-view .auth-form{gap:11px}
    body.auth-view .auth-form input{padding:5.8px 14px;font-size:16px;height:auto;line-height:1.4;border-radius:10px;width:100%}
    /* v6.10.263: 手机端登录按钮高度增加约四分之一（padding 6.2px → 8px） */
    body.auth-view .auth-btn{margin-top:4px;padding:8px;width:100%;font-size:16px;border-radius:12px}
    body.auth-view .auth-hint{font-size:12px;min-height:16px}
    body.auth-view .auth-contact{font-size:13px;padding:11px 12px;margin-top:14px;width:100%}
    body.auth-view .captcha-row{margin-top:6px;gap:10px}
    body.auth-view .captcha-canvas{height:42px;width:120px}
    body.auth-view .auth-link{margin-top:10px;font-size:13px}
    /* 手机端：内容区 / 卡片 / 子导航 / 菜单栏全部通栏，与顶部标题栏等宽，消除割裂感 */
    .content{padding-left:0;padding-right:0;padding-top:8px;padding-bottom:72px}
    .sidebar{padding-left:12px;padding-right:12px}
    .subnav{padding:8px 10px;margin-bottom:10px}
    .subnav button{margin-left:0}
    /* 手机端不吸顶，避免和顶部横向菜单重叠 */
    .entry-sticky{position:relative;top:auto;z-index:auto;padding:14px 0 0;border-radius:0}
    .report-mode .table-wrap thead th{top:0}
    .card{padding:12px;margin-left:0;margin-right:0;border-radius:12px}
    .card h2{margin:-12px -12px 12px -12px;padding:10px 12px;border-radius:12px 12px 0 0;font-size:15px}
    .entry-sticky h2{margin:-14px 0 12px 0;padding:10px 12px;border-radius:0}
    /* 手机端：日常登记录入区域两侧留白，录入框整体收窄，不再与屏幕边缘平齐 */
    .entry-page.card{padding-left:14px;padding-right:14px}
    /* 手机端：日常登记等录入表单改为纵向堆叠，每字段一行，避免横向滑动 */
    .form-row{flex-wrap:wrap;gap:10px;overflow-x:visible;padding-bottom:0}
    .form-row .field{width:100% !important;min-width:0 !important;flex:1 1 100% !important;margin-bottom:0}
    .form-row .field input,.form-row .field select{width:100%}
    .form-row .field .resize-h{display:none}
    .form-row > div:not(.field){width:100%}
    .form-row .btn,.form-row button{width:100%;margin-left:0 !important;margin-top:4px}
    /* v6.10.120 手机端：录入区改为「label 左 / 控件 右」同行布局；
       高度收紧：min-height 38px → 25px（约 2/3），让标签和输入框视觉统一、卡片更紧凑；
       字号、padding、边框同步调整。
       限定改为 .entry-page（不再依赖 .entry-form），覆盖所有日常登记 + 应收签单 + 摊销支出 等用 form-row 录入的页面。
       排除基础资料/会员/权限等不含 .entry-page 的页面。 */
    .entry-page .form-row{flex-direction:column;gap:5px;padding-bottom:0}
    .entry-page .form-row > .field{display:grid !important;grid-template-columns:70px 1fr;align-items:center;gap:8px;width:100% !important;min-width:0 !important;flex:1 1 100% !important;margin-bottom:0;padding:1px 0}
    .entry-page .form-row > .field > label{margin:0;padding:0;font-size:13px;color:var(--ink);font-weight:600;text-align:left;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:0 0 auto}
    .entry-page .form-row > .field > input,
    .entry-page .form-row > .field > select,
    .entry-page .form-row > .field > textarea,
    .entry-page .form-row > .field > .search-wrap > input{width:100% !important;min-width:0 !important;max-width:100% !important;border:1px solid var(--line-strong) !important;background:#fff !important;border-radius:8px !important;padding:4px 9px !important;font-size:14px !important;min-height:25px !important;height:auto !important;color:var(--ink) !important;box-shadow:none !important;text-align:left}
    .entry-page .form-row > .field > input:focus,.entry-page .form-row > .field > select:focus,.entry-page .form-row > .field > textarea:focus,.entry-page .form-row > .field > .search-wrap > input:focus{border-color:var(--brand) !important}
    .entry-page .form-row > .field > input[type=number],.entry-page .form-row > .field > .search-wrap > input[type=number]{text-align:right}
    .entry-page .form-row > .field > input[type=date],.entry-page .form-row > .field > .search-wrap > input[type=date]{text-align:center;padding:4px 5px !important}
    .entry-page .form-row > .field > select{padding-right:22px !important}
    .entry-page .form-row > .field > .search-wrap .drop-btn{min-height:25px !important;width:30px !important}
    .entry-page .form-row > div:not(.field){width:100%;display:flex;flex-direction:column;gap:0}
    .entry-page .form-row > div:not(.field) > .btn{width:100%}
    .kpis{grid-template-columns:repeat(2,1fr)}
    /* v6.10.86: 手机端数字改小 + 不加粗 + 紧凑 padding，避免 2 列布局下长数字（7 位 + ¥ + ,.）撑出/换行 */
    .kpi .val{font-size:18px;font-weight:700;line-height:1.25}
    .kpi .lbl{font-size:12px}
    .kpi{padding:12px 10px;border-radius:10px}
    /* .subnav 已在 media 开头处统一定义为 padding:8px 12px（v6.10.78） */
    /* 录入区大触控 + 按钮触控高度（iOS HIG ≥44px） */
    .field input,.field select,.entry-filter input,.entry-filter select,.filters input,.filters select{font-size:16px !important;padding:4.9px 12px !important;min-height:19.5px !important;border-radius:10px !important}
    .field input[type="date"],.field input[type="number"]{min-height:19.5px}
    .btn{min-height:29.3px !important;font-size:14px !important;padding:6.67px 16px !important;border-radius:10px !important}
    .btn.ghost{min-height:26.7px !important;font-size:13px !important;padding:5.33px 14px !important}
    .table-wrap td .btn,.card > table td .btn{min-height:24px !important;padding:4px 12px !important;font-size:12px !important}
    .split{grid-template-columns:1fr}
    .barline .name{width:64px;font-size:12px}
    .table-wrap{-webkit-overflow-scrolling:touch}
    .field label{font-size:12px}
    /* 防止 iOS 输入框聚焦时自动缩放 */
    input,select,textarea{font-size:14px;padding:1.8px 9px}
    /* 手机端：筛选栏也纵向堆叠 */
    .entry-filter,.filters{flex-direction:column;align-items:stretch;gap:10px;margin-left:0;margin-right:0}
    .filters.admin-filters{gap:10px}
    .filters.admin-filters .filter-title{margin-bottom:0}
    .entry-filter .field,.filters .field,.filters.admin-filters .field{width:100% !important;min-width:0 !important;flex:1 1 100% !important;margin-bottom:0}
    .entry-filter select,.entry-filter input,.filters select,.filters input,.filters.admin-filters select,.filters.admin-filters input{width:100%}
    .entry-filter .btn,.entry-filter button,.filters .btn,.filters button,.filters.admin-filters .btn,.filters.admin-filters button{width:100%;margin-left:0 !important}
    /* 报表期间选择（全年/月报/日报）：手机端保持横排，不铺满换行 */
    .filters.rpt-bar{flex-direction:row;align-items:center;gap:6px 8px;flex-wrap:wrap}
    .filters.rpt-bar label{width:auto;white-space:nowrap;font-size:12px}
    .filters.rpt-bar select,.filters.rpt-bar input{width:auto;flex:1 1 0;min-width:76px}
    .entry-filter #ef_count,.filters #ef_count{text-align:center;margin-top:4px}
    /* 手机端：隐藏所有筛选与排序控件（日常登记筛选/下拉排序、超级后台筛选栏、表头排序箭头），数据照常全量显示 */
    #entryFilter{display:none !important}
    .filters.admin-filters{display:none !important}
    th.sortable{cursor:default;pointer-events:none}
    th.sortable .sort-ind{display:none}
    /* 基础资料等表单网格在手机端单列 */
    .form-grid{grid-template-columns:1fr}
    .form-bar{flex-direction:column;align-items:stretch}
    .form-bar .form-fields{flex-direction:column}
    .form-bar .form-fields .field{width:100% !important;min-width:0 !important;flex:1 1 100% !important}
    .form-bar .form-fields .field input,.form-bar .form-fields .field select{width:100%}
    .form-bar .form-actions{align-self:stretch;width:100%}
    .form-bar .form-actions .btn{width:100%}
    /* v6.10.122 手机端：基础资料录入区（账户信息/供应商信息/物料信息 共用 .form-bar .form-fields 模板）
       改为「label 左 / 控件 右」同行布局，与日常登记 .entry-page .form-row 同款格式（v6.10.120 风格）。
       78px label 列略宽于日常登记的 70px，给「供应商名称 / 期初数量」等 4-5 字标签留出余量。 */
    .form-bar .form-fields{gap:5px}
    .form-bar .form-fields .field{display:grid !important;grid-template-columns:78px 1fr;align-items:center;gap:8px;width:100% !important;min-width:0 !important;flex:1 1 100% !important;margin-bottom:0;padding:1px 0}
    .form-bar .form-fields .field > label{margin:0;padding:0;font-size:13px;color:var(--ink);font-weight:600;text-align:left;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:0 0 auto}
    .form-bar .form-fields .field input,.form-bar .form-fields .field select{width:100% !important;min-width:0 !important;max-width:100% !important;border:1px solid var(--line-strong) !important;background:#fff !important;border-radius:8px !important;padding:4px 9px !important;font-size:14px !important;min-height:25px !important;height:auto !important;color:var(--ink) !important;box-shadow:none !important;text-align:left}
    .form-bar .form-fields .field input:focus,.form-bar .form-fields .field select:focus{border-color:var(--brand) !important}
    .form-bar .form-fields .field input[type=number]{text-align:right}
    .form-bar .form-fields .field input[type=date]{text-align:center;padding:4px 5px !important}
    .form-bar .form-fields .field select{padding-right:22px !important}
    .card > .card{background:transparent;border:none;padding:0;box-shadow:none}
    /* v6.10.126 全局录入框边框：与应收收款「本次收款」同款（品牌色细边框），覆盖所有 .entry-page / .form-bar / 筛选条 / 表内 input + select + textarea */
    .entry-page .form-row > .field > input,
    .entry-page .form-row > .field > .search-wrap > input,
    .entry-page .form-row > .field > select,
    .entry-page .form-row > .field > textarea,
    .form-bar .form-fields .field input,
    .form-bar .form-fields .field select,
    .entry-filter input,.entry-filter select,
    .exp-bar input,.exp-bar select,
    .rc-bar input,.rc-bar select,
    .filters input,.filters select,
    .table-wrap input,.table-wrap select,.table-wrap textarea{border:1.5px solid var(--brand) !important}
    .btn{padding:5.33px 14px}
    button.btn.sm{padding:3.67px 10px}
    /* 手机端：表单底部操作栏换行，避免按钮过多撑出屏幕 */
    .form-actions{flex-wrap:wrap}
    .form-actions .btn,.form-actions .export-inline .btn,.form-actions .export-inline{width:100%;margin-left:0 !important}
    .form-actions .export-inline{display:flex;flex-wrap:wrap;gap:8px}
    /* v6.10.118 手机端：日常登记「导出/导入/下载模板」三个按钮同行排列，
       宽度随文字自适应（不再 width:100%）；「+ 添加费用/付款/...」主按钮照旧 width:100% 占满一行。
       兼容 form-row 直接放按钮 + form-actions div 两种结构。 */
    .entry-page form .export-inline{display:flex;flex-wrap:nowrap;justify-content:flex-end;gap:8px;margin-left:0 !important;width:auto !important;align-self:flex-end}
    .entry-page form .export-inline .btn{width:auto !important;flex:0 0 auto !important;min-width:64px;margin-left:0 !important;margin-top:0 !important;padding:5.33px 14px !important;font-size:13px !important;white-space:nowrap}
    .entry-page form .export-inline[style*="margin-left:10px"]{margin-left:0 !important}
    .entry-page form > div:last-child:not(.field){display:flex;justify-content:flex-end;padding-top:6px}
    .entry-page form > div:last-child:not(.field) > .btn{width:100%}
  }
  @media(min-width:601px) and (max-width:820px){
    .content{padding:14px 16px 60px}
    /* 手机/小平板：登录页全屏铺满并居中（避免视口宽度 ≥600px 时桌面 max-width:420px 生效导致卡片不贴边） */
    body.auth-view{background:var(--bg,#f2f5f9);min-height:100vh}
    body.auth-view header.top{display:none}
    body.auth-view #view{padding:0;display:flex;align-items:center;justify-content:center;min-height:100vh;width:100%}
    /* v6.10.132 小平板/大屏手机：登录卡撑满屏幕宽度，左右无白边；圆角收一点 */
    .auth-card{width:100%;max-width:none;min-height:0;margin:0 auto !important;padding:28px 26px;border-radius:18px;background:var(--panel,#fff);border:none}
    .auth-card h1{font-size:24px;text-align:center;margin:0 0 2px}
    .auth-sub{font-size:13px;margin-bottom:16px;text-align:center}
    .auth-tabs{margin-bottom:16px;justify-content:center}
    .auth-tab{padding:9px;font-size:14px;min-width:0}
    .auth-form{gap:12px;text-align:center}
    .auth-form input{padding:8px 14px;font-size:16px;text-align:left;border-radius:10px}
    button.auth-btn{margin-top:4px;padding:9.33px;width:100%;font-size:16px;border-radius:12px}
    .auth-contact{font-size:13px;padding:11px 12px;margin-top:14px;max-width:100%}
    .captcha-row{margin-top:6px;gap:10px;justify-content:center}
    .captcha-canvas{height:42px;width:120px}
    .auth-link{display:block;width:100%;margin-top:10px;text-align:center}
  }
  /* ============ 手机端：数据表格卡片化（自动套用到所有 JS 渲染的表格） ============ */
  @media(max-width:680px){
    /* 手机端：日常登记的独立固定表头随卡片化隐藏，避免列多撑宽 */
    .entry-head{display:none}
    .table-wrap{overflow:visible;max-height:none}
    .table-wrap table,.card > table{width:100%;border:0;background:transparent}
    .table-wrap thead,.card > table thead{display:none}
    .table-wrap tfoot:not(.has-total),.card > table tfoot:not(.has-total){display:none}
    .table-wrap tfoot.has-total,.card > table tfoot.has-total{display:block}
    .table-wrap tfoot.has-total .total-row,.card > table tfoot.has-total .total-row{display:block;background:var(--panel);border:1px solid var(--line);border-radius:12px;margin-bottom:10px;padding:10px 12px;box-shadow:var(--shadow)}
    .table-wrap tfoot.has-total .total-row td,.card > table tfoot.has-total .total-row td{display:flex;justify-content:space-between;align-items:center;border:none;background:transparent;padding:6px 0}
    .table-wrap tfoot.has-total .total-row td:empty,.card > table tfoot.has-total .total-row td:empty{display:none}
    .table-wrap tr,.card > table tr{
      display:block;background:var(--panel);border:1px solid var(--line-strong);
      border-radius:12px;margin-bottom:10px;padding:2px 2px;box-shadow:var(--shadow)
    }
    .table-wrap td,.card > table td{
      display:flex;justify-content:space-between;align-items:center;gap:10px;
      border-bottom:1px solid var(--line);padding:9px 12px;white-space:normal;
      text-align:right;font-size:14px
    }
    .table-wrap tr td:last-child,.card > table tr td:last-child{border-bottom:none}
    .table-wrap td::before,.card > table td::before{
      content:attr(data-label);color:var(--muted);font-size:12px;font-weight:600;
      text-align:left;flex:0 0 auto;margin-right:8px;max-width:40%
    }
    .table-wrap td.num,.card > table td.num{text-align:right}
    .table-wrap td.mods,.card > table td.mods{min-width:0;max-width:none;
      flex-direction:column;align-items:stretch;text-align:left}
    .table-wrap td.mods::before,.card > table td.mods::before{margin:0 0 4px}
    .table-wrap td.mods .mods,.card > table td.mods .mods{width:100%;min-width:0}
    .table-wrap td.ops,.card > table td.ops{flex-direction:row;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:6px;text-align:left;white-space:nowrap}
    .table-wrap td.ops::before,.card > table td.ops::before{display:none}
    .table-wrap td.ops .btn,.card > table td.ops .btn{width:auto;flex:0 0 auto;min-width:46px;max-width:none;margin:0;padding:5.5px 10px;font-size:12px}
    .exp-cell{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;gap:6px}
    .exp-cell .exp-input{width:auto;max-width:160px;flex:0 0 auto}
    .table-wrap td input,.card > table td input{max-width:60%}
    .table-wrap td.chk,.card > table td.chk{justify-content:center}
    /* v6.10.118 手机端：日常登记「明细卡片」更紧凑、更清晰。
       1) td padding 收紧 9→6，行高更扁 2) num 列「金额」蓝色品牌色加粗，让重点数据一眼突出
       3) tr 卡片 border 加粗 + 略大半径 4) 序号列单独轻品牌色背景，区分头部
       仅对 .entry-page 内部生效，不影响其他表格。 */
    .entry-page .table-wrap tr{padding:0;margin-bottom:8px;border:1.5px solid var(--line-strong);border-radius:14px;box-shadow:0 1px 2px rgba(15,23,42,.04)}
    .entry-page .table-wrap td{padding:6px 12px;font-size:13.5px;gap:10px;border-bottom:1px solid var(--line)}
    .entry-page .table-wrap td.num{color:var(--brand);font-weight:700;text-align:right;font-size:14.5px;font-variant-numeric:tabular-nums}
    .entry-page .table-wrap td::before{font-size:12px;max-width:48%;color:var(--muted)}
    /* 序号列：单独一格、不显示 ::before 标签，背景轻微品牌色 */
    .entry-page .table-wrap td.no{justify-content:center;background:#f4f7fb;color:#495970;font-weight:700;font-size:13px;min-width:42px}
    .entry-page .table-wrap td.no::before{display:none}
    /* 操作列：浅色底，与字段区分；按钮紧凑 */
    .entry-page .table-wrap td.ops{padding-top:8px;padding-bottom:8px;background:rgba(15,23,42,.02);justify-content:flex-end;gap:6px}
    .entry-page .table-wrap td.ops::before{display:none}
    .entry-page .table-wrap td.ops .btn{min-width:42px;padding:4px 9px;font-size:12px;border-radius:7px}
    .entry-page .table-wrap tr td:last-child{border-bottom:none}
    /* v6.10.277 手机端：日常登记明细卡片改为「标签/数值」两列 flex，与利润核算明细卡片风格一致，
       解决日期、物料名称、供应商等被挤压换行的问题。label 固定 90px 左对齐，数值右对齐、超长省略。 */
    .entry-page .table-wrap table,.entry-page .table-wrap tbody{display:block !important;width:100% !important;box-sizing:border-box !important}
    .entry-page .table-wrap tr{display:block !important;width:100% !important;box-sizing:border-box !important}
    .entry-page .table-wrap td{
      display:flex !important;align-items:center !important;gap:8px !important;width:100% !important;box-sizing:border-box !important;
      padding:8px 12px !important;border-bottom:1px solid var(--line) !important;font-size:14px !important;min-height:36px !important;
      color:var(--ink) !important;overflow:hidden !important
    }
    .entry-page .table-wrap td:last-child{border-bottom:none !important}
    .entry-page .table-wrap td::before{
      content:attr(data-label) !important;color:var(--muted) !important;font-size:12.5px !important;font-weight:600 !important;
      flex:0 0 90px !important;text-align:left !important;white-space:nowrap !important;overflow:hidden !important;text-overflow:ellipsis !important
    }
    .entry-page .table-wrap td .td-val{
      flex:1 1 auto !important;text-align:right !important;white-space:nowrap !important;overflow:hidden !important;text-overflow:ellipsis !important;
      min-width:0 !important;font-size:14px !important
    }
    .entry-page .table-wrap td.num .td-val{color:var(--brand) !important;font-weight:700 !important;font-size:14.5px !important;font-variant-numeric:tabular-nums !important}
    /* 序号/复选列：居中，不显示 label */
    .entry-page .table-wrap td.no,
    .entry-page .table-wrap td.chk{display:flex !important;justify-content:center !important;align-items:center !important;text-align:center !important;padding:8px 12px !important;min-height:36px !important}
    .entry-page .table-wrap td.no{background:#f4f7fb !important;color:#495970 !important;font-weight:700 !important;font-size:13px !important}
    .entry-page .table-wrap td.no::before,
    .entry-page .table-wrap td.chk::before{display:none !important}
    .entry-page .table-wrap td.no .td-val,
    .entry-page .table-wrap td.chk .td-val{flex:0 0 auto !important;text-align:center !important;white-space:nowrap !important}
    /* 操作列：按钮横向右对齐 */
    .entry-page .table-wrap td.ops{display:flex !important;flex-direction:row !important;justify-content:flex-end !important;gap:6px !important;padding:8px 12px !important;align-items:center !important;white-space:nowrap !important;background:rgba(15,23,42,.02) !important}
    .entry-page .table-wrap td.ops::before{display:none !important}
    /* v6.10.278 手机端：日常登记隐藏「筛选」区域与卡片顶部复选框/序号列 */
    .entry-page .entry-filter-section{display:none !important}
    .entry-page .table-wrap td.chk,
    .entry-page .table-wrap td.no{display:none !important}
    .entry-page .table-wrap td.ops .btn{min-width:42px !important;padding:4px 9px !important;font-size:12px !important;border-radius:7px !important}
    /* 编辑态输入框占满 value 列 */
    .entry-page .table-wrap td input.cell-edit,
    .entry-page .table-wrap td select.cell-edit{
      flex:1 1 auto !important;width:100% !important;max-width:100% !important;min-width:0 !important;
      border:1.5px solid var(--brand) !important;background:#fff !important;color:var(--ink) !important;border-radius:8px !important;
      padding:5px 9px !important;font-size:14px !important;min-height:30px !important;box-sizing:border-box !important;
      text-align:left !important
    }
    .entry-page .table-wrap tr.editing td.ops{display:flex !important;flex-direction:row !important;justify-content:flex-end !important;gap:6px !important;padding:8px 12px !important}
    /* v6.10.121 手机端：应收收款「待收款」表重写，最小化直接 CSS，避免多层叠加冲突。
       用户反馈 v6.10.120 后「标签右侧的数值看不见」——根因是：
       (1) v6.10.118 加的 .entry-page .table-wrap td { padding:6px 12px } 给 td 内 flex item 留出空间但与原 flex label max-width 配合下，value 内容在某些字号/宽度下被压到 td 边缘不可见；
       (2) v6.10.117 给 .coll-tbl td 加的 `color:var(--ink) !important` 覆盖了 v6.10.118 给 num 列加的品牌色（数值不够醒目）；
       (3) v6.10.118 的 tr `border-radius:14px` 与 v6.10.100 的 tr `padding:2px 2px` 叠加，使得 td 内 8 列在 414px 屏宽被多层 padding 挤兑。
       修复：对 .coll-tbl 的整个 mobile 样式重写为强 !important 覆盖，确保标签在左、数值在右、颜色/字号/对齐统一可控。 */
    .coll-tbl thead{display:none!important}
    .coll-tbl tbody tr{display:block!important;background:var(--panel)!important;border:1.5px solid var(--line-strong)!important;border-radius:14px!important;margin-bottom:10px!important;padding:6px 0!important;box-shadow:0 1px 2px rgba(15,23,42,.04)!important}
    .coll-tbl tbody td{display:flex!important;justify-content:space-between!important;align-items:center!important;gap:10px!important;padding:8px 12px!important;border-bottom:1px solid var(--line)!important;font-size:14px!important;min-height:36px!important;overflow:visible!important;color:var(--ink)!important}
    .coll-tbl tbody td:last-child{border-bottom:none!important}
    /* label 在左 — 用 ::before，宽度占比小 */
    .coll-tbl tbody td::before{content:attr(data-label)!important;color:var(--muted)!important;font-size:12.5px!important;font-weight:600!important;flex:0 0 auto!important;text-align:left!important;white-space:nowrap!important}
    /* num 列（金额）在右 — 蓝色品牌色加粗 */
    .coll-tbl tbody td.num{color:var(--brand)!important;font-weight:700!important;text-align:right!important;font-size:14.5px!important;font-variant-numeric:tabular-nums!important}
    /* td 内 input/select/button — 蓝色边框 + 白底 + 最小高度，确保可见可点 */
    .coll-tbl tbody td input,
    .coll-tbl tbody td select,
    .coll-tbl tbody td button{border:1.5px solid var(--brand)!important;background:#fff!important;color:var(--ink)!important;border-radius:8px!important;padding:5px 9px!important;font-size:14px!important;min-height:30px!important;width:auto!important;max-width:62%!important;box-sizing:border-box!important;visibility:visible!important}
    .coll-tbl tbody button[data-coll]{background:var(--brand)!important;color:#fff!important;border-color:var(--brand)!important;font-weight:700!important;padding:5px 14px!important;min-height:30px!important}
    /* v6.10.123 手机端：应收收款「待收款」表再调整 — label 50px 窄列 / 数据 50% 列宽左对齐，
       右侧留白；用户反馈当前 label 偏宽、数据铺到右边缘不好看。参考采购付款登记截图风格。 */
    .coll-tbl tbody td{display:grid !important;grid-template-columns:90px 1fr !important;align-items:center !important;gap:8px !important;padding:8px 12px !important;border-bottom:1px solid var(--line) !important;font-size:14px !important;min-height:36px !important;overflow:visible !important;color:var(--ink) !important;text-align:left !important}
    .coll-tbl tbody td:last-child{border-bottom:none !important}
    .coll-tbl tbody td::before{content:attr(data-label)!important;color:var(--muted)!important;font-size:12.5px!important;font-weight:600!important;grid-column:1 !important;text-align:left !important;white-space:nowrap !important}
    .coll-tbl tbody td.num{color:var(--brand)!important;font-weight:700!important;text-align:left !important;font-size:14.5px!important;font-variant-numeric:tabular-nums !important;grid-column:2 !important}
    .coll-tbl tbody td input,.coll-tbl tbody td select,.coll-tbl tbody td button{grid-column:2 !important;border:1.5px solid var(--brand)!important;background:#fff!important;color:var(--ink)!important;border-radius:8px!important;padding:5px 9px!important;font-size:14px!important;min-height:30px!important;width:100%!important;max-width:100%!important;box-sizing:border-box!important;visibility:visible!important;justify-self:start !important}
    .coll-tbl tbody td button[data-coll]{background:var(--brand)!important;color:#fff!important;border-color:var(--brand)!important;font-weight:700!important;padding:5px 14px!important;min-height:30px!important;grid-column:2 !important}
    /* v6.10.123 手机端：应收已收记录列表（#rcList 内的 .entry-table）— 同样改为「label 50px / 数据 50% 列宽左对齐」。
       原 v6.10.121 之前是 .card > table td flex space-between、无 label；现在用 nth-child ::before 出 label，chk 列居中放 checkbox，ops 列按钮组左对齐。 */
    #rcList table.entry-table thead{display:none !important}
    #rcList table.entry-table tbody tr{display:block !important;background:var(--panel) !important;border:1.5px solid var(--line-strong) !important;border-radius:14px !important;margin-bottom:10px !important;padding:6px 0 !important;box-shadow:0 1px 2px rgba(15,23,42,.04) !important}
    #rcList table.entry-table td{display:grid !important;grid-template-columns:90px 1fr !important;align-items:center !important;gap:8px !important;padding:8px 12px !important;border-bottom:1px solid var(--line) !important;font-size:14px !important;min-height:36px !important;overflow:visible !important;color:var(--ink) !important;text-align:left !important}
    #rcList table.entry-table td:last-child{border-bottom:none !important}
    /* chk 列（第 1 列）：仅居中放 checkbox */
    #rcList table.entry-table td.chk{display:flex !important;justify-content:center !important;align-items:center !important;padding:8px 12px !important;min-height:36px !important}
    /* ops 列（最后 1 列）：按钮组靠左（数据列区域内） */
    #rcList table.entry-table td.ops{display:flex !important;flex-direction:row !important;justify-content:flex-start !important;gap:6px !important;padding:8px 12px !important;align-items:center !important;white-space:nowrap !important}
    #rcList table.entry-table td.ops .btn{padding:5px 10px !important;font-size:12px !important}
    /* 数据列 ::before 出 label（用 nth-child 对应 7 个数据列：chk, 日期, 客户, 收款金额, 收款账户, 备注, 操作） */
    #rcList table.entry-table td:nth-child(2)::before{content:"日期" !important;color:var(--muted) !important;font-size:12.5px !important;font-weight:600 !important;grid-column:1 !important;text-align:left !important;white-space:nowrap !important}
    #rcList table.entry-table td:nth-child(3)::before{content:"客户" !important;color:var(--muted) !important;font-size:12.5px !important;font-weight:600 !important;grid-column:1 !important;text-align:left !important;white-space:nowrap !important}
    #rcList table.entry-table td:nth-child(4)::before{content:"金额" !important;color:var(--muted) !important;font-size:12.5px !important;font-weight:600 !important;grid-column:1 !important;text-align:left !important;white-space:nowrap !important}
    #rcList table.entry-table td:nth-child(5)::before{content:"账户" !important;color:var(--muted) !important;font-size:12.5px !important;font-weight:600 !important;grid-column:1 !important;text-align:left !important;white-space:nowrap !important}
    #rcList table.entry-table td:nth-child(6)::before{content:"备注" !important;color:var(--muted) !important;font-size:12.5px !important;font-weight:600 !important;grid-column:1 !important;text-align:left !important;white-space:nowrap !important}
    #rcList table.entry-table td:nth-child(7)::before{content:"操作" !important;color:var(--muted) !important;font-size:12.5px !important;font-weight:600 !important;grid-column:1 !important;text-align:left !important;white-space:nowrap !important}
    /* num 列（金额）品牌色加粗左对齐 */
    #rcList table.entry-table td.num{color:var(--brand) !important;font-weight:700 !important;text-align:left !important;font-size:14.5px !important;font-variant-numeric:tabular-nums !important;grid-column:2 !important}
    /* 编辑态 cell-edit input/select 占数据列 */
    #rcList table.entry-table td input.cell-edit,#rcList table.entry-table td select.cell-edit{grid-column:2 !important;width:100% !important;max-width:100% !important;min-width:0 !important;border:1.5px solid var(--brand) !important;background:#fff !important;color:var(--ink) !important;border-radius:8px !important;padding:5px 9px !important;font-size:14px !important;min-height:30px !important;box-sizing:border-box !important;justify-self:start !important}
    /* 编辑态 保存/取消 按钮组 */
    #rcList table.entry-table tr.editing td.ops{display:flex !important;flex-direction:row !important;justify-content:flex-start !important;gap:6px !important;padding:8px 12px !important}
    /* 手机端：使用期限（日期 + 状态）单独一行 */
    .table-wrap td.exp-cell,.card > table td.exp-cell{flex-direction:row;flex-wrap:wrap;align-items:center;gap:6px}
    .table-wrap td.exp-cell .exp-input,.card > table td.exp-cell .exp-input{flex:0 0 auto;width:auto;max-width:160px}
    .table-wrap td.exp-cell .exp-status,.card > table td.exp-cell .exp-status{flex:0 0 auto}
    /* 手机端：操作列按钮靠右，自然排在一行 */
    .table-wrap td.ops,.card > table td.ops{flex-direction:row;align-items:center;justify-content:flex-end;gap:6px;white-space:nowrap}
    .table-wrap td.ops .btn,.card > table td.ops .btn{padding:4px 8px;font-size:11px}
    /* 库存盘点表：手机端保持「每个物料一张卡片」，显示字段名、输入框占满、合计行可见 */
    .table-wrap{width:100%;display:block}
    .table-wrap table.stock-tbl{width:100% !important;display:block}
    .table-wrap table.stock-tbl thead{display:none}
    .table-wrap table.stock-tbl tbody{width:100% !important;display:block}
    .table-wrap table.stock-tbl tr{display:block;width:100%;box-sizing:border-box;background:var(--panel);border:1px solid var(--line-strong);border-radius:12px;margin-bottom:10px;padding:4px 0;box-shadow:var(--shadow)}
    .table-wrap table.stock-tbl td{display:flex;justify-content:space-between;align-items:center;gap:10px;width:100%;box-sizing:border-box;border-bottom:1px solid var(--line);padding:9px 12px;text-align:right;font-size:14px}
    .table-wrap table.stock-tbl tr td:last-child{border-bottom:none}
    .table-wrap table.stock-tbl td::before{content:attr(data-label);color:var(--muted);font-size:12px;font-weight:600;text-align:left;flex:0 0 auto;margin-right:8px}
    .table-wrap table.stock-tbl td input{width:100%;max-width:58%}
    /* 库存盘点数量/单价/金额输入框：三个宽度一致，居中、适配手机屏幕 */
    .table-wrap table.stock-tbl td input.sc-q,
    .table-wrap table.stock-tbl td input.sc-p,
    .table-wrap table.stock-tbl td input.sc-a,
    .table-wrap table.stock-tbl td input.se-q,
    .table-wrap table.stock-tbl td input.se-p,
    .table-wrap table.stock-tbl td input.se-a{width:100% !important;max-width:60%;min-width:100px;display:inline-block;text-align:center;margin-left:auto;padding:6px 8px;font-size:14px}
    .table-wrap table.stock-tbl tfoot{display:block;width:100%}
    .table-wrap table.stock-tbl tfoot tr{display:flex;align-items:center;justify-content:space-between;width:100%;box-sizing:border-box;background:#f3f6fb;font-weight:700;border:1px solid var(--line-strong);border-radius:10px;padding:10px 12px;margin-top:4px}
    .table-wrap table.stock-tbl tfoot td{border:none;padding:0;display:block;width:auto}
    .table-wrap table.stock-tbl tfoot td[colspan]{text-align:left;color:var(--muted);flex:1}
    .table-wrap table.stock-tbl tfoot td.num{color:var(--brand);font-size:15px;flex:0 0 auto}
    /* 重置桌面端 nth-child 固定列宽，避免影响卡片宽度计算 */
    .table-wrap table.stock-tbl th,.table-wrap table.stock-tbl td{width:auto !important}

    /* ===== v6.10.80 手机端：横向溢出兜底 =====
       v6.10.79 拆掉 .card 的 padding/border 后，一些 grid/flex 子项原本被父 padding
       限制了最大宽度，现在直接暴露给 viewport；同时首页 viewHome() 有 inline
       `grid-template-columns:repeat(3/4,1fr)` 强制多列，硬撑满父容器再被 minmax 撑开。
       这里加 4 道防线：
       ① .grid > * / .split > * / .kpis > * → min-width:0：grid/flex 子项默认 min-width:auto，
          会被自身固有内容（如长名字、长数字）撑超出 track 宽度；min-width:0 才能真正收到 track 限制。
       ② .chart-card > svg, .pie-leader svg, img, canvas → max-width:100%：图表/图片不允许撑超父容器。
       ③ .kpis, .grid, .flow-row → 单列优先（≤600px）：原本依赖媒体查询，但 inline style 会覆盖。
       ④ 全局 overflow-x:hidden 在 body/html 已经兜底（见顶部 body 样式）。 */
    .grid > *,.split > *,.kpis > *{min-width:0}
    .chart-card > svg,.pie-leader svg,.pie-leader > svg,img,canvas{max-width:100%;height:auto}
    /* v6.10.86: 修复首页看板 KPI 数字换行真因——原 overflow-wrap:anywhere 会让
       ¥1,385,128.71 在 , 处拆成 ¥1,385 + ,128.71 两行（截图中下方 3 个 KPI 的现象）。
       改为 white-space:nowrap 强制一行；lbl 仍保留断行兜底（处理长客户名等）。 */
    .kpi .val,.flow-kpi .val{white-space:nowrap}
    .kpi .lbl,.flow-kpi .lbl{overflow-wrap:break-word}
    /* v6.10.80：首页 viewHome 几处 inline `grid-template-columns:repeat(N,1fr)` 的高特异性覆写。
       即便把 inline 改成 auto-fit，这一兜底还是在某些特殊场景（如预览/导入旧账套）有用，避免再次踩坑。 */
    .grid[style*="repeat(3,1fr)"],.grid[style*="repeat(4,1fr)"]{grid-template-columns:repeat(auto-fit,minmax(110px,1fr)) !important}
    /* 标题/标签类文本不允许横向溢出 .card */
    .card > h2,.card > .hint{overflow-wrap:anywhere}

    /* ===== v6.10.79 明细卡片与顶部 BANNER 等宽 =====
       问题：手机端每行 tr 已卡片化成独立白卡片，但它被外层 .card 的
       「左右 padding 12px + 左右 border 1px」挤窄 26px，于是明细报表
       始终比通栏的 header.top（BANNER）窄一圈，视觉上宽度对不齐。
       方案：手机端把外层 .card 降级为「通栏分组容器」——左右 padding 归零、
       去掉左右边框与圆角，让内部 tr 卡片直接铺满到屏幕边（= BANNER 宽度）；
       标题 / 提示 / 表单 / 图表等文本类子元素改为自身承担 12px 缩进，
       保证文字左右边界仍与 BANNER 内的文字对齐。 */
    .card,.entry-page.card{padding-left:0;padding-right:0;border-left:none;border-right:none;border-radius:0}
    .card h2{margin:0 0 12px 0;padding:10px 12px;border-radius:0}
    .card > h2,.card > .hint,.card > .mini,.card > .legend,
    .card > .form-row,.card > .form-bar,.card > .form-grid,.card > .grid,
    .card > .entry-filter,.card > .filters,.card > .exp-bar,.card > .rc-bar,
    .card > .pie-leader,.card > .pie-wrap,.card > .chart-card,
    .card > p,.card > .empty,.card > .sum-bar,.card > .kpis{padding-left:12px;padding-right:12px}
    /* .split 本身不缩进（让其中的 tr 卡片铺满），只缩进它内部的小标题与图表 */
    .split > div > h2,.split > div > .hint,.split > div > .mini,
    .split > div > .pie-leader,.split > div > .chart-card,
    .split > div > .empty{padding-left:12px;padding-right:12px}
    /* 嵌套子卡片已是透明容器，避免二次缩进导致越缩越窄 */
    .card > .card{padding-left:0;padding-right:0}
  }
  /* ============ 五套可选配色主题 ============ */
  body[data-theme="blue"]{--brand:#3b6fd4;--brand2:#6f9be8;--accent:#2aa6c0;--subnav-bg:#e6eefb;--subnav-btn:#d8e3f5;--title-bg:#eef5ff;--title-ink:#1e40af}
  body[data-theme="green"]{--brand:#2f9e6b;--brand2:#62ba8e;--accent:#2aa6a0;--subnav-bg:#e6f3eb;--subnav-btn:#d6ebe0;--title-bg:#e6f4ea;--title-ink:#1b5e20}
  body[data-theme="orange"]{--brand:#e0803c;--brand2:#f0a868;--accent:#d96a3c;--subnav-bg:#fbf0e8;--subnav-btn:#f5e2d3;--title-bg:#fff2e8;--title-ink:#9a3412}
  body[data-theme="purple"]{--brand:#7b5fc0;--brand2:#a78fd8;--accent:#4aa6b8;--subnav-bg:#efe9f9;--subnav-btn:#e4d9f2;--title-bg:#f3e8ff;--title-ink:#6b21a8}
  /* 饼图图例 */
  .pie-wrap{display:flex;gap:16px;align-items:center;flex-wrap:wrap}
  .pie-legend{display:flex;flex-direction:column;gap:5px;font-size:12px;min-width:140px}
  .legend-item{display:flex;align-items:center;gap:7px;color:#33404f}
  .legend-item b{color:#14181f}
  .dot{width:10px;height:10px;border-radius:3px;flex:0 0 10px;display:inline-block}
  header.top select#themeSel{margin-left:4px}
  .stock-tbl th,.stock-tbl td{text-align:center}
  .stock-tbl th.num,.stock-tbl td.num{text-align:center}
  .stock-tbl th:nth-child(1),.stock-tbl td:nth-child(1){width:110px}
  .stock-tbl th:nth-child(2),.stock-tbl td:nth-child(2){width:150px}
  .stock-tbl th:nth-child(3),.stock-tbl td:nth-child(3){width:150px}
  .stock-tbl th:nth-child(4),.stock-tbl td:nth-child(4){width:90px}
  .stock-tbl th:nth-child(5),.stock-tbl td:nth-child(5){width:110px}
  .stock-tbl th:nth-child(6),.stock-tbl td:nth-child(6){width:110px}
  .stock-tbl th:nth-child(7),.stock-tbl td:nth-child(7){width:130px}
  .stock-tbl input{margin:0 auto}
  .chk{text-align:center;width:38px}
  /* ---- 登录/注册 ---- */
  #view{padding:0}
  body.auth-view #view{display:flex;align-items:center;justify-content:center;padding:0 16px;background:var(--bg,#f2f5f9)}
  /* v6.10.130 登录页：全宽度都隐藏顶部 BANNER 并把登录卡顶到最上面，去掉垂直居中留下的灰空白 */
  body.auth-view header.top{display:none!important}
  body.auth-view #view{align-items:flex-start!important;padding-top:0!important}
  body.auth-view .auth-card{margin-top:0!important}
  /* v6.10.135 登录页：电脑端（>820px）保持 v6.10.131 之前 400px 居中样式（用户红框区域）；
     手机端（≤820px）继续保留 v6.10.134 全屏撑满样式——处理 iPhone 启用「请求桌面版网站」等
     桌面态渲染场景。`!important` 全部收进媒体查询，电脑端不再受影响。 */
  @media(max-width:820px){
    body.auth-view .sidebar,body.auth-view .subnav{display:none!important}
    body.auth-view .layout{display:block!important;flex-direction:column!important;width:100%!important;max-width:none!important;height:auto!important}
    body.auth-view .content{display:block!important;padding:0!important;margin:0!important;width:100%!important;max-width:none!important;min-width:0!important}
    body.auth-view #view{display:block!important;width:100%!important;max-width:none!important;min-width:0!important;min-height:calc(100vh - 0px);padding:0!important;margin:0!important;background:var(--bg,#f2f5f9)}
    body.auth-view .auth-card{width:100%!important;max-width:none!important;margin:0!important;padding:22px 18px 20px!important;border-radius:16px!important;background:var(--panel,#fff)!important;border:none!important;box-shadow:none!important}
    body.auth-view .auth-card h1{text-align:center}
  }
  .auth-card{max-width:400px;margin:0 auto;background:var(--panel,#fff);border:none;border-radius:20px;padding:30px 26px 26px;box-shadow:0 18px 50px rgba(0,0,0,.18)}
  .auth-card h1{font-size:24px;margin:0 0 2px;color:var(--ink,#22305c)}
  .auth-sub{color:var(--muted,#7b86a3);font-size:13px;margin:0 0 20px}
  .auth-msg{background:#fff4e5;color:#a8631a;border:1px solid #ffd9a3;border-radius:10px;padding:9px 12px;font-size:13px;margin-bottom:14px}
  .auth-tabs{display:flex;gap:0;margin-bottom:18px;background:var(--subnav-btn,#eef1f8);border-radius:12px;padding:4px}
  .auth-tab{flex:1;padding:10px;border:none;border-radius:9px;background:transparent;color:var(--muted,#5a6478);cursor:pointer;font-size:14px;font-weight:600}
  .auth-tab.active{background:var(--panel,#fff);color:var(--brand,#3b5bdb);box-shadow:0 2px 8px rgba(0,0,0,.12)}
  .auth-form{display:flex;flex-direction:column;gap:12px}
  .auth-form input{padding:12px 14px;border:1px solid var(--line-strong,#d9deec);border-radius:10px;font-size:15px;width:100%;text-align:left;background:var(--bg,#fafbfe)}
  .auth-form input:focus{outline:none;border-color:var(--brand,#3b5bdb);background:var(--panel,#fff);box-shadow:0 0 0 3px rgba(0,0,0,.08)}
  button.auth-btn{margin-top:6px;padding:8.67px;border:none;border-radius:12px;background:linear-gradient(90deg,var(--brand,#3b5bdb),var(--brand2,#5a7bef));color:#fff;font-size:16px;font-weight:700;width:100%;cursor:pointer;box-shadow:0 6px 18px rgba(0,0,0,.18)}
  .auth-btn:active{transform:translateY(1px)}
  .auth-hint{color:var(--red,#e03131);font-size:12.5px;min-height:18px;text-align:center;margin-top:2px}
  .auth-foot{color:var(--muted,#8a93a6);font-size:12px;line-height:1.6;margin:14px 0 0}
  .auth-contact{background:var(--subnav-bg,#eef2ff);color:var(--brand,#3b5bdb);font-size:13px;margin:16px 0 0;text-align:center;font-weight:600;padding:11px 12px;border-radius:10px;line-height:1.6}
  .auth-contact b{font-weight:700}
  .captcha-row{display:flex;align-items:center;gap:10px;margin-top:2px;justify-content:center}
  .captcha-canvas{border:1px solid #e0e4ee;border-radius:8px;cursor:pointer}
  .captcha-refresh{color:var(--brand,#5a7bef);font-size:12.5px;cursor:pointer;text-decoration:underline}
  /* ---- 顶部用户信息 ---- */
  .topuser{display:flex;align-items:center;gap:6px;margin-left:14px;font-size:14px;color:#46506a}
  .topuser .sup{color:#e03131;font-weight:700}
  .topuser .btns{display:flex;gap:6px;align-items:center}
  /* ---- 会员管理 ---- */
  .mini-check{display:inline-flex;align-items:center;gap:3px;font-size:12px;color:#46506a;white-space:nowrap}
  .mini-check input{width:auto;margin:0}
  .mods{white-space:nowrap;min-width:auto;display:inline-flex;flex-wrap:nowrap;gap:6px;align-items:center;vertical-align:middle}
  .mods .exp-status{display:inline;white-space:nowrap;font-size:12px;color:#868e96;margin-left:4px}
  .exp-cell{min-width:200px;vertical-align:middle;display:flex;flex-direction:row;align-items:center;gap:6px}
  .exp-cell .exp-input{width:118px;padding:5px 7px;border:1px solid #d7dce8;border-radius:6px;flex:0 0 auto}
  .exp-cell .exp-status{font-size:12px;color:#868e96;line-height:1.4;margin-top:0;white-space:nowrap}
  .exp-cell .exp-input:disabled{background:#f1f3f7;color:#868e96;border-color:#e2e6ee}
  .admin-table table{white-space:nowrap}
  .admin-table th,.admin-table td{vertical-align:top;text-align:center}   /* 全表顶部基线对齐 + 所有单元格居中 */
  /* 使用期限列（纯日期 + 状态），内容居中（左右水平居中对齐） */
  .admin-table .exp-cell{flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:flex-start;gap:8px;text-align:left;vertical-align:top;min-width:160px}
  .admin-table .exp-cell .exp-input{flex:0 0 auto;width:140px}
  .admin-table .exp-cell .exp-status{flex:0 0 auto;white-space:nowrap;text-align:center}
  /* 操作列（三个按钮独立列，按钮组居中水平排列） */
  .admin-table td.ops{flex-direction:row;align-items:center;justify-content:center;gap:6px;vertical-align:top;white-space:nowrap;min-width:220px}
  .admin-table td.ops .btn{padding:4px 8px;font-size:11px}
  /* 全局单元格顶部再加一点内距，避免文字贴边框 */
  .admin-table td{padding-top:8px}
  .ok{color:#2f9e44;font-weight:600}
  .bad{color:#e03131;font-weight:600}
  .warn{color:#e8590c;font-weight:700}
  .sortable{cursor:pointer;user-select:none;white-space:nowrap}
  .sortable:hover{background:#f1f3f7}
  .sortable .sort-indicator{display:inline-block;width:10px;margin-left:4px;font-size:11px;color:#868e96}
  .sortable.active .sort-indicator{color:var(--brand)}
  /* 有效期提醒横幅（会员首页看板 / 超级后台） */
  .exp-banner{display:flex;align-items:center;gap:10px;padding:6px 14px;border-radius:10px;font-size:13px;font-weight:600;margin-bottom:12px;line-height:1.4;width:100%;box-sizing:border-box}
  .exp-banner.warn{background:#fff4e6;border:1px solid #ffa94d;color:#d9480f;box-shadow:0 4px 14px rgba(232,89,12,.12)}
  .exp-banner.bad{background:#fff0f0;border:1px solid #ffa8a8;color:#c92a2a;box-shadow:0 4px 14px rgba(224,49,49,.14);animation:pulseWarn 1.4s ease-in-out infinite}
  .exp-banner .icon{font-size:16px}
  .exp-banner b{font-weight:800}
  @keyframes pulseWarn{0%,100%{box-shadow:0 4px 14px rgba(224,49,49,.14)}50%{box-shadow:0 4px 22px rgba(224,49,49,.40)}}
  /* 超级后台到期单元格提醒高亮 */
  .exp-status.warn{color:#e6a700;font-weight:700;background:#fff9db;border:1px solid #ffe8a3;border-radius:6px;padding:2px 8px;display:inline-block}
  .exp-status.bad{color:#e8590c;font-weight:700;background:#fff4e6;border:1px solid #ffd8a8;border-radius:6px;padding:2px 8px;display:inline-block}
  .ops{display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center;justify-content:flex-start;gap:6px;white-space:nowrap}
  .ops .btn{width:auto;min-width:46px;margin:0;flex:0 0 auto}
  /* v6.10.55: 明细行上移/下移按钮——窄按钮，避免挤占操作列（!important 覆盖各断点的 min-width:46px） */
  .btn.mv{min-width:26px!important;width:26px!important;max-width:26px!important;padding:4px 0!important;font-size:13px;line-height:1.15;text-align:center;font-weight:700}
  .btn.mv[disabled]{opacity:.32;cursor:not-allowed}
  /* ---- 员工密码 ---- */
  .pw-cell{vertical-align:middle}
  .pw{display:inline-block;background:#f1f3f8;color:#2b3a67;padding:2px 8px;border-radius:6px;font-size:13px;font-family:ui-monospace,Consolas,monospace}
  .pw-row{display:flex;gap:4px;margin-top:5px;align-items:center;flex-wrap:wrap}
  .pw-new{padding:4px 6px;border:1px solid #d7dce8;border-radius:6px;width:84px;font-size:12px}
  .btn.mini{padding:4px 8px;font-size:11px;border-radius:7px}
  /* ---- modal ---- */
  .modal-mask{position:fixed;inset:0;background:rgba(20,28,46,.45);display:flex;align-items:center;justify-content:center;z-index:100;padding:16px}
  .modal{background:var(--panel);border-radius:16px;box-shadow:var(--shadow);max-width:440px;width:100%;max-height:90vh;overflow:auto;border:1px solid var(--line)}
  .modal-h{display:flex;align-items:center;justify-content:center;padding:12px 16px;background:var(--title-bg);color:var(--title-ink);border-bottom:1px solid var(--title-bg);border-radius:16px 16px 0 0;font-size:16px;font-weight:600}
  .modal-x{background:none;border:none;font-size:22px;line-height:1;cursor:pointer;color:var(--muted)}
  .modal-b{padding:16px}
  /* 多店铺选择器 */
  .store-sel{height:30px;padding:0 8px;border-radius:8px;border:1px solid var(--line);background:#fff;color:#222;font-size:13px;margin-right:8px}
  .store-mg{margin-left:8px}
  .store-modal .store-list{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}
  .store-modal .store-li{display:flex;align-items:center;justify-content:space-between;padding:8px 10px;background:#f6f8fa;border-radius:8px}
  .store-modal .store-name{font-weight:600}
  .store-modal .store-ops{display:flex;gap:8px}
  .store-modal .store-add{display:flex;gap:8px;align-items:center}
  .store-modal .store-add input{flex:1;height:34px;padding:0 10px;border:1px solid var(--line);border-radius:8px}
  .modal-b h3{margin:14px 0 8px;font-size:14px;color:var(--brand)}
  .modal-b h3:first-child{margin-top:0}
  .modal-ops{margin-top:14px;display:flex;justify-content:flex-end;gap:8px}
  .pur-link-list{max-height:60vh;overflow:auto;margin:-2px -4px}
  .pur-link-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 6px;border-bottom:1px solid var(--line);cursor:pointer}
  .pur-link-row:active{background:var(--hover,#f3f5f8)}
  .pur-link-row:hover{background:var(--hover,#f3f5f8)}
  .plr-main{flex:1;min-width:0}
  .plr-t1{font-size:14px;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .plr-t2{font-size:12px;color:var(--muted);margin-top:3px}
  .plr-amt{font-size:15px;font-weight:700;color:var(--brand);white-space:nowrap;padding-left:8px}
  .empty-tip{padding:26px 0;text-align:center;color:var(--muted)}
  .pur-link-sum{display:flex;align-items:center;gap:6px;padding:8px 12px;font-size:13px;color:var(--muted);background:var(--bg);border-radius:8px;margin:2px 0 10px}
  .pur-link-sum b{color:var(--brand);font-size:14px;font-weight:700}
  .pur-link-row .plr-chk{width:18px;height:18px;flex:0 0 auto;accent-color:var(--brand);margin:0;cursor:pointer}
  .pur-link-row.active{background:rgba(22,163,74,.07)}
  .confirm-msg{font-size:14px;line-height:1.7;color:#33404f}
  .confirm-list{margin:10px 0 0 18px;padding:0;color:#5b6373}
  .confirm-list li{margin:4px 0}
  .confirm-warn{margin-top:10px;color:var(--red);font-weight:600}
  .auth-link{display:block;width:100%;margin-top:10px;color:var(--brand);cursor:pointer;font-size:13px;text-decoration:underline;text-align:center}
  .fg-q{margin-bottom:10px;font-size:14px;color:var(--muted)}
  .auth-link:hover{opacity:.8}
  /* ---- 图形验证码 ---- */
  .captcha-row{display:flex;align-items:center;gap:10px;margin-top:10px}
  .captcha-canvas{border:1px solid var(--line);border-radius:8px;cursor:pointer;background:#fff;height:42px;flex:0 0 auto}
  .captcha-refresh{font-size:12px;color:var(--brand);cursor:pointer;user-select:none;white-space:nowrap}
  .auth-form input#authCaptchaInput{margin-top:10px;letter-spacing:3px;font-weight:600}
/* v6.10.165: 管局备案号 footer */
.site-footer{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:14px;padding:18px 16px 24px;font-size:12px;color:var(--muted)}
.site-footer a{color:var(--muted);text-decoration:none;display:inline-flex;align-items:center;gap:5px}
.site-footer a:hover{color:var(--brand);text-decoration:underline}
.site-footer .beian-icon{width:14px;height:14px;display:inline-block;vertical-align:middle}
/* v6.10.257: 员工名额不足提示样式 */
.emp-limit-danger{color:var(--bad);font-weight:700}
.emp-limit-pop{color:var(--bad);font-weight:700;font-size:16px;margin-bottom:10px;line-height:1.5}
.emp-limit-wx{margin-top:12px;color:var(--bad);font-weight:700;font-size:20px}
/* v6.10.302: 手机端应收收款「应收已收记录」筛选区占屏过高，隐藏 */
@media(max-width:820px){#rcFilter{display:none!important}}
