/* ========== 壹圆|PSI · 移动端现代 UI（<=768px） ==========


   设计语言：海军蓝主色 + 香槟金点缀 / 卡片化 / 大圆角 / 柔和阴影 / 微动效
   设计令牌统一定义在 theme.css（本文件 @import），改全局配色只动 theme.css */


@import url("theme.css?v=20260913a");


.menu-btn, .menu-mask { display:none; }





/* ===== PC 端下拉列表字体调小2个字号（供应商/客户/商品等选择框）===== */


@media (min-width:769px){


  select, select option { font-size:11px !important; }


}





@media (max-width:768px){


  body{ background:var(--bg); }





  .layout { display:block; }





  /* ===== 侧边栏：渐变抽屉 + 右侧圆角 ===== */


  .sidebar {


    position:fixed; left:0; top:0; bottom:0; width:250px; max-width:84vw;


    z-index:210; transform:translateX(-105%); transition:transform .28s cubic-bezier(.22,1,.36,1);


    background:linear-gradient(170deg,#0F3460 0%,#214B7C 55%,#214B7C 100%);


    border-radius:0 20px 20px 0; box-shadow:8px 0 30px rgba(15,52,96,.28);


    overflow-y:auto; padding-bottom:34px; color:#fff;


  }


  body.sidebar-open .sidebar { transform:translateX(0); }


  body.sidebar-open { overflow:hidden; }


  .sidebar .logo{ padding:22px 18px 16px; border-bottom:1px solid rgba(255,255,255,.14); font-size:17px; letter-spacing:.5px; }


  .sidebar .logo .dot{ width:11px;height:11px;box-shadow:0 0 8px rgba(212,175,103,.9); }


  .sidebar .nav-group{ margin-top:8px; }


  .sidebar .nav-title{ padding:10px 18px 4px; font-size:11px; color:rgba(255,255,255,.5); letter-spacing:2px; }


  .sidebar .nav-item{ padding:11px 12px 11px 20px; font-size:14px; color:rgba(255,255,255,.92);


    display:flex; align-items:center; justify-content:space-between; margin:2px 10px; border-radius:12px; }


  .sidebar .nav-item:active{ background:rgba(255,255,255,.18); }


  .sidebar .nav-item.active{ background:rgba(255,255,255,.2); font-weight:600; box-shadow:inset 3px 0 0 #D4AF67, 0 4px 14px rgba(0,0,0,.15); }


  .sidebar .nav-item .plus{ width:24px;height:24px;border-radius:8px;background:rgba(255,255,255,.18); font-size:14px; display:flex;align-items:center;justify-content:center; }





  .menu-mask { position:fixed; inset:0; display:block; background:rgba(20,10,45,.5); z-index:205;


    opacity:0; pointer-events:none; transition:opacity .28s; backdrop-filter:blur(2px); }


  body.sidebar-open .menu-mask { opacity:1; pointer-events:auto; }





  /* ===== 顶栏：毛玻璃 + 圆角胶囊按钮 ===== */


  .menu-btn {


    display:flex; width:44px; height:44px; border:none; background:var(--brand-grad); border-radius:14px;


    color:#fff; font-size:18px; cursor:pointer; align-items:center; justify-content:center; flex-shrink:0;


    box-shadow:0 4px 12px rgba(15,52,96,.35);


  }


  .menu-btn:active { transform:scale(.94); }


  .main { min-height:100vh; }


  .topbar {


    padding:10px 12px; position:sticky; top:0; z-index:150;


    background:rgba(255,255,255,.88); backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px);


    border-bottom:1px solid rgba(15,52,96,.08); box-shadow:0 2px 10px rgba(15,52,96,.05);


    gap:10px;


  }


  .topbar h2{ font-size:16px; font-weight:700; color:#1A1D24; white-space:nowrap; }


  .topbar .sub{ font-size:11px; color:#868B98; }


  .topbar-actions{ gap:8px; flex-shrink:0; }


  /* 移动端隐藏整个顶部操作区（导航走抽屉/标签栏，新增走 FAB/标签栏＋，避免撑宽视口） */


  body.m-optimized .topbar-actions{ display:none !important; }


  body.m-optimized .topbar > .btn-primary,


  body.m-optimized .topbar > .btn-ai { display:none !important; }


  body.m-optimized .topbar{ flex-wrap:nowrap; min-width:0; }


  body.m-optimized .topbar h2{ min-width:0; max-width:62vw; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }


  body.m-optimized .topbar > *{ min-width:0; }





  /* ===== 内容区 ===== */


  .content { padding:12px 12px 24px; }





  /* ===== 统计卡：圆角卡片 + 阴影 ===== */


  .stats { grid-template-columns:repeat(2,1fr); gap:10px; }


  .card{


    padding:14px 12px; border-radius:var(--radius); background:var(--card);


    box-shadow:var(--shadow); border:1px solid rgba(15,52,96,.06); position:relative; overflow:hidden;


  }


  .card::before{ content:''; position:absolute; left:0; top:0; bottom:0; width:4px; background:var(--brand-grad); border-radius:0 4px 4px 0; }


  .card .value{ font-size:18px; font-weight:800; color:#0F3460; }


  .card .label{ font-size:12px; color:var(--muted); margin-top:2px; }





  /* ===== 筛选栏：移动端默认折叠，只留一行高频条件 ===== */


  .filter-bar{


    flex-direction:column; align-items:stretch; padding:12px; gap:10px;


    background:var(--card); border-radius:var(--radius); box-shadow:var(--shadow); border:1px solid rgba(15,52,96,.06);


    margin-bottom:12px;


  }


  .filter-bar label{ font-size:13px; color:var(--muted); font-weight:600; }


  .filter-bar input, .filter-bar select{


    width:100%; padding:12px; font-size:16px !important; border-radius:var(--radius-sm);


    border:1px solid #E2E4E9; background:#F7F8FA; transition:border-color .2s,box-shadow .2s;


    min-height:44px !important;


  }


  .filter-bar input:focus, .filter-bar select:focus{ border-color:var(--brand); box-shadow:0 0 0 3px rgba(15,52,96,.14); background:#fff; outline:none; }


  /* 日期范围一行占满 */


  .filter-bar .m-date-range{ display:flex; align-items:center; gap:8px; width:100%; }


  .filter-bar .m-date-range input[type=date]{ flex:1; min-width:0; }


  .filter-bar .m-date-range span{ color:#868B98; font-size:13px; flex-shrink:0; }


  /* 折叠态 */


  body.m-optimized .filter-bar.m-collapsed .m-filter-advanced { display:none !important; }


  .m-filter-toggle{ display:flex; align-items:center; gap:6px; font-size:13px; color:#0F3460; font-weight:600; padding:8px 0; }





  /* ===== 按钮：渐变 + 圆角 + 按压反馈 ===== */


  .btn{ padding:10px 16px; font-size:14px; min-height:44px; border-radius:14px; border:1px solid #E2E4E9;


    background:#fff; color:#0F3460; transition:all .2s; font-weight:600; }


  .btn:active{ transform:scale(.98); }


  .btn-primary{ background:var(--brand-grad); border-color:transparent; color:#fff; box-shadow:0 4px 14px rgba(15,52,96,.32); }


  .btn-success{ background:linear-gradient(135deg,#B8860B,#9A7012); border-color:transparent; color:#fff; box-shadow:0 4px 14px rgba(184,134,11,.28); }


  .btn-sm{ padding:8px 12px; min-height:40px; font-size:13px; border-radius:10px; }


  .btn-danger{ background:#fdeaea; border-color:#f3c4c4; color:#D14343; }





  /* ===== 表格：圆角容器 + 行 hover ===== */


  .panel, .table-wrap{


    overflow-x:auto; -webkit-overflow-scrolling:touch; border-radius:var(--radius);


    background:var(--card); box-shadow:var(--shadow); border:1px solid rgba(15,52,96,.06);


  }


  .panel table, .table-wrap table { min-width:max-content; table-layout:auto; }


  .panel thead th, .table-wrap thead th{


    white-space:nowrap; padding:12px 10px; font-size:12px; color:#868B98; font-weight:700;


    background:linear-gradient(180deg,#F7F8FA,#F7F8FA); border-bottom:1px solid #E2E4E9;


  }


  .panel tbody td, .table-wrap tbody td{ white-space:nowrap; padding:12px 10px; font-size:13px; color:#444955; border-bottom:1px solid #E2E4E9; }


  .panel tbody tr:last-child td, .table-wrap tbody tr:last-child td{ border-bottom:none; }


  tbody tr:active{ background:#F7F8FA; }


  tbody tr{ transition:background .15s; }





  /* ===== 明细编辑表（新增采购/销售）：卡片式分行 ===== */


  .table-wrap table.edit-table{ min-width:0 !important; width:100% !important; }


  .table-wrap table.edit-table thead{ display:none; }


  .table-wrap table.edit-table tbody{ display:block; }


  .table-wrap table.edit-table tbody tr{


    display:grid; grid-template-columns:1fr 1fr; gap:8px;


    margin:0 0 12px; padding:12px;


    background:#fff; border:1px solid rgba(15,52,96,.08) !important; border-radius:16px;


    box-shadow:0 2px 12px rgba(15,52,96,.07);


  }


  .table-wrap table.edit-table tbody tr:first-child{ margin-top:4px; }


  .table-wrap table.edit-table tbody td{


    display:flex; flex-direction:column; gap:4px;


    white-space:normal !important; padding:0 !important;


    border-bottom:none !important;


  }


  .table-wrap table.edit-table tbody td[colspan]{ display:block; text-align:center; grid-column:1/-1; }


  .table-wrap table.edit-table tbody td::before{


    content:attr(data-l); font-size:12px; font-weight:600; color:#868B98;


  }


  .table-wrap table.edit-table tbody td .field-row{ width:100%; }


  .table-wrap table.edit-table tbody td select,


  .table-wrap table.edit-table tbody td input{


    width:100% !important; max-width:100%; min-height:44px;


    font-size:16px !important; padding:10px 12px; border-radius:11px;


    border:1px solid #E2E4E9; background:#F7F8FA;


    -webkit-appearance:none; appearance:none;


  }


  .table-wrap table.edit-table tbody td input[type=number]{ text-align:right; font-weight:600; }


  .table-wrap table.edit-table tbody td select{


    background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path d='M1 1l5 5 5-5' stroke='%238a8aa0' stroke-width='2' fill='none' stroke-linecap='round'/></svg>");


    background-repeat:no-repeat; background-position:right 12px center; padding-right:30px;


  }


  .table-wrap table.edit-table tbody td .money{ font-size:15px; font-weight:700; color:#B8860B; }


  .table-wrap table.edit-table tbody td .link{ margin-left:auto; padding:8px 14px; min-height:40px; display:inline-flex;align-items:center; }


  .prod-toolbar{ flex-wrap:wrap; gap:8px; }


  /* 明细编辑行：商品名称单元格内的 search-select 必须撑满，覆盖内联 min-width:230px */


  .table-wrap table.edit-table tbody td .field-row{ flex-wrap:wrap !important; width:100% !important; min-width:0 !important; }


  .table-wrap table.edit-table tbody td .search-select{ flex:1 1 100% !important; width:100% !important; min-width:0 !important; }


  .table-wrap table.edit-table tbody td .search-select select{ width:100% !important; min-width:0 !important; }


  .table-wrap table.edit-table tbody td .quick-btn{ flex:0 0 auto !important; }


  .summary{ gap:20px !important; padding:14px 16px !important; }


  .summary .item .value{ font-size:20px !important; }





  /* ===== 弹窗：底部滑入 + 底部按钮固定 ===== */


  .modal-mask { align-items:flex-end !important; }


  .modal {


    width:100vw !important; max-width:100vw !important;


    max-height:92vh !important; border-radius:22px 22px 0 0 !important;


    display:flex; flex-direction:column; align-items:stretch; justify-content:flex-end;


    animation:slideUp .3s cubic-bezier(.22,1,.36,1);


  }


  .modal-card{ border-radius:22px 22px 0 0 !important; max-height:92vh; display:flex;flex-direction:column; }


  @keyframes slideUp{ from{ transform:translateY(40px); opacity:.6; } to{ transform:none; opacity:1; } }


  .modal-head { padding:16px 18px 12px; border-bottom:1px solid #E2E4E9; flex-shrink:0; }


  .modal-body { padding:14px 18px; flex:1; overflow:auto; }


  .modal-foot { padding:12px 18px calc(12px + env(safe-area-inset-bottom)); background:#F7F8FA; border-top:1px solid #E2E4E9; flex-shrink:0; position:sticky; bottom:0; }


  .modal-foot .btn { flex:1; min-height:44px; }





  /* ===== 固定底部操作栏：毛玻璃 ===== */


  .footer-actions {


    position:fixed; left:0; right:0; bottom:0; z-index:180;


    background:rgba(255,255,255,.92); backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px);


    border-top:1px solid rgba(15,52,96,.1); padding:10px 12px calc(10px + env(safe-area-inset-bottom));


    display:flex; gap:10px; box-shadow:0 -4px 20px rgba(15,52,96,.08);


  }


  .footer-actions .btn { flex:1; min-height:48px; font-size:15px; }





  /* ===== 表单：单列卡片化输入 ===== */


  .form-grid { grid-template-columns:1fr !important; gap:12px !important; }


  .form-grid .field { grid-column:auto !important; }


  .field label{ font-size:13px; font-weight:600; color:#444955; margin-bottom:6px; display:block; }


  .field input, .field select, .field textarea{


    width:100%; padding:12px; font-size:16px !important; border-radius:var(--radius-sm);


    border:1px solid #E2E4E9; background:#F7F8FA; transition:border-color .2s,box-shadow .2s;


    min-height:44px !important;


  }


  .field input:focus, .field select:focus, .field textarea:focus{ border-color:var(--brand); box-shadow:0 0 0 3px rgba(15,52,96,.14); background:#fff; outline:none; }


  .field-row { width:100%; display:flex; gap:8px; }


  .field-row .search-select { flex:1; min-width:0; }


  .field-row .search-select select { width:100% !important; }


  .field-row select, .field-row input { flex:1; min-width:0; border-radius:12px; }


  .quick-btn { width:44px; min-height:44px; border-radius:12px !important; font-size:18px; }


  textarea{ font-size:16px !important; border-radius:12px; border:1px solid #E2E4E9; background:#F7F8FA; }


  textarea:focus{ border-color:var(--brand); box-shadow:0 0 0 3px rgba(15,52,96,.14); outline:none; }


  /* 统计页子标签：移动端点击热区达标（≥40px），原为 8px padding+13px 字号≈35px */


  .sub-tabs a{ min-height:40px !important; display:inline-flex !important; align-items:center; box-sizing:border-box; }





  /* ===== 汇总条 / 分页 / 批操作 ===== */


  .summary { display:flex; gap:8px; padding:12px; background:var(--card); border-radius:var(--radius); box-shadow:var(--shadow); }


  .summary .item { flex:1; text-align:center; }


  .summary .item b{ color:#0F3460; }


  .pager { flex-direction:column; gap:10px; align-items:center; padding:12px 0; }


  .pager .pages { display:flex; flex-wrap:wrap; gap:6px; justify-content:center; }


  .pager .pages button{ min-width:38px; height:38px; border-radius:12px; border:1px solid #E2E4E9; background:#fff; color:#444955; font-size:14px; }


  .pager .pages button.on{ background:var(--brand-grad); color:#fff; border-color:transparent; box-shadow:0 3px 10px rgba(15,52,96,.3); }


  .batch-bar { flex-wrap:wrap; }





  /* ===== 登录页 ===== */


  .login-box { width:88vw; padding:32px 24px; border-radius:24px; box-shadow:0 20px 60px rgba(15,52,96,.18); border:1px solid rgba(15,52,96,.08); }


  .login-box h2 { font-size:20px; }


  .login-box input{ border-radius:12px; font-size:16px !important; min-height:44px; }





  /* ===== 对话机器人：避免与底部操作栏/标签栏重叠 ===== */


  #psi-bot-btn{


    right:14px; bottom:16px; width:52px; height:52px; font-size:22px;


    background:var(--brand-grad); box-shadow:0 8px 24px rgba(15,52,96,.45);


    border-radius:50%; transition:transform .2s;


  }


  #psi-bot-btn:active{ transform:scale(.92); }


  body.has-footer-actions #psi-bot-btn { bottom:82px; }


  #psi-bot-win { left:14px; right:14px; width:auto; max-width:none; bottom:78px; height:calc(100vh - 100px); max-height:none;


    border-radius:20px; box-shadow:0 16px 50px rgba(20,10,45,.3); border:1px solid rgba(15,52,96,.1); overflow:hidden; }


  body.has-footer-actions #psi-bot-win { bottom:132px; }


  .psi-bot-head{ background:var(--brand-grad) !important; padding:14px 16px !important; }


  .psi-bot-msg{ border-radius:16px !important; }


  .psi-bot-foot input{ border-radius:22px !important; padding:11px 14px !important; font-size:16px !important; }


  .psi-bot-foot button{ border-radius:22px !important; background:var(--brand-grad) !important; padding:11px 18px !important; }


  .psi-bot-upload button{ border-radius:12px !important; min-height:40px; }


  .psi-bot-overlay{ backdrop-filter:blur(3px); }


  .psi-bot-modal{ border-radius:18px; box-shadow:0 16px 50px rgba(20,10,45,.3); }





  /* ===== 通用微调 ===== */


  .toast{ border-radius:999px; padding:11px 22px; box-shadow:0 8px 24px rgba(0,0,0,.25); font-weight:500; }


  .money{ font-weight:700; }


  .tag{ border-radius:999px; padding:3px 10px; font-size:11px; }


  /* 操作链接/表情图标扩成热区按钮 */


  .link, .ops span, .m-actions .link, .card .link{


    display:inline-flex; align-items:center; justify-content:center;


    min-height:40px; min-width:40px; padding:6px 10px; border-radius:8px;


  }


  .link:active, .ops span:active{ background:rgba(15,52,96,.08); }





  /* ===== 卡片列表（表格自动投影） ===== */


  .m-hidden{ display:none !important; }


  .m-cards{ display:flex; flex-direction:column; gap:12px; padding:2px 0 6px; }


  .m-card{


    position:relative; background:#fff; border-radius:16px; padding:14px 16px;


    box-shadow:0 4px 16px rgba(15,52,96,.08); border:1px solid rgba(15,52,96,.06);


    transition:transform .15s, box-shadow .15s;


  }


  .m-card:active{ transform:scale(.985); box-shadow:0 2px 8px rgba(15,52,96,.12); }


  .m-card .m-check{ position:absolute; top:12px; right:12px; z-index:2; }


  .m-card .m-check input{ width:22px; height:22px; accent-color:#0F3460; }


  .m-head{ display:flex; justify-content:space-between; align-items:flex-start; gap:8px; margin-bottom:8px; }


  .m-title{ font-size:15px; font-weight:700; color:#1A1D24; display:flex; flex-wrap:wrap; gap:4px 8px; align-items:center; min-width:0; }


  .m-title-item{ word-break:break-all; }


  .m-status{ flex-shrink:0; display:flex; gap:4px; flex-wrap:wrap; justify-content:flex-end; }


  .m-body{ display:flex; flex-wrap:wrap; gap:6px 16px; margin-bottom:8px; }


  .m-field{ display:flex; align-items:baseline; gap:5px; font-size:13px; color:#444955; }


  .m-key{ color:#868B98; font-size:12px; flex-shrink:0; }


  .m-val{ font-weight:500; color:#444955; }


  .m-money{


    display:flex; align-items:baseline; gap:8px; flex-wrap:wrap;


    border-top:1px dashed #E2E4E9; padding-top:9px; margin-bottom:2px;


    font-size:17px; font-weight:800; color:#0F3460;


  }


  .m-money .money{ color:#B8860B; }


  .m-actions{


    display:flex; align-items:center; gap:8px; flex-wrap:wrap;


    border-top:1px solid #E2E4E9; padding-top:5px; margin-top:0;


  }


  .m-actions .link{ font-size:13px; font-weight:600; display:inline-flex; align-items:center; gap:3px; min-height:34px; padding:5px 10px; }


  .m-actions .link:hover{ text-decoration:none; }


  .m-empty{


    background:#fff; border-radius:16px; padding:34px 20px; text-align:center;


    color:#b0acc4; font-size:14px; box-shadow:var(--shadow); border:1px dashed #E2E4E9;


  }





  /* ===== FAB 悬浮新增按钮（在已启用底部标签栏的页面隐藏，避免重复） ===== */


  .fab{


    position:fixed; right:14px; bottom:84px; width:54px; height:54px; z-index:190;


    border:none; border-radius:50%; cursor:pointer; color:#fff; font-size:28px; font-weight:600; line-height:1;


    background:linear-gradient(135deg,#0F3460,#214B7C); box-shadow:0 10px 26px rgba(15,52,96,.45);


    display:flex; align-items:center; justify-content:center; transition:transform .2s, box-shadow .2s;


    -webkit-tap-highlight-color:transparent;


  }


  .fab:active{ transform:scale(.9); box-shadow:0 6px 16px rgba(15,52,96,.4); }


  body.has-psi-bot .fab{ bottom:84px; }


  body.has-footer-actions .fab{ bottom:92px; }


  body.has-tabbar .fab{ display:none !important; }   /* 标签栏已有 + 入口 */





  /* ===== 表单控件 iOS 化 ===== */


  .field input, .field select, .filter-bar input, .filter-bar select, .form input, .form select{


    -webkit-appearance:none; appearance:none;


  }


  .form{ grid-template-columns:1fr !important; }


  .form input, .form select{ width:100% !important; min-height:44px; padding:12px; font-size:16px !important;


    border-radius:12px; border:1px solid #E2E4E9; background:#F7F8FA; color:#1A1D24; }


  .form input:focus, .form select:focus{ border-color:var(--brand); box-shadow:0 0 0 3px rgba(15,52,96,.14); outline:none; background:#fff; }


  .form select{ background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path d='M1 1l5 5 5-5' stroke='%238a8aa0' stroke-width='2' fill='none' stroke-linecap='round'/></svg>");


    background-repeat:no-repeat; background-position:right 12px center; padding-right:32px; }





  /* ===== 面包屑 Tab：移动端横滑，当前项完整可见 ===== */


  .page-tabs{ overflow-x:auto; -webkit-overflow-scrolling:touch; flex-wrap:nowrap; padding:0 10px; gap:2px; }


  .page-tabs a{ white-space:nowrap; padding:11px 10px; font-size:13px; min-height:44px; display:flex;align-items:center; }


  .page-tabs .sep{ padding:11px 2px; }


  /* 隐藏过长的面包屑尾段，避免全部挤占 */


  .page-tabs a:nth-child(n+9){ display:none; }





  /* ===== 分类/筛选 Tab 行高扩大 ===== */


  .cat-item, .filter-tab{


    min-height:44px !important; padding:10px 14px !important; display:flex; align-items:center; justify-content:center;


    font-size:13px !important;


  }


  /* 报表中心快捷日期（今日/本月/上月/全部）热区扩大，满足 44px 点击标准 */


  .qd{ min-height:40px !important; display:inline-flex !important; align-items:center; justify-content:center; padding:0 12px !important; }





  /* ===== 底部标签栏：首页 / 采购 / ＋ / 库存 / 更多 ===== */


  .m-tabbar{


    position:fixed; left:0; right:0; bottom:0; z-index:185; display:flex;


    background:rgba(255,255,255,.96); backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px);


    border-top:1px solid rgba(15,52,96,.12); box-shadow:0 -4px 16px rgba(15,52,96,.06);


    padding:6px 0 calc(6px + env(safe-area-inset-bottom));


  }


  .m-tabbar .tb{


    flex:1; min-width:0; overflow:hidden; display:flex; flex-direction:column; align-items:center; gap:3px;


    font-size:11px; color:#868B98; text-decoration:none; padding:3px 0;


    -webkit-tap-highlight-color:transparent; min-height:50px; justify-content:center;


  }


  .m-tabbar .tb .ico{ font-size:20px; line-height:1; }


  .m-tabbar .tb.active{ color:#0F3460; font-weight:700; }


  .m-tabbar .tb-add{ flex:1; display:flex; align-items:flex-end; justify-content:center; }


  .m-tabbar .tb-add button{


    width:50px; height:50px; margin-top:-24px; border:none; border-radius:50%;


    border:4px solid #fff; background:linear-gradient(135deg,#0F3460,#214B7C); color:#fff;


    font-size:26px; font-weight:600; line-height:1; cursor:pointer;


    box-shadow:0 6px 18px rgba(15,52,96,.45);


    display:flex; align-items:center; justify-content:center;


    -webkit-tap-highlight-color:transparent; transition:transform .15s;


  }


  .m-tabbar .tb-add button:active{ transform:scale(.9); }





  /* 有标签栏时：内容留白 + 悬浮按钮/机器人窗口整体上移避让 */


  body.has-tabbar .content{ padding-bottom:calc(86px + env(safe-area-inset-bottom)) !important; }


  body.has-tabbar #psi-bot-btn{ bottom:calc(78px + env(safe-area-inset-bottom)) !important; right:auto; left:14px; }


  body.has-tabbar #psi-bot-win{ left:14px; right:14px; bottom:calc(136px + env(safe-area-inset-bottom)) !important; height:calc(100vh - 170px) !important; }


  body.has-tabbar .toast{ top:auto; bottom:calc(92px + env(safe-area-inset-bottom)); }





  /* ===== 表单控件统一等高（消除大小不一）===== */


  .field input, .field select, .form input, .form select, .filter-bar input, .filter-bar select,


  input:not([type]), input[type=text], input[type=number], input[type=date], input[type=tel],


  input[type=search], input[type=email]{


    min-height:44px !important; box-sizing:border-box !important;


    padding-top:11px !important; padding-bottom:11px !important;


    font-size:16px !important;


  }


  input[type=date]{ -webkit-appearance:none; }





  /* ===== 采购/退货列表页：新增面板默认折叠 ===== */


  #addPanel.m-collapsed .panel-title::after{ content:'▾'; margin-left:auto; font-size:12px; color:#868B98; transition:transform .2s; }


  #addPanel.m-collapsed .form,


  #addPanel.m-collapsed table,


  #addPanel.m-collapsed .row-total,


  #addPanel.m-collapsed > div:last-child{ display:none !important; }


  #addPanel.m-collapsed{ padding:14px 16px; cursor:pointer; }


  #addPanel.m-collapsed .panel-title{ margin:0; pointer-events:none; }


  #addPanel:not(.m-collapsed) .panel-title::after{ content:'▴'; margin-left:auto; font-size:12px; color:#868B98; }


  #addPanel .panel-title{ display:flex; align-items:center; font-weight:700; }





  /* 顶部工具栏搜索框（无 type 属性，默认 text，需显式覆盖 PC 13px） */


  .toolbar input, .toolbar select, .toolbar .search input, .search input, .topbar input{


    width:100% !important; max-width:100%; min-height:44px !important;


    padding:11px 12px !important; font-size:16px !important; border-radius:12px !important;


    border:1px solid #E2E4E9; background:#F7F8FA; box-sizing:border-box !important;


  }


  .toolbar .search{ width:100% !important; }


  .toolbar{ flex-wrap:wrap !important; gap:10px; }





  /* ===== 全局搜索提示：移动端去掉 Ctrl K ===== */


  .gs-kbd, .search-kbd, .search-kbd-tip, .shortcut, .hotkey{ display:none !important; }


  input[placeholder*="Ctrl K"]::placeholder,


  input[placeholder*="Ctrl"]::placeholder{ color:transparent; }


  /* 强制 html/body 不超过视口，防止某些页面因顶栏按钮过宽被撑大布局视口 */


  html, body{ overflow-x:hidden; max-width:100vw; }


  .main{ min-width:0 !important; max-width:100vw; }





  /* 报表中心：图表容器/canvas 移动端强制 100% 宽，防止图表固定像素宽撑大视口 */


  .chart-grid{ grid-template-columns:1fr !important; }


  .chart-box, .chart-box > div, #reportChartBox, #reportChart{


    width:100% !important; max-width:100%; overflow:hidden;


  }


  canvas{ max-width:100% !important; }


}




/* ========== 壹圆|PSI · 移动端首页增强（PWA） ========== */
.m-home-actions{ padding:12px 12px 8px; background:transparent; }
.m-home-grid{ display:grid; grid-template-columns:repeat(3, 1fr); gap:10px; }
.m-home-item{ display:flex; flex-direction:column; align-items:center; justify-content:center; background:#fff; border-radius:16px; padding:14px 8px; text-decoration:none; color:#1A1D24; box-shadow:0 4px 14px rgba(15,52,96,.08); border:none; cursor:pointer; transition:transform .12s; }
.m-home-item:active{ transform:scale(0.96); }
.m-home-ico{ width:40px; height:40px; border-radius:12px; background:linear-gradient(135deg,#0F3460,#214B7C); color:#fff; display:flex; align-items:center; justify-content:center; font-size:16px; font-weight:700; margin-bottom:8px; }
.m-home-t{ font-size:14px; font-weight:600; }
.m-home-s{ font-size:11px; color:#868B98; margin-top:2px; }

/* 安装提示卡（内容流内联，不遮挡顶栏） */
.m-install-card{ display:flex; align-items:center; gap:10px; background:linear-gradient(135deg,#F7F8FA,#E2E4E9); border:1px solid #E2E4E9; color:#0F3460; border-radius:14px; padding:10px 12px; margin:4px 0 2px; font-size:13px; }
.m-install-card .m-install-ico{ font-size:18px; }
.m-install-card .m-install-txt{ flex:1; line-height:1.4; }
.m-install-card .m-install-btn{ background:#0F3460; color:#fff; border:none; border-radius:10px; padding:8px 12px; font-size:13px; font-weight:600; cursor:pointer; white-space:nowrap; }
.m-install-card .m-install-close{ background:transparent; border:none; color:#0F3460; font-size:16px; cursor:pointer; line-height:1; }

/* 今日速览卡 */
.m-today{ background:#fff; border-radius:16px; padding:12px; margin:8px 0; box-shadow:0 4px 14px rgba(15,52,96,.08); }
.m-today-h{ font-size:13px; color:#868B98; margin-bottom:8px; display:flex; justify-content:space-between; align-items:center; }
.m-today-h b{ color:#1A1D24; font-size:14px; }
.m-today-grid{ display:grid; grid-template-columns:repeat(2, 1fr); gap:10px; }
.m-today-cell{ background:#F7F8FA; border-radius:12px; padding:10px; }
.m-today-cell .l{ font-size:11px; color:#868B98; }
.m-today-cell .v{ font-size:18px; font-weight:700; color:#0F3460; margin-top:2px; }
.m-today-cell.warn .v{ color:#D14343; }

/* 扫码查库结果浮层 */
.m-scan-mask{ position:fixed; inset:0; background:rgba(0,0,0,.55); display:flex; align-items:center; justify-content:center; z-index:1000; padding:18px; }
.m-scan-box{ background:#fff; border-radius:16px; width:100%; max-width:340px; padding:16px; }
.m-scan-box h3{ margin:0 0 10px; font-size:16px; color:#1A1D24; }
.m-scan-row{ display:flex; justify-content:space-between; padding:6px 0; border-bottom:1px dashed #eee; font-size:13px; }
.m-scan-row span:first-child{ color:#868B98; }
.m-scan-box .m-scan-actions{ margin-top:14px; display:flex; gap:10px; }
.m-scan-box .m-scan-actions button{ flex:1; border:none; border-radius:10px; padding:10px; font-size:14px; font-weight:600; cursor:pointer; }
.m-scan-ok{ background:#0F3460; color:#fff; }
.m-scan-again{ background:#E2E4E9; color:#444955; }

@media (min-width: 769px){
  .m-home-actions, .m-install-card, .m-today{ display:none !important; }
}


/* ========== 壹圆|PSI · 移动端独立首页 dashboard ========== */
.m-dash{ max-width:480px; margin:0 auto; min-height:100vh; background:#F7F8FA; display:flex; flex-direction:column; }
.m-dash-top{ display:flex; align-items:center; justify-content:space-between; padding:14px 16px 8px; }
.m-brand{ display:flex; align-items:center; gap:10px; }
.m-brand-logo{ width:40px; height:40px; border-radius:11px; background:linear-gradient(135deg,#0F3460,#214B7C); color:#fff; display:flex; align-items:center; justify-content:center; font-weight:700; font-size:15px; box-shadow:0 0 0 1.5px #D4AF67, 0 4px 12px rgba(15,52,96,.25); }
.m-brand-name{ font-size:16px; font-weight:700; color:#1A1D24; }
.m-brand-sub{ font-size:12px; color:#868B98; margin-top:1px; }
.m-brand-gear{ font-size:13px; color:#868B98; text-decoration:none; padding:6px 12px; border:0.5px solid #e2e8f0; border-radius:10px; }
.m-dash-main{ flex:1; padding:6px 14px 96px; }
.m-today-big{ background:linear-gradient(135deg,#0F3460,#214B7C); border-radius:20px; padding:20px 18px; color:#fff; margin-bottom:14px; position:relative; overflow:hidden; border:1px solid rgba(212,175,103,.45); box-shadow:0 12px 30px rgba(15,52,96,.22); }
.m-today-big-label{ font-size:13px; opacity:.92; letter-spacing:.5px; }
.m-today-big-val{ font-size:32px; font-weight:700; margin:6px 0 10px; color:#D4AF67; letter-spacing:.5px; text-shadow:0 1px 2px rgba(0,0,0,.15); }
.m-today-big-sub{ display:flex; gap:18px; font-size:12px; opacity:.95; }
.m-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin-bottom:14px; }
.m-grid-item{ background:#fff; border:0.5px solid #E2E4E9; border-radius:16px; padding:18px 4px; text-align:center; text-decoration:none; color:#1A1D24; box-shadow:0 2px 10px rgba(15,52,96,.05); transition:transform .12s, box-shadow .12s; }
.m-grid-item:active{ background:#F7F8FA; transform:translateY(1px); box-shadow:0 1px 6px rgba(15,52,96,.10); }
.m-grid-ico{ width:42px; height:42px; border-radius:13px; background:linear-gradient(135deg,#0F3460,#214B7C); color:#fff; display:flex; align-items:center; justify-content:center; font-size:16px; font-weight:700; margin:0 auto 9px; box-shadow:0 0 0 1px #D4AF67, 0 3px 8px rgba(15,52,96,.18); }
.m-grid-t{ font-size:13.5px; font-weight:600; }
.m-todo{ background:#fff; border:0.5px solid #E2E4E9; border-radius:16px; padding:15px 14px; margin-bottom:14px; box-shadow:0 2px 10px rgba(15,52,96,.05); }
.m-todo-title{ font-size:14px; font-weight:700; margin-bottom:8px; color:#1A1D24; border-left:3px solid #D4AF67; padding-left:9px; }
.m-todo-row{ display:flex; justify-content:space-between; align-items:center; padding:10px 0; border-top:0.5px solid #E2E4E9; font-size:13px; color:#444955; text-decoration:none; }
.m-todo-row:first-of-type{ border-top:none; }
.m-todo-warn{ color:#D14343; font-weight:600; }
.m-dash-foot{ text-align:center; font-size:12px; color:#868B98; margin-top:6px; }
.m-dash-foot a{ color:#868B98; text-decoration:none; }
.m-tabbar{ position:fixed; bottom:0; left:50%; transform:translateX(-50%); width:100%; max-width:480px; display:flex; align-items:center; justify-content:space-around; background:#fff; border-top:0.5px solid #E2E4E9; padding:8px 10px calc(8px + env(safe-area-inset-bottom)); }
.m-tab{ position:relative; display:flex; flex-direction:column; align-items:center; gap:2px; font-size:11px; color:#868B98; text-decoration:none; padding-bottom:3px; }
.m-tab.active{ color:#0F3460; font-weight:700; }
.m-tab.active::after{ content:''; position:absolute; bottom:1px; left:50%; transform:translateX(-50%); width:18px; height:3px; border-radius:2px; background:#D4AF67; }
.m-tab-ico{ font-size:16px; }
.m-tab-fab{ background:linear-gradient(135deg,#0F3460,#214B7C); color:#fff; border-radius:22px; padding:10px 22px; font-size:14px; font-weight:700; text-decoration:none; margin-top:-18px; box-shadow:0 6px 16px rgba(15,52,96,.35), 0 0 0 1.5px #D4AF67; }
@media (min-width:769px){ .m-dash{ max-width:none; } .m-tabbar{ position:static; max-width:none; transform:none; } }

/* ============================================================
   统一移动端组件层 v2 · 2026-09-13
   ------------------------------------------------------------
   背景：5 个移动页此前各自内联 276 行样式、硬编码 64 处品牌色，
        并存 .m-* / .ms-* / .mb-* 三套体系 → 页面间观感割裂。
   本层把全部移动端样式收敛为一套标准，并统一走 theme.css 令牌。
   约定：
     ① 页面禁止再写品牌色，一律 var(--brand) / var(--gold) 等；
     ② 骨架统一为 AppBar + body + (footbar | tabbar) 三段式；
     ③ .ms-* 保留为兼容别名（msale.js / mbuy.js 依赖 .ms-item / .ms-sg）；
     ④ 本层置于文件末尾，用于覆盖前部同类声明。
   ============================================================ */
@media (max-width:768px){

  /* ==================== 骨架 ==================== */

  /* 顶栏：海军蓝渐变 + 香槟金底边发丝线 */
  .m-appbar{
    position:sticky; top:0; z-index:var(--z-appbar);
    display:flex; align-items:center; gap:var(--sp-2);
    min-height:var(--m-appbar-h); padding:10px var(--sp-4);
    background:var(--brand-grad); color:#fff;
    box-shadow:0 2px 10px rgba(15,52,96,.18);
  }
  .m-appbar::after{ content:''; position:absolute; left:0; right:0; bottom:0; height:2px; background:var(--gold-line); }
  .m-appbar-back{ font-size:24px; line-height:1; padding:0 6px; cursor:pointer; opacity:.95; }
  .m-appbar h1{ flex:1; margin:0; font-size:var(--fs-lg); font-weight:600; text-align:center; }
  .m-appbar-act{ font-size:20px; padding:4px 6px; cursor:pointer; }

  /* 内容区：统一留白 + 自动避让底部固定元素 */
  .m-body{
    max-width:560px; margin:0 auto;
    padding:var(--sp-3) var(--sp-3) calc(var(--sp-6) + env(safe-area-inset-bottom));
  }
  .m-body.has-tabbar{ padding-bottom:calc(var(--m-tabbar-h) + var(--sp-5) + env(safe-area-inset-bottom)); }
  .m-body.has-footbar{ padding-bottom:calc(72px + var(--sp-5) + env(safe-area-inset-bottom)); }

  /* 固定操作条（合计 + 主按钮） */
  .m-footbar{
    position:fixed; left:0; right:0; bottom:0; z-index:var(--z-footbar);
    display:flex; align-items:center; gap:var(--sp-3);
    max-width:560px; margin:0 auto;
    padding:10px var(--sp-4) calc(10px + env(safe-area-inset-bottom));
    background:rgba(255,255,255,.98);
    -webkit-backdrop-filter:saturate(180%) blur(10px);
    backdrop-filter:saturate(180%) blur(10px);
    border-top:1px solid var(--border);
    box-shadow:0 -2px 12px rgba(15,52,96,.07);
  }

  /* ==================== 通用组件 ==================== */

  .m-card{ background:var(--card); border-radius:var(--radius); padding:var(--sp-3) var(--sp-4); margin-bottom:var(--sp-3); box-shadow:var(--shadow); }

  .m-field-lab{ margin-bottom:6px; font-size:var(--fs-md); color:var(--muted); }
  .m-field input, .m-field select, .m-field textarea{
    width:100%; box-sizing:border-box;
    padding:12px var(--sp-4); font-size:16px;
    border:1px solid var(--border); border-radius:var(--radius-sm);
    background:#fff; color:var(--text); outline:none;
    transition:border-color .2s, box-shadow .2s;
  }
  .m-field input:focus, .m-field select:focus, .m-field textarea:focus{
    border-color:var(--gold); box-shadow:0 0 0 3px rgba(212,175,103,.18);
  }
  .m-field-tip{ margin-top:6px; font-size:var(--fs-sm); color:var(--brand); font-weight:600; cursor:pointer; }

  .m-btn{
    display:inline-flex; align-items:center; justify-content:center;
    min-height:var(--m-tap); padding:0 var(--sp-5);
    border:none; border-radius:var(--radius-sm);
    background:var(--brand-grad); color:#fff;
    font-size:var(--fs-base); font-weight:600; font-family:inherit; cursor:pointer;
  }
  .m-btn:disabled{ opacity:.5; }
  .m-btn.ghost{ background:var(--brand-soft); color:var(--brand); }
  .m-btn.plain{ background:#F3F4F6; color:var(--text-2); }
  .m-btn.danger{ background:var(--danger); }
  .m-btn.block{ width:100%; }

  .m-list{ display:flex; flex-direction:column; }
  .m-li{ display:flex; align-items:center; gap:var(--sp-2); padding:var(--sp-3) 4px; border-bottom:1px solid #F3F4F6; }
  .m-li:last-child{ border-bottom:none; }
  .m-li-main{ flex:1; min-width:0; }
  .m-li-t{ font-size:var(--fs-base); font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .m-li-s{ margin-top:2px; font-size:var(--fs-sm); color:var(--muted); }

  .m-money{ font-weight:700; color:var(--gold-deep); font-variant-numeric:tabular-nums; }
  .m-empty{ padding:26px 0; text-align:center; color:var(--muted); font-size:var(--fs-md); }

  .m-seg{ display:flex; gap:4px; margin-bottom:var(--sp-3); padding:4px; background:#E9EEF5; border-radius:var(--radius-sm); overflow-x:auto; -webkit-overflow-scrolling:touch; }
  .m-seg::-webkit-scrollbar{ display:none; }
  .m-seg a, .m-seg button{ flex:1 0 auto; padding:8px 12px; border:none; border-radius:9px; background:transparent; color:var(--text-2); font-size:var(--fs-md); font-family:inherit; text-align:center; text-decoration:none; white-space:nowrap; cursor:pointer; }
  .m-seg a.on, .m-seg button.on{ position:relative; background:#fff; color:var(--brand); font-weight:600; box-shadow:0 1px 3px rgba(15,52,96,.12); }
  .m-seg a.on::after, .m-seg button.on::after{ content:''; position:absolute; left:50%; transform:translateX(-50%); bottom:3px; width:18px; height:2px; border-radius:2px; background:var(--gold); }

  .m-toast{ position:fixed; left:50%; top:42%; transform:translateX(-50%); z-index:var(--z-toast); display:none; max-width:80%; padding:12px 18px; border-radius:10px; background:rgba(26,29,36,.92); color:#fff; font-size:14px; }
  .m-toast.show{ display:block; }

  .m-result-mask{ position:fixed; inset:0; z-index:var(--z-mask); display:none; align-items:center; justify-content:center; padding:var(--sp-4); background:rgba(15,52,96,.5); }
  .m-result-mask.show{ display:flex; }
  .m-result{ width:100%; max-width:380px; overflow:hidden; background:#fff; border-radius:var(--radius); }
  .m-result-hd{ padding:22px var(--sp-4); background:var(--brand-grad); color:#fff; text-align:center; }
  .m-result-hd .ico{ font-size:40px; }
  .m-result-hd h2{ margin:8px 0 2px; font-size:var(--fs-xl); }
  .m-result-hd p{ margin:0; font-size:var(--fs-md); opacity:.9; }
  .m-result-bd{ padding:var(--sp-3) var(--sp-4); }
  .m-result-row{ display:flex; justify-content:space-between; padding:7px 0; font-size:14px; border-bottom:1px solid #F3F4F6; }
  .m-result-row:last-child{ border-bottom:none; }
  .m-result-row .v{ font-weight:700; }
  .m-result-warn{ margin:10px 0; padding:10px 12px; background:#FFFBE6; border:1px solid #FFE58F; border-radius:var(--radius-sm); font-size:var(--fs-md); color:#8A6D00; }
  .m-result-acts{ display:flex; flex-direction:column; gap:10px; padding:var(--sp-3) var(--sp-4) var(--sp-4); }
  .m-result-acts button{ min-height:var(--m-tap); border:none; border-radius:var(--radius-sm); font-size:var(--fs-base); font-weight:700; font-family:inherit; }
  .m-act-primary{ background:var(--brand-grad); color:#fff; }
  .m-act-plain{ background:#F3F4F6; color:var(--text-2); }
  .m-act-soft{ background:var(--brand-soft); color:var(--brand); }

  /* ==================== 开单 / 采购 兼容层（.ms-*） ====================
     页面已移除内联样式，此处为唯一实现；全部走 theme.css 令牌。 */

  .ms-top{
    position:sticky; top:0; z-index:var(--z-appbar);
    display:flex; align-items:center; gap:var(--sp-2);
    min-height:var(--m-appbar-h); padding:10px var(--sp-4);
    background:var(--brand-grad); color:#fff;
    box-shadow:0 2px 10px rgba(15,52,96,.18);
  }
  .ms-top::after{ content:''; position:absolute; left:0; right:0; bottom:0; height:2px; background:var(--gold-line); }
  .ms-top .ms-back{ font-size:24px; line-height:1; padding:0 6px; cursor:pointer; opacity:.95; }
  .ms-top h1{ flex:1; margin:0; font-size:var(--fs-lg); font-weight:600; text-align:center; }
  .ms-top .ms-scan{ font-size:20px; padding:4px 6px; cursor:pointer; }

  .ms-wrap{ max-width:560px; margin:0 auto; padding:var(--sp-3) var(--sp-3) calc(96px + env(safe-area-inset-bottom)); }

  .ms-card{ background:var(--card); border-radius:var(--radius); padding:var(--sp-3) var(--sp-4); margin-bottom:var(--sp-3); box-shadow:var(--shadow); }
  .ms-label{ margin-bottom:6px; font-size:var(--fs-md); color:var(--muted); }

  .ms-customer input, .ms-sup-box input{
    width:100%; box-sizing:border-box;
    padding:12px var(--sp-4); font-size:16px;
    border:1px solid var(--border); border-radius:var(--radius-sm);
    background:#fff; color:var(--text); outline:none;
    transition:border-color .2s, box-shadow .2s;
  }
  .ms-customer input:focus, .ms-sup-box input:focus{ border-color:var(--gold); box-shadow:0 0 0 3px rgba(212,175,103,.18); }
  .ms-sup-box{ position:relative; }
  .ms-sup-add{ margin-top:6px; font-size:var(--fs-sm); color:var(--brand); font-weight:600; cursor:pointer; }

  .ms-search-box{ position:relative; }
  .ms-search-box input{
    width:100%; box-sizing:border-box;
    padding:12px 14px 12px 38px; font-size:16px;
    border:1px solid var(--border); border-radius:var(--radius-sm);
    background:#fff url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='18' height='18' fill='%23868B98' viewBox='0 0 24 24'><path d='M15.5 14h-.79l-.28-.27a6.5 6.5 0 10-.7.7l.27.28v.79l5 5 1.5-1.5-5-5zm-6 0A4.5 4.5 0 1114 9.5 4.5 4.5 0 019.5 14z'/></svg>") no-repeat 12px center;
    color:var(--text); outline:none;
  }
  .ms-search-box input:focus{ border-color:var(--gold); box-shadow:0 0 0 3px rgba(212,175,103,.18); }

  .ms-suggest{ position:absolute; left:0; right:0; top:48px; z-index:30; display:none; max-height:280px; overflow:auto; background:#fff; border:1px solid var(--border); border-radius:var(--radius-sm); box-shadow:var(--shadow-md); }
  .ms-suggest.show{ display:block; }
  .ms-sg{ display:flex; justify-content:space-between; align-items:center; padding:11px 14px; border-bottom:1px solid #F3F4F6; cursor:pointer; }
  .ms-sg:last-child{ border-bottom:none; }
  .ms-sg:active{ background:var(--bg); }
  .ms-sg .n{ font-size:var(--fs-base); font-weight:600; }
  .ms-sg .s{ font-size:var(--fs-sm); color:var(--muted); }
  .ms-sg .p{ font-size:14px; font-weight:700; color:var(--gold-deep); }

  .ms-empty{ padding:26px 0; text-align:center; color:var(--muted); font-size:var(--fs-md); }

  .ms-item{ display:flex; align-items:center; gap:var(--sp-2); padding:var(--sp-3) 4px; border-bottom:1px solid #F3F4F6; }
  .ms-item:last-child{ border-bottom:none; }
  .ms-item .mi-name{ flex:1; min-width:0; }
  .ms-item .mi-name .t{ font-size:var(--fs-base); font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .ms-item .mi-name .u{ margin-top:2px; font-size:var(--fs-sm); color:var(--muted); }
  .ms-step{ display:flex; align-items:center; gap:0; }
  .ms-step button{ width:34px; height:34px; border:1px solid var(--border); border-radius:var(--radius-xs); background:#F9FAFB; color:var(--text-2); font-size:20px; line-height:1; }
  .ms-step input{ width:46px; height:34px; border:1px solid var(--border); border-left:none; border-right:none; font-size:var(--fs-base); text-align:center; outline:none; }
  .ms-price{ width:74px; height:34px; padding:0 8px; border:1px solid var(--border); border-radius:var(--radius-xs); font-size:var(--fs-base); text-align:right; outline:none; }
  .ms-sub{ min-width:78px; font-size:14px; font-weight:700; color:var(--text); text-align:right; font-variant-numeric:tabular-nums; }
  .ms-del{ padding:0 4px; color:var(--danger); font-size:18px; cursor:pointer; }
  .ms-disc input{ width:110px; padding:10px 12px; border:1px solid var(--border); border-radius:var(--radius-sm); font-size:16px; text-align:right; outline:none; }

  .ms-foot{
    position:fixed; left:0; right:0; bottom:0; z-index:var(--z-footbar);
    display:flex; align-items:center; gap:var(--sp-3);
    max-width:560px; margin:0 auto;
    padding:10px var(--sp-4) calc(10px + env(safe-area-inset-bottom));
    background:rgba(255,255,255,.98);
    -webkit-backdrop-filter:saturate(180%) blur(10px);
    backdrop-filter:saturate(180%) blur(10px);
    border-top:1px solid var(--border);
    box-shadow:0 -2px 12px rgba(15,52,96,.07);
  }
  .ms-foot .ms-total{ flex:1; font-size:var(--fs-md); color:var(--muted); }
  .ms-foot .ms-total b{ display:block; margin-top:2px; font-size:var(--fs-xl); color:var(--gold-deep); font-variant-numeric:tabular-nums; }
  .ms-foot .ms-submit{ min-height:var(--m-tap); padding:0 30px; border:none; border-radius:var(--radius-sm); background:var(--brand-grad); color:#fff; font-size:var(--fs-base); font-weight:700; font-family:inherit; }
  .ms-foot .ms-submit:disabled{ opacity:.5; }

  .ms-mask{ position:fixed; inset:0; z-index:var(--z-mask); display:none; align-items:center; justify-content:center; padding:var(--sp-4); background:rgba(15,52,96,.5); }
  .ms-mask.show{ display:flex; }
  .ms-result{ width:100%; max-width:380px; overflow:hidden; background:#fff; border-radius:var(--radius); }
  .ms-result .ok{ padding:22px var(--sp-4); background:var(--brand-grad); color:#fff; text-align:center; }
  .ms-result .ok .ico{ font-size:40px; }
  .ms-result .ok h2{ margin:8px 0 2px; font-size:var(--fs-xl); }
  .ms-result .ok p{ margin:0; font-size:var(--fs-md); opacity:.9; }
  .ms-result .body{ padding:var(--sp-3) var(--sp-4); }
  .ms-result .row{ display:flex; justify-content:space-between; padding:7px 0; font-size:14px; border-bottom:1px solid #F3F4F6; }
  .ms-result .row:last-child{ border-bottom:none; }
  .ms-result .row .v{ font-weight:700; font-variant-numeric:tabular-nums; }
  .ms-result .warn{ margin:10px 0; padding:10px 12px; background:#FFFBE6; border:1px solid #FFE58F; border-radius:var(--radius-sm); font-size:var(--fs-md); color:#8A6D00; }
  .ms-result .acts{ display:flex; flex-direction:column; gap:10px; padding:var(--sp-3) var(--sp-4) var(--sp-4); }
  .ms-result .acts button{ min-height:var(--m-tap); border:none; border-radius:var(--radius-sm); font-size:var(--fs-base); font-weight:700; font-family:inherit; }
  .ms-pay{ background:var(--brand-grad); color:#fff; }
  .ms-more{ background:#F3F4F6; color:var(--text-2); }
  .ms-back-home{ background:var(--brand-soft); color:var(--brand); }
  .ms-methods{ display:none; gap:10px; padding:0 var(--sp-4) var(--sp-3); }
  .ms-methods.show{ display:flex; }
  .ms-methods button{ flex:1; padding:12px; border:1px solid var(--border); border-radius:var(--radius-sm); background:#fff; font-size:14px; font-family:inherit; }
  .ms-methods button.on{ background:var(--brand-soft); border-color:var(--brand-line); color:var(--brand); font-weight:700; }

  .ms-toast{ position:fixed; left:50%; top:42%; transform:translateX(-50%); z-index:var(--z-toast); display:none; max-width:80%; padding:12px 18px; border-radius:10px; background:rgba(26,29,36,.92); color:#fff; font-size:14px; }
  .ms-toast.show{ display:block; }

  /* ==================== 底部 Tab（统一，覆盖前部旧定义） ==================== */
  .m-tabbar{
    position:fixed; left:50%; bottom:0; transform:translateX(-50%);
    z-index:var(--z-tabbar);
    display:flex; align-items:center; justify-content:space-around;
    width:100%; max-width:560px;
    padding:8px 10px calc(8px + env(safe-area-inset-bottom));
    background:rgba(255,255,255,.98);
    -webkit-backdrop-filter:saturate(180%) blur(10px);
    backdrop-filter:saturate(180%) blur(10px);
    border-top:1px solid var(--border);
  }
  /* 顶边香槟金发丝线 */
  .m-tabbar::before{ content:''; position:absolute; top:-1px; left:0; right:0; height:1.5px; background:linear-gradient(90deg,transparent,var(--gold),transparent); opacity:.65; }
  .m-tab{ position:relative; display:flex; flex-direction:column; align-items:center; gap:2px; padding-bottom:3px; font-size:var(--fs-xs); color:var(--muted); text-decoration:none; }
  .m-tab-ico{ font-size:16px; }
  .m-tab.active{ color:var(--brand); font-weight:700; }
  .m-tab.active .m-tab-ico{ filter:drop-shadow(0 0 5px rgba(212,175,103,.55)); }
  .m-tab.active::after{ content:''; position:absolute; bottom:1px; left:50%; transform:translateX(-50%); width:18px; height:3px; border-radius:2px; background:var(--gold); }
  .m-tab-fab{
    margin-top:-18px; padding:10px 22px;
    border-radius:22px; background:var(--brand-grad);
    color:#fff; font-size:14px; font-weight:700; text-decoration:none;
    box-shadow:0 6px 16px rgba(15,52,96,.35), 0 0 0 1.5px var(--gold);
  }


  /* ==================== 页面专用样式（已从各页内联迁入） ==================== */
  /* ===== 报表页 .mr-* ===== */
  .mr-top{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:10px;
    background:var(--brand-grad);color:#fff;padding:12px 14px;box-shadow:0 2px 8px rgba(0,0,0,.08)}
  .mr-top .mr-back{font-size:22px;line-height:1;padding:0 4px;cursor:pointer}
  .mr-top h1{font-size:17px;margin:0;flex:1;text-align:center;font-weight:700}
  .mr-top .mr-print{font-size:13px;font-weight:700;background:rgba(255,255,255,.18);padding:6px 12px;border-radius:10px;cursor:pointer}
  .mr-wrap{padding:12px 12px 24px;max-width:560px;margin:0 auto}
  .mr-card{background:#fff;border-radius:14px;padding:14px;margin-bottom:12px;box-shadow:0 1px 4px rgba(0,0,0,.05)}
  .mr-card .mr-title{font-size:13px;color:#6b7280;margin-bottom:10px;display:flex;align-items:center;gap:6px}
  .mr-card .mr-title::before{content:'';width:3px;height:13px;background:var(--gold);border-radius:2px}
  .mr-grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
  .mr-stat{background:var(--bg);border-radius:12px;padding:12px}
  .mr-stat .l{font-size:12px;color:var(--muted)}
  .mr-stat .v{font-size:20px;font-weight:800;margin-top:4px;color:var(--text)}
  .mr-stat .v.gold{color:var(--gold-deep)}
  .mr-stat .v.danger{color:var(--danger)}
  .mr-stat .v.warn{color:var(--warn)}
  .mr-actions{display:flex;gap:10px;margin-top:4px}
  .mr-actions a{flex:1;text-align:center;background:var(--brand-grad);color:#fff;
    text-decoration:none;padding:13px;border-radius:12px;font-size:15px;font-weight:700}
  .mr-actions a.ghost{background:#f3f4f6;color:#374151}
  /* ===== 交易页 .mb-* ===== */
  /* ===== 交易记录页（深海军蓝 VI + 香槟金点缀） ===== */
  .mb-top{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:10px;
    background:var(--brand-grad);color:#fff;padding:12px 14px;
    box-shadow:0 2px 8px rgba(15,52,96,.12), inset 0 -2px 0 var(--gold)}
  .mb-top .mb-back{font-size:22px;line-height:1;cursor:pointer;padding:0 4px}
  .mb-top h1{font-size:17px;margin:0;flex:1;text-align:center;font-weight:700;letter-spacing:.5px}
  .mb-top .mb-sp{width:30px;flex-shrink:0}
  .mb-ctrl{position:sticky;top:50px;z-index:25;background:var(--bg);padding:10px 12px 6px}
  .mb-seg{display:flex;background:#fff;border:1px solid var(--border);border-radius:12px;overflow:hidden}
  .mb-seg button{flex:1;border:none;background:transparent;padding:11px 0;font-size:14px;font-weight:600;color:var(--muted);cursor:pointer;transition:color .15s}
  .mb-seg button.on{background:var(--brand-grad);color:#fff;box-shadow:inset 0 -2px 0 var(--gold)}
  .mb-range{display:flex;gap:8px;margin-top:8px}
  .mb-range button{flex:1;border:1px solid var(--border);background:#fff;border-radius:10px;padding:8px 0;font-size:13px;color:var(--text-2);cursor:pointer;transition:all .15s}
  .mb-range button.on{border-color:var(--brand);color:var(--brand);font-weight:700}
  .mb-search{margin-top:8px;position:relative}
  .mb-search input{width:100%;box-sizing:border-box;border:1px solid var(--border);border-radius:10px;
    padding:11px 14px 11px 38px;font-size:16px;outline:none;background:#fff url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='18' height='18' fill='%23868B98' viewBox='0 0 24 24'><path d='M15.5 14h-.79l-.28-.27a6.5 6.5 0 10-.7.7l.27.28v.79l5 5 1.5-1.5-5-5zm-6 0A4.5 4.5 0 1114 9.5 4.5 4.5 0 019.5 14z'/></svg>") no-repeat 12px center}
  .mb-search input:focus{border-color:var(--brand)}
  .mb-list-wrap{padding:8px 0 4px}
  .mb-tag{display:inline-flex;align-items:center;border-radius:999px;padding:3px 10px;font-size:11px;font-weight:700;line-height:1.4;white-space:nowrap}
  .mb-tag.ok{background:rgba(184,134,11,.12);color:var(--gold-deep)}
  .mb-tag.warn{background:rgba(230,137,54,.14);color:var(--warn)}
  .mb-tag.danger{background:rgba(209,67,67,.12);color:var(--danger)}
  .mb-tag.info{background:rgba(47,111,186,.12);color:var(--info)}
  .mb-tag.gold{background:rgba(184,134,11,.14);color:var(--gold-deep)}
  .m-money .money{color:var(--gold-deep)}
  .m-card .m-status{margin-left:6px}
  /* 明细底部弹层 */
  .mb-detail-mask{position:fixed;inset:0;background:rgba(15,52,96,.45);z-index:200;display:none;align-items:flex-end}
  .mb-detail-mask.show{display:flex}
  .mb-detail{width:100%;max-width:560px;margin:0 auto;background:#fff;border-radius:20px 20px 0 0;max-height:88vh;display:flex;flex-direction:column;animation:mbUp .28s cubic-bezier(.22,1,.36,1)}
  @keyframes mbUp{from{transform:translateY(40px);opacity:.6}to{transform:none;opacity:1}}
  .mb-detail-head{display:flex;align-items:center;justify-content:space-between;padding:16px 18px 12px;border-bottom:1px solid var(--border)}
  .mb-detail-t{font-size:16px;font-weight:700;color:var(--text)}
  .mb-detail-s{font-size:12px;color:var(--muted);margin-top:2px}
  .mb-detail-x{width:34px;height:34px;border:none;background:#F2F4F7;border-radius:50%;font-size:20px;color:var(--text-2);cursor:pointer;flex-shrink:0}
  .mb-detail-body{padding:14px 18px;overflow:auto;flex:1}
  .mb-detail-foot{padding:12px 18px calc(12px + env(safe-area-inset-bottom));border-top:1px solid var(--border);background:var(--bg)}
  .mb-detail-foot .mb-go{width:100%;border:none;border-radius:12px;padding:13px;font-size:15px;font-weight:700;background:var(--brand-grad);color:#fff;cursor:pointer;box-shadow:0 0 0 1px var(--gold)}
  .mb-row{display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px dashed var(--border);font-size:14px;gap:12px}
  .mb-row:last-child{border-bottom:none}
  .mb-row .k{color:var(--muted);flex-shrink:0}
  .mb-row .v{color:var(--text);font-weight:500;text-align:right}
  .mb-row .v.gold{color:var(--gold-deep);font-weight:700}
  .mb-sec{font-size:13px;font-weight:700;color:var(--brand);margin:14px 0 4px;border-left:3px solid var(--gold);padding-left:9px}
  .mb-item{display:flex;justify-content:space-between;align-items:flex-start;padding:9px 0;border-bottom:1px solid #F2F4F7;font-size:14px;gap:10px}
  .mb-item:last-child{border-bottom:none}
  .mb-item .nm{flex:1;min-width:0}
  .mb-item .nm .t{font-weight:600;color:var(--text);word-break:break-all}
  .mb-item .nm .u{font-size:12px;color:var(--muted);margin-top:2px}
  .mb-item .amt{font-weight:700;color:var(--gold-deep);white-space:nowrap}
  .mb-loading{padding:30px 0;text-align:center;color:var(--muted);font-size:14px}
  /* 卡片底部动作条（对齐 PC 行内功能键：查看/打印/收付款/删除） */
  .m-actions{display:flex;border-top:1px solid #F2F4F7;margin-top:10px;padding-top:8px}
  .m-act{flex:1;border:none;background:transparent;padding:9px 4px;font-size:13px;font-weight:600;color:var(--brand);cursor:pointer;border-right:1px solid #F2F4F7;transition:background .15s}
  .m-act:last-child{border-right:none}
  .m-act:active{background:rgba(15,52,96,.06)}
  .m-act-danger{color:var(--danger)}
  /* ===== 首页登录层与新手引导 ===== */
  #mLoginMask{position:fixed;inset:0;z-index:600;background:linear-gradient(160deg,var(--brand) 0%,#16355A 45%,var(--brand-2) 100%);display:none;align-items:center;justify-content:center;padding:24px;overflow:hidden}
  #mLoginMask::before{content:'';position:absolute;top:-60px;right:-60px;width:220px;height:220px;border-radius:50%;background:rgba(212,175,103,.10);filter:blur(1px)}
  #mLoginMask::after{content:'';position:absolute;bottom:-90px;left:-40px;width:260px;height:260px;border-radius:50%;background:rgba(212,175,103,.08);filter:blur(2px)}
  #mLoginMask .lb{position:relative;background:#fff;border-radius:22px;padding:32px 26px;width:100%;max-width:340px;box-shadow:0 28px 80px rgba(15,52,96,.48);animation:modalIn .35s ease;border-top:3px solid var(--gold)}
  #mLoginMask .logo-wrap{width:58px;height:58px;border-radius:16px;background:var(--brand-grad);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:18px;margin:0 auto 16px;box-shadow:0 0 0 3px rgba(212,175,103,.35),0 8px 24px rgba(15,52,96,.35)}
  #mLoginMask h2{font-size:22px;font-weight:800;color:var(--text);margin:0 0 4px;text-align:center;letter-spacing:.5px}
  #mLoginMask .sub{font-size:13px;color:var(--muted);margin-bottom:22px;text-align:center}
  #mLoginMask .sub::after{content:'';display:block;width:36px;height:2px;background:var(--gold);border-radius:2px;margin:10px auto 0}
  #mLoginMask .err{display:none;color:var(--danger);font-size:12px;margin-bottom:12px;background:#fdeaea;border-radius:8px;padding:8px 10px}
  #mLoginMask input{width:100%;padding:13px 15px;border:1px solid var(--border);border-radius:12px;font-size:15px;margin-bottom:14px;outline:none;background:var(--bg);transition:border-color .2s,box-shadow .2s;box-sizing:border-box;color:var(--text)}
  #mLoginMask input:focus{border-color:var(--gold);box-shadow:0 0 0 3px rgba(212,175,103,.18);background:#fff}
  #mLoginMask .pw{margin-bottom:20px}
  #mLoginMask button{position:relative;overflow:hidden;width:100%;padding:14px;font-size:16px;font-weight:800;border:none;border-radius:13px;background:var(--brand-grad);color:#fff;cursor:pointer;box-shadow:0 8px 22px rgba(15,52,96,.35);letter-spacing:2px}
  #mLoginMask button::after{content:'';position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(212,175,103,.35),transparent);transition:left .5s}
  #mLoginMask button:active{transform:translateY(1px)}
  #mLoginMask button:hover::after{left:100%}
  #mLoginMask .switch{position:relative;z-index:1;margin-top:16px;text-align:center;font-size:13px;color:var(--muted)}
  #mLoginMask .switch a{color:var(--brand);text-decoration:none;font-weight:600}
  #mLoginMask .switch a::before{content:'◆';color:var(--gold);margin-right:5px;font-size:10px}
  @keyframes modalIn{from{opacity:0;transform:translateY(18px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}
  /* ---- 新手快速上手引导卡 ---- */
  .m-onboard{background:var(--brand-grad);color:#fff;border-radius:14px;padding:14px 16px;margin-bottom:12px;box-shadow:0 2px 10px rgba(15,52,96,.18);position:relative}
  .m-onboard h3{font-size:15px;margin:0 0 4px;display:flex;align-items:center;gap:6px}
  .m-onboard .sub{font-size:12px;opacity:.82;margin-bottom:10px;line-height:1.6}
  .m-onboard ol{margin:0;padding-left:18px}
  .m-onboard li{font-size:13px;margin:7px 0;line-height:1.5}
  .m-onboard li a{color:#FFE9B0;text-decoration:none;font-weight:700}
  .m-onboard .m-onboard-close{position:absolute;top:10px;right:12px;font-size:18px;opacity:.85;cursor:pointer;line-height:1}

  /* ===== 下拉(select)统一外观 · 单一事实源 =====
     背景：上面「表单控件 iOS 化」把 .field/.filter-bar/.form 三处 select 一起设了
     -webkit-appearance:none，但自定义箭头只补给了 .form select，
     导致 .field 里的下拉（客户/供应商/仓库/经手人/分类/类型…）成了没有箭头的白板；
     iOS 上不给 select 显式文字色时，选中项还可能整个渲染不出来（看着就是「空值」）。
     所以凡是去掉原生外观的 select，一律在此统一补齐，杜绝以后各处漏补。 */
  .field select, .filter-bar select, .form select, .toolbar select,
  .search-select select, .m-field select, .panel select, .card select{
    background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path d='M1 1l5 5 5-5' stroke='%238a8aa0' stroke-width='2' fill='none' stroke-linecap='round'/></svg>") !important;
    background-repeat:no-repeat !important;
    background-position:right 12px center !important;
    padding-right:34px !important;
    color:#1A1D24 !important;
    -webkit-text-fill-color:#1A1D24 !important;
  }

}

