/* 凭栏珠宝 ERP 样式 v1.7.546 */
:root{--bg:#f4f5f1;--panel:#fff;--ink:#1d2b25;--sub:#68766f;--green:#14513d;--green2:#1a5c46;
--gold:#c9a227;--gold-soft:#f3ead0;--line:#e4e7e1;--red:#c0392b;--shadow:0 1px 3px rgba(20,40,30,.07),0 8px 24px rgba(20,40,30,.06)}
*{margin:0;padding:0;box-sizing:border-box}
html{scrollbar-gutter:stable}/* 页面滚动条常驻占位：短页/长页之间跳转时主内容不再横移抖动 */
body{font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei","Noto Sans SC",sans-serif;background:var(--bg);color:var(--ink);font-size:14px}
a{color:var(--green);text-decoration:none}
.app{display:flex;min-height:100vh}
.side{width:214px;background:linear-gradient(175deg,#0d2e23,#123a2c);color:#e8efe9;position:fixed;top:0;bottom:0;left:0;z-index:50;display:flex;flex-direction:column}
.logo{padding:24px 18px 20px;border-bottom:1px solid rgba(255,255,255,.09)}
/* 列表页标题旁醒目「创建新单」大按钮 */
.btn-new-main{display:inline-flex;align-items:center;background:linear-gradient(120deg,#d4ac2b,#b08d1e);color:#fff;font-weight:800;font-size:15px;letter-spacing:2px;padding:12px 28px;border-radius:10px;box-shadow:0 4px 14px rgba(201,162,39,.3);white-space:nowrap}
.btn-new-main:hover{filter:brightness(1.08);color:#fff}
.logo .t1{font-size:18px;font-weight:700;letter-spacing:2px;color:#fff}
.logo .t2{font-size:11px;color:var(--gold);letter-spacing:3px;margin-top:5px;font-weight:600}
.nav{padding:12px 10px;flex:1}
.nav a{display:flex;align-items:center;gap:9px;padding:8px 12px;border-radius:9px;color:#b9c8bf;font-size:13px;margin-bottom:2px;white-space:nowrap}
.nav a:hover{background:rgba(255,255,255,.06);color:#fff}
.nav a.on{background:rgba(201,162,39,.16);color:#ffe9a8;font-weight:600}
/* 订单管理二级菜单 */
.subnav{margin:-2px 0 4px}
/* ===== v1.7.139/140 侧边栏分组折叠：大标题点开/再点收回；导航区超高可滚动，底部账号栏始终可见 ===== */
.nav{min-height:0;overflow-y:auto;scrollbar-gutter:stable;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.25) transparent}
.ng>.subnav{display:none}
.ng.open>.subnav{display:block}
.nav a .ng-ar{margin-left:auto;font-size:10px;opacity:.65;transition:transform .15s}
.ng.open>a .ng-ar{transform:rotate(90deg)}
/* v1.7.140 大标题/小标题视觉分层：大标题条状底+加粗+字距，小标题缩进+淡化+小字 */
.nav>a,.nav>.ng>a{font-weight:800;letter-spacing:.5px;background:rgba(255,255,255,.05);color:#d3ded6}
.nav>a:hover,.nav>.ng>a:hover{background:rgba(255,255,255,.1);color:#fff}
.nav>a.on,.nav>.ng>a.on{background:rgba(201,162,39,.16);color:#ffe9a8}
.nav .subnav{padding:0 0 4px}
.nav .subnav a{font-size:12.5px;padding:7px 12px 7px 30px;color:#87998d;font-weight:500;letter-spacing:.5px;margin-bottom:1px}
.nav .subnav a:hover{color:#fff;background:rgba(255,255,255,.06)}
.nav .subnav a.on{color:#ffe9a8;font-weight:700;background:rgba(201,162,39,.12)}
.subnav a{display:block;padding:7px 12px 7px 30px;border-radius:8px;color:#94a89d;font-size:12.5px;margin-bottom:1px}
.subnav a:hover{background:rgba(255,255,255,.06);color:#fff}
.subnav a.on{background:rgba(201,162,39,.12);color:#ffe9a8;font-weight:600}
/* ===== v1.7.546 侧边栏分区标题 + 全栏字号降一号（一级 14→13 / 二级 13→12.5），项目多也一眼分区 ===== */
.nav-sec{margin:12px 4px 5px;padding-top:9px;border-top:1px solid rgba(255,255,255,.1);font-size:10.5px;letter-spacing:2.5px;color:rgba(255,255,255,.45);font-weight:700;white-space:nowrap}
.nav-sec:first-child{margin-top:0;border-top:none;padding-top:2px}
.side-foot{padding:14px 18px;border-top:1px solid rgba(255,255,255,.09);font-size:11.5px;color:#7d9389;line-height:1.7}
.side-foot a{color:#a8bcae}
.main{flex:1;margin-left:214px;padding:20px 24px 60px;min-width:0}
/* v1.7.144 工厂账号保持大一号侧边栏（其它账号小一号） */
/* v1.7.244 工厂侧边栏字号再降一号（13/12.5/11）+ 一级项禁止折行，保证「生产管理」等永远单行 */
body.rfac .nav a{font-size:13px;white-space:nowrap}
body.rfac .nav .subnav a,body.rfac .subnav a{font-size:12.5px}
body.rfac .side-foot{font-size:11px}
.pagehead{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:16px;flex-wrap:wrap;gap:10px}
.pagehead h1{font-size:20px;font-weight:700}
.pagehead .desc{color:var(--sub);font-size:12.5px;margin-top:4px}
.flash{padding:10px 14px;border-radius:9px;margin-bottom:14px;font-size:13px}
.flash.ok{background:#e9f4ec;color:#16653f;border:1px solid #cfe5d6}
.flash.err{background:#fdecea;color:#a93226;border:1px solid #f2c9c3}
/* KPI */
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:14px}
.kpi{background:var(--panel);border-radius:12px;padding:15px 17px;box-shadow:var(--shadow);position:relative;overflow:hidden}
.kpi .lab{color:var(--sub);font-size:12px;display:flex;justify-content:space-between;align-items:center}
.kpi .val{font-size:24px;font-weight:700;margin-top:7px;font-variant-numeric:tabular-nums}
.kpi .foot{font-size:11px;color:var(--sub);margin-top:5px}
.kpi.warn .val{color:var(--red)}
.tag{font-size:10.5px;padding:2px 8px;border-radius:99px;font-weight:600}
.tag.red{background:#fdecea;color:var(--red)}.tag.green{background:#e6f2ec;color:var(--green)}
/* 面板/表格 */
.panel{background:var(--panel);border-radius:14px;box-shadow:0 1px 3px rgba(24,46,36,.05),0 6px 22px rgba(24,46,36,.07);padding:18px 20px;margin-bottom:14px;border:1px solid #edf0e9}
.panel h3{font-size:14px;font-weight:700;margin-bottom:12px;display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}
/* 详情页栏目标题（加强版：更大 + 金色底条） */
.panel h3.h-big{font-size:17px;font-weight:800;background:var(--gold-soft);border-left:4px solid var(--gold);border-radius:4px;padding:8px 14px;letter-spacing:.5px;margin-bottom:14px;justify-content:flex-start}
.panel h3 .mini{font-weight:400;color:var(--sub);font-size:11.5px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
table.tb{width:100%;border-collapse:collapse;font-size:14px}
.tb th{background:#f7f8f4;color:var(--sub);font-weight:600;text-align:left;padding:10px 11px;border-bottom:1.5px solid var(--line);white-space:nowrap;font-size:13px}
.tb td{padding:10px 11px;border-bottom:1px solid #f0f2ec;white-space:nowrap}
/* v1.7.372 加工商结算汇总表：列间竖分隔线 */
.tb-div th + th, .tb-div td + td{border-left:1px solid #e8ebe4}
.tb tbody tr:hover{background:#fafbf7}
.tb .r{text-align:right;font-variant-numeric:tabular-nums}
.tb .pay{font-weight:700;color:var(--green)}
.tb img.thumb{width:44px;height:44px;object-fit:cover;border-radius:8px;border:1px solid var(--line);background:#f2f3ef;display:block;cursor:pointer}
.tools{display:flex;gap:10px;margin-bottom:12px;flex-wrap:wrap;align-items:center}
.tools input,.tools select,.fm input,.fm select,.fm textarea{border:1px solid var(--line);border-radius:8px;padding:8px 12px;font-size:14px;background:#fff;color:var(--ink);outline:none;font-family:inherit}
.tools input:focus,.tools select:focus,.fm input:focus,.fm select:focus,.fm textarea:focus{border-color:var(--green)}
.btn{border:none;border-radius:8px;padding:9px 18px;font-size:12.5px;cursor:pointer;font-weight:600;transition:.15s;display:inline-block}
.btn-p{background:var(--green);color:#fff}.btn-p:hover{background:#0f4433}
.btn-g{background:transparent;border:1px solid var(--line);color:var(--sub)}.btn-g:hover{border-color:var(--green);color:var(--green)}
.btn-r{background:#fdecea;color:var(--red)}
.btn-s{padding:8px 14px;font-size:13px}
.pager{display:flex;gap:6px;margin-top:12px;justify-content:center;align-items:center;font-size:12.5px;color:var(--sub);flex-wrap:wrap}
.pager a,.pager span.cur{padding:6px 11px;border-radius:7px;border:1px solid var(--line);background:#fff;min-width:34px;text-align:center;text-decoration:none;transition:.15s}
.pager a:hover{border-color:var(--green);color:var(--green)}
.pager span.cur{background:var(--green);color:#fff;border-color:var(--green);font-weight:700}
.pager span.dots{border:none;background:none;padding:6px 2px;color:#a8b3a6}
.empty{padding:28px;text-align:center;color:var(--sub);font-size:12.5px}
/* ===== 订单列表 v2：竖线分隔版（清晰列边界 + 加重表头 + 整体边框卡片） ===== */
.tb-orders{border-collapse:separate;border-spacing:0;border:1px solid #d9e0d6;border-radius:10px;overflow:hidden;background:#fff}
.tb-orders thead th{background:#e9efe6;color:#3f5148;font-weight:800;font-size:14px;letter-spacing:.6px;
  padding:12px 14px;border-bottom:1.5px solid #cfd9ca;border-right:1px solid #d5ddd1;white-space:nowrap;position:relative}
.tb-orders thead th:first-child{padding-left:14px}
.tb-orders thead th:last-child{border-right:0;padding-right:14px}
/* v1.7.325 字体加大一号 14.5→15.5；横竖分隔线同步加深一档 */
.tb-orders tbody td{padding:14px 14px;border-bottom:1px solid #dbe1d5;border-right:1px solid #dbe1d5;white-space:nowrap;vertical-align:middle;font-size:15.5px}
.tb-orders tbody td:first-child{padding-left:14px}
.tb-orders tbody td:last-child{border-right:0;padding-right:14px}
.tb-orders tbody tr:hover{background:#f2f9f4}
.tb-orders tbody tr:last-child td{border-bottom:0}
.tb-orders .ord-no{color:var(--green);font-size:15.5px;font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:.3px}
.tb-orders .ord-cust{font-weight:600;color:var(--ink)}
.tb-orders .ord-date{color:var(--sub);font-variant-numeric:tabular-nums}
.tb-orders .ord-sub{color:var(--sub)}
.tb-orders .ord-note{max-width:200px;overflow:hidden;text-overflow:ellipsis;color:var(--sub);font-size:15px}
/* v1.7.241 画图账号的设计要求列：加深加粗醒目（覆盖 .ord-note 的浅灰） */
.tb-orders .c-dreq{color:var(--ink)!important;font-weight:700;white-space:normal}
.tb-orders img.thumb{width:52px;height:52px;border-radius:9px;box-shadow:0 1px 4px rgba(24,46,36,.09)}
.pill{display:inline-block;padding:4px 12px;border-radius:99px;font-size:13.5px;font-weight:700;white-space:nowrap}
.pill-red{background:#c0392b;color:#fff}
.pill-done{background:#e6f2ec;color:var(--green)}
/* v1.7.282 状态列副标记（画图完工 / 无需画图）：小一号，跟主状态药丸并排 */
.ds-tag{display:inline-block;margin-left:5px;padding:2px 8px;border-radius:99px;font-size:11.5px;font-weight:700;white-space:nowrap;border:1px solid transparent}
.tb-orders .ord-ops{text-align:right;white-space:nowrap}
.op-btn{display:inline-block;font-size:11.5px;font-weight:700;padding:5px 10px;margin-left:5px;border-radius:7px;
  border:1px solid #dbe3da;background:#fff;color:var(--sub);text-decoration:none;transition:.14s;line-height:1.1}
.op-btn:hover{border-color:var(--green);color:var(--green);background:#f2faf5;box-shadow:0 1px 4px rgba(20,81,61,.13)}
@media (max-width:820px){
  .tb-orders .ord-note{display:none}
  .op-btn{padding:4px 7px;font-size:11px;margin-left:3px}
}
/* 表单 */
.fm{display:grid;grid-template-columns:repeat(4,1fr);gap:12px 14px}
.fm .f{display:flex;flex-direction:column;gap:5px}
.fm label{font-size:13px;color:var(--sub);font-weight:600}
.fm .full{grid-column:1/-1}
.sect{border-top:1px dashed var(--line);margin:16px 0 0;padding-top:14px}
.sect>.st{font-size:17px;font-weight:800;color:var(--green);margin-bottom:12px;background:var(--gold-soft);border-left:4px solid var(--gold);border-radius:4px;padding:7px 14px;letter-spacing:.5px}
/* 下单阶段提示条（镶法/石料/图片/计价在工厂接单后显示） */
.xd-hint{font-size:12.5px;color:var(--sub);background:#f6f8f4;border:1px dashed var(--line);border-radius:8px;padding:10px 14px;margin-top:16px}
/* 接单信息子模块标题 */
.subsect{font-size:15px;font-weight:800;color:#2d5a41;background:linear-gradient(90deg,#dfeadd,#f0f5ec);border-left:4px solid var(--green);border-radius:4px;padding:7px 14px;margin:16px 0 10px;letter-spacing:.4px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.subsect .ss-x{font-size:12.5px;font-weight:600;color:#5c6f63;margin-left:auto}
.sect>.subsect:first-of-type{margin-top:2px}
/* v1.7.137 版块边界感：小节套边框卡片，标题变通栏色带头 */
.secbox{border:1.5px solid #d3e1cd;border-radius:12px;background:#fdfffc;margin:16px 0 6px;box-shadow:0 1px 4px rgba(24,46,36,.05);padding:0 14px}
.secbox>.subsect{margin:0 -14px;border-radius:10px 10px 0 0;border-left:none;border-bottom:1.5px solid #d3e1cd;background:linear-gradient(90deg,#dce8d7,#eef4ea);padding:10px 16px;font-size:17px}
.secbox>.subsect .ss-x{font-size:13px}
.secbox>:not(.subsect){margin-left:0;margin-right:0}
.secbox>:not(.subsect):first-of-type{margin-top:12px}
.secbox>:not(.subsect):last-child{margin-bottom:14px}
.secbox .mini-table:last-of-type{margin-bottom:0}
/* 生产任务单标签 */
.tag-gold,.tag-due{display:inline-block;padding:5px 12px;border-radius:16px;font-size:12.5px;font-weight:700;letter-spacing:.3px}
.tag-gold{background:var(--gold-soft);color:#8a5a00;border:1px solid #e5d5a0}
.tag-due{background:#eef7f0;color:var(--green);border:1px solid #cfe6d6}
.tag-due.late{background:#fbeeec;color:var(--red);border:1px solid #eecac4}
/* v1.7.160 明细表竖线版式：只保留列分隔线（去外框圆角，避免窄屏边缘出线） */
.mini-table{width:100%;border-collapse:collapse;font-size:14px;margin-bottom:10px}
.mini-table th{color:#66736a;font-weight:700;text-align:left;padding:8px 10px;background:#f5f7f2;border-bottom:1.5px solid #e2e8dd;border-right:1px solid #dfe5db;font-size:12.5px;letter-spacing:.6px}
.mini-table td{padding:8px 10px;border-bottom:1px solid #eef1ea;border-right:1px solid #eef1ea}
.mini-table th:last-child,.mini-table td:last-child{border-right:none}
.mini-table tr:nth-child(even) td{background:#fafcf8}
.mini-table tr:hover td{background:#f4f8f1}
.mini-table td.r,.mini-table th.r{text-align:right;font-variant-numeric:tabular-nums}
.mini-table input,.mini-table select{border:1px solid var(--line);border-radius:7px;padding:6px 8px;font-size:13.5px;width:100%;outline:none;background:#fff}
.mini-table input:focus,.mini-table select:focus{border-color:var(--gold)}
/* 详情页合计行（应付合计/应收合计/毛利）与配石货款行 */
.mini-table tr.sumrow td{background:linear-gradient(90deg,#eef5ec,#f7faf4);border-top:2px solid #cfdecb;border-bottom:none;padding:11px 10px;font-size:14.5px}
.mini-table tr.sumrow:hover td{background:linear-gradient(90deg,#eef5ec,#f7faf4)}
.mini-table tr.sumrow-vend td{background:#fdfaf1;border-bottom:1px solid #f0e8d2}
.calc-bar{position:sticky;bottom:0;background:linear-gradient(120deg,#0d2e23,#17452f);color:#fff;border-radius:12px;padding:14px 20px;display:flex;gap:20px;align-items:center;flex-wrap:wrap;margin-top:16px;box-shadow:0 -4px 20px rgba(13,46,35,.25)}
.calc-bar .ci{font-size:11px;color:#a9c0b2}
.calc-bar .cv{font-size:17px;font-weight:700;font-variant-numeric:tabular-nums;margin-top:2px}
.calc-bar .cv.big{color:#ffdd7a;font-size:21px}
.chain{display:flex;align-items:center;flex-wrap:wrap;gap:8px}
.cstep{background:linear-gradient(180deg,#ffffff,#f7faf6);border:1px solid #e2e8e0;border-radius:11px;padding:10px 14px;text-align:center;min-width:86px;box-shadow:0 1px 5px rgba(24,46,36,.06)}
.cstep .l{font-size:11px;color:var(--sub);letter-spacing:.4px}
.cstep .v{font-size:15.5px;font-weight:700;margin-top:4px;font-variant-numeric:tabular-nums}
.cstep.gold{background:linear-gradient(180deg,#fdf9ee,#f5ebcf);border-color:#ddc98f;box-shadow:0 2px 10px rgba(180,150,60,.16)}
.arrow{color:#b6c2ba;font-size:15px}
.img-big{max-width:340px;max-height:340px;border-radius:14px;border:1px solid var(--line);display:block;background:#f2f3ef;box-shadow:0 2px 10px rgba(24,46,36,.08)}
/* 可放大图片（缩略图/详情图） */
.zoomable{cursor:zoom-in;transition:transform .15s,box-shadow .15s}
.zoomable:hover{transform:scale(1.04);box-shadow:0 4px 18px rgba(24,46,36,.18);position:relative;z-index:5}
/* 全局灯箱按钮 */
.lb-arrow{width:46px;height:46px;border-radius:50%;border:none;background:rgba(255,255,255,.14);color:#fff;font-size:28px;cursor:pointer;line-height:1;transition:.15s}
.lb-arrow:hover{background:rgba(255,255,255,.32)}
.lb-close{position:absolute;top:16px;right:20px;width:42px;height:42px;border-radius:50%;border:none;background:rgba(255,255,255,.14);color:#fff;font-size:22px;cursor:pointer;transition:.15s}
.lb-close:hover{background:rgba(255,255,255,.32)}
.up-area{border:2px dashed #cfd8d0;border-radius:12px;padding:18px;text-align:center;color:var(--sub);cursor:pointer;background:#fafbf8;font-size:12.5px;transition:border-color .15s,background .15s}
.up-area.drag{border-color:var(--green);background:#eef5f0}
.up-area img{max-width:150px;max-height:150px;border-radius:10px;margin-top:8px}
.img-item{position:relative;display:inline-block}
.img-item img{width:110px;height:110px;object-fit:cover;border-radius:10px;border:1px solid var(--line);display:block;background:#f2f3ef}
.img-item .img-del{position:absolute;top:-8px;right:-8px;width:20px;height:20px;border-radius:50%;border:none;background:#c0392b;color:#fff;font-size:13px;line-height:1;cursor:pointer;box-shadow:0 2px 6px rgba(0,0,0,.2)}
.img-item .img-del:hover{background:#96281b}
/* 选项设置拖拽 */
.optchip{display:inline-flex;align-items:center;gap:6px;background:#f3f6f2;border:1px solid var(--line);border-radius:16px;padding:5px 8px 5px 14px;font-size:13px;cursor:grab;user-select:none}
.optchip:active{cursor:grabbing}
.optchip.dragging{opacity:.45;border-style:dashed}
.alert{background:#fdf1ef;border:1px solid #f0c9c2;border-left:4px solid var(--red);border-radius:10px;padding:11px 15px;font-size:13px;color:#7c2d24;margin-bottom:14px;line-height:1.6}
.rate-row{display:flex;align-items:center;justify-content:space-between;padding:9px 0;border-bottom:1px dashed #eef0ea;font-size:13px;gap:10px}
.rate-row .k{color:var(--ink)}
.rate-row input{width:100px;border:1px solid var(--line);border-radius:7px;padding:7px 10px;font-size:13px;text-align:right;outline:none;font-variant-numeric:tabular-nums}
.rate-row input:focus{border-color:var(--gold);box-shadow:0 0 0 3px rgba(201,162,39,.15)}
/* 登录页 */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(160deg,#0d2e23 0%,#14513d 55%,#1a6a4e 100%)}
.login-box{background:#fff;border-radius:18px;padding:36px 34px 30px;width:360px;box-shadow:0 24px 60px rgba(0,0,0,.35)}
.login-box .t1{font-size:20px;font-weight:700;text-align:center}
.login-box .t2{font-size:11.5px;color:var(--gold);text-align:center;letter-spacing:3px;margin:6px 0 22px;font-weight:600}
.login-box input{width:100%;border:1px solid var(--line);border-radius:10px;padding:12px 14px;font-size:14px;margin-bottom:13px;outline:none}
.login-box input:focus{border-color:var(--green)}
.login-box .btn-p{width:100%;padding:12px;font-size:14px}
.login-hint{font-size:11.5px;color:var(--sub);text-align:center;margin-top:14px}
.login-box .remember{display:flex;align-items:center;gap:7px;font-size:12.5px;color:#4a5a52;margin:-2px 0 14px;cursor:pointer;user-select:none}
.login-box .remember input{width:auto;margin:0;padding:0;accent-color:#17452f;transform:scale(1.2);cursor:pointer}
/* 表单占位提示统一浅灰（含下拉的"如：xxx"空值提示） */
.fm input::placeholder,.tools input::placeholder,#f_engr::placeholder{color:#9aa39c;opacity:1}
.fm select.ph{color:#9aa39c}
/* 打印 */
@media print{
  /* 打印时清掉 100vh 撑高：否则打印文档至少一整页高，纸张留边距就溢出成 2 页 */
  html,body,.app{min-height:0!important;height:auto!important;overflow:visible!important}
  .side,.no-print,.tools,.pager{display:none!important}
  .main{margin:0;padding:0}
  body{background:#fff}
  .panel{box-shadow:none;border:1px solid #ddd;padding:0}
  .print-title{text-align:center}
}
@media (max-width:900px){.kpis{grid-template-columns:repeat(2,1fr)}.grid2{grid-template-columns:1fr}.fm{grid-template-columns:repeat(2,1fr)}.side{width:64px}.side .t1,.side .t2,.side-foot,.nav a span.tx{display:none}.nav a{justify-content:center;font-size:16px}.main{margin-left:64px;padding:14px}}
/* v1.7.213 窄窗口自适应：侧边栏占 214px，视口 1200px 以下内容区已不足 960px，
   双列 grid 提前堆叠为单列（含内联 style 指定列宽的 grid2），防止表格被挤成竖排字 */
@media (max-width:1200px){
  .grid2{grid-template-columns:1fr}
  .grid2[style]{grid-template-columns:1fr !important}
  .grid2>*{min-width:0}
  .kvgrid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:640px){
  .kvgrid{grid-template-columns:minmax(0,1fr)}
}

/* ===== v1.7.216 全局自适应：所有页面适配窗口/显示器宽度，不出现横向破版 ===== */
/* 1) 网格子项可收缩：>1200px 的中等窗口里，双列布局不再被宽表（white-space:nowrap）撑破页面；
      窄表在面板内横向滚动，页面本身不出横向滚动条 */
.grid2>*{min-width:0;max-width:100%}
.panel{overflow-x:auto;-webkit-overflow-scrolling:touch}
/* 订单表单例外：面板内是底部吸附算价条（sticky 对视口），开 overflow 会失效 */
#orderForm{overflow:visible}
/* 2) KPI 卡中等窗口 2 列、手机 1 列（[style] 兜底覆盖个别页面内联的 4 列） */
@media (max-width:1100px){
  .kpis{grid-template-columns:repeat(2,1fr)}
  .kpis[style]{grid-template-columns:repeat(2,1fr) !important}
}
@media (max-width:640px){
  .kpis{grid-template-columns:1fr}
  .kpis[style]{grid-template-columns:1fr !important}
}

/* ===== v1.7.410 工厂进度卡片加宽 + 手机端基础适配 ===== */
/* 大屏每厂卡片至少 460px（画图工序四格 6 字标题放得下、徽章不盖数字）；中屏回落 340；手机单列 */
@media (max-width:1200px){ .fac-grid{grid-template-columns:repeat(auto-fill,minmax(400px,1fr))} }
@media (max-width:900px){ .fac-grid{grid-template-columns:repeat(auto-fill,minmax(320px,1fr))} }
@media (max-width:640px){
  .fac-grid{grid-template-columns:1fr}
  .pagehead{flex-direction:column;align-items:flex-start;gap:10px}
  .pagehead h1{font-size:19px}
}

/* ===== 配钻工作台 v1.7.69 ===== */
.stn-tabs{display:flex;gap:4px;background:#eef1ec;border-radius:12px;padding:4px;width:max-content}
.stn-tabs a{padding:9px 22px;border-radius:9px;font-size:13.5px;font-weight:700;color:var(--sub);text-decoration:none;display:flex;gap:8px;align-items:center}
.stn-tabs a.on{background:#fff;color:var(--green);box-shadow:0 1px 4px rgba(24,46,36,.12)}
.stn-tabs .n{background:#c0392b;color:#fff;border-radius:99px;font-size:11px;padding:1px 7px;font-weight:800}
.stn-tabs a.on .n{background:var(--green)}
.stn-card{background:var(--panel);border:1px solid #edf0e9;border-radius:16px;box-shadow:0 1px 3px rgba(24,46,36,.05),0 6px 22px rgba(24,46,36,.06);margin-bottom:18px;overflow:hidden}
.stn-card:hover{box-shadow:0 2px 6px rgba(24,46,36,.07),0 10px 30px rgba(24,46,36,.1)}
.stn-head{display:grid;grid-template-columns:30px minmax(150px,175px) minmax(300px,1fr) minmax(0,auto) 132px 22px;gap:16px;align-items:center;padding:12px 20px;border-bottom:1px solid #f0f2ec;background:linear-gradient(180deg,#fcfdfb,#f8faf6)}
.stn-no{font-size:17px;font-weight:800;color:var(--green);text-decoration:none;letter-spacing:.5px}
.stn-no:hover{text-decoration:underline}
.stn-meta{display:flex;gap:14px;flex-wrap:wrap;color:var(--sub);font-size:12.5px}
.stn-meta b{color:var(--ink);font-weight:700}
.stn-chip{padding:3px 11px;border-radius:99px;font-size:12px;font-weight:700;white-space:nowrap}
.stn-due-ok{background:#eef7f0;color:var(--green)}
.stn-due-soon{background:#fdf3e0;color:#b8860b}
.stn-due-late{background:#fbeeec;color:var(--red)}
/* v1.7.115 配石小计升级为金额胶囊：米金底 + 大号金额，一眼看到本单货款 */
.stn-sub{margin-left:auto;text-align:right;background:linear-gradient(120deg,#fdf7e9,#faf1d9);border:1.5px solid #ecd9a8;border-radius:12px;padding:7px 16px 8px;box-shadow:0 2px 8px rgba(138,90,0,.1)}
.stn-sub .l{font-size:11px;color:#a0802e;letter-spacing:1.5px;font-weight:700}
.stn-sub .v{font-size:23px;font-weight:800;color:#8a5a00;font-variant-numeric:tabular-nums;line-height:1.15}
.stn-body{display:flex;gap:22px;padding:18px 22px;align-items:flex-start}
.stn-gallery{width:264px;flex:none}
.stn-main{width:264px;height:264px;border-radius:12px;background:#f6f7f4;border:1px solid #eef0ea;display:flex;align-items:center;justify-content:center;cursor:zoom-in;overflow:hidden}
.stn-main img{max-width:100%;max-height:100%;object-fit:contain}
.stn-thumbs{display:flex;gap:8px;margin-top:8px;flex-wrap:wrap}
.stn-thumbs img{width:52px;height:52px;object-fit:cover;border-radius:8px;border:2px solid transparent;cursor:pointer;background:#f6f7f4}
.stn-thumbs img.on{border-color:var(--green)}
.stn-editor{flex:1;min-width:0}
.stn-table{width:100%;border-collapse:collapse;font-size:14px}
.stn-table th{color:#66736a;font-weight:700;text-align:left;padding:9px 12px;background:#f7f9f4;font-size:12.5px;letter-spacing:.6px}
.stn-table th:first-child{border-radius:8px 0 0 8px}
.stn-table th:last-child{border-radius:0 8px 8px 0}
.stn-table td{padding:10px 12px;border-bottom:1px solid #f0f2ec}
.stn-table tr.stn-row:hover td{background:#fafcf8}
.stn-table input{border:1px solid var(--line);border-radius:8px;padding:8px 10px;font-size:13.5px;width:100%;outline:none;background:#fff;transition:border-color .15s,box-shadow .15s}
.stn-table input:focus{border-color:var(--green);box-shadow:0 0 0 3px rgba(20,81,61,.08)}
.stn-table .num input{text-align:right}
.stn-rsum{font-weight:800;color:#8a5a00;font-variant-numeric:tabular-nums;white-space:nowrap;text-align:right}
.stn-total td{background:linear-gradient(90deg,#f2f7ef,#f9fbf6);border-top:2px solid #cfdecb;border-bottom:none;padding:12px;font-size:14.5px}
.stn-total .v{font-weight:800;color:#8a5a00;font-size:16px;font-variant-numeric:tabular-nums}
.stn-foot{display:flex;align-items:center;gap:12px;padding:0 22px 18px}
.stn-note{color:var(--sub);font-size:12.5px;flex:1;min-width:0}
.stn-actions{display:flex;gap:10px;margin-left:auto}
.stn-actions .btn{padding:11px 24px;font-size:14.5px;border-radius:10px}
.stn-done-badge{display:inline-flex;align-items:center;gap:7px;background:#e8f5ee;color:var(--green);font-weight:800;font-size:13px;padding:6px 14px;border-radius:99px}
.stn-info{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:14px 20px}
.stn-info .k{color:var(--sub);font-size:11px;letter-spacing:1.5px;margin-bottom:4px}
.stn-info .v{font-size:14px;font-weight:700}
@media (max-width:1100px){.stn-body{flex-direction:column;align-items:stretch}.stn-gallery{width:100%}.stn-main{width:100%;height:300px}}
.stn-table select{border:1px solid var(--line);border-radius:8px;padding:8px 10px;font-size:13.5px;width:100%;outline:none;background:#fff;transition:border-color .15s,box-shadow .15s;font-family:inherit;color:var(--ink)}
.stn-table select:focus{border-color:var(--green);box-shadow:0 0 0 3px rgba(20,81,61,.08)}
.stn-del{border:1px solid #f0d4ce;background:#fff;color:#c0392b;width:26px;height:26px;border-radius:8px;font-size:14px;line-height:1;cursor:pointer;transition:.15s}
.stn-del:hover{background:#fdecea;border-color:#eecac4}
.stn-mv{border:1px solid var(--line);background:#fff;color:var(--sub);width:26px;height:26px;border-radius:8px;font-size:13px;line-height:1;cursor:pointer;transition:.15s;margin-right:2px}
.stn-mv:hover{border-color:var(--green);color:var(--green);background:#f6faf5}
.stn-addrow{display:block;width:100%;margin-top:10px;padding:10px;border:1.5px dashed #c9d6c9;border-radius:10px;background:#fbfcf9;color:var(--sub);font-size:14px;font-weight:600;cursor:pointer;transition:.15s}
.stn-addrow:hover{border-color:var(--green);color:var(--green);background:#f6faf5}
.stn-ocr{display:block;width:100%;margin-top:8px;padding:10px;border:1.5px dashed #e0d3b8;border-radius:10px;background:#fdfbf4;color:#8a6d1a;font-size:14px;font-weight:600;cursor:pointer;transition:.15s}
.stn-ocr:hover{border-color:#b8860b;color:#b8860b;background:#fbf6e8}
.stn-ocr[disabled]{opacity:.55;cursor:wait}

/* ===== v1.7.72 送厂闭环 + 手机适配 ===== */
.stn-send{display:inline-flex;align-items:center;gap:6px;background:linear-gradient(120deg,#f39c12,#e67e22);color:#fff;border:none;border-radius:10px;padding:10px 20px;font-size:13.5px;font-weight:800;cursor:pointer;box-shadow:0 3px 10px rgba(230,126,34,.35);white-space:nowrap}
.stn-send:hover{filter:brightness(1.08)}
/* v1.7.115 送厂胶囊加醒目：暖橙渐变底 + 加粗描边 + 投影 */
.stn-fac{display:inline-flex;align-items:center;gap:6px;background:linear-gradient(120deg,#fff3e2,#ffe9cc);border:1.5px solid #eec590;color:#9a4d12;border-radius:10px;padding:7px 15px;font-size:13.5px;font-weight:800;white-space:nowrap;box-shadow:0 2px 6px rgba(230,126,34,.14)}
.stn-chip.stn-ok{background:#e8f5ee;color:#1d7a4f}
.stn-chip.stn-sent{background:#fff3e0;color:#b05e1e}
@media (max-width:760px){
  .stn-head{grid-template-columns:30px 1fr auto 22px;grid-template-areas:"pick id status ar" ". meta meta meta";row-gap:6px;padding:12px 14px;gap:10px}
  .stn-head>.stn-pick,.stn-head>.stn-pick-sp{grid-area:pick}
  .stn-head>.stn-id{grid-area:id}
  .stn-head>.stn-meta{grid-area:meta}
  .stn-head>.stn-status{grid-area:status}
  .stn-head>.stn-sub{display:none}
  /* v1.7.238 扁平卡片头（月度结算等）的本单小计在手机端保留显示 */
  .stn-head.stn-flat>.stn-sub{display:block}
  .stn-head>.stn-ar{grid-area:ar}
  /* v1.7.284 手机端配石表单：纵向卡片内表单必须占满宽度，表格横向滚动（否则被 overflow:hidden 裁掉无法使用） */
  .stn-body{align-items:stretch}
  .stn-body form{display:block;width:100%;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
  .stn-table{min-width:680px}
  .stn-main{height:240px}
  .stn-actions{flex-wrap:wrap}
  .stn-actions .btn{flex:1;min-width:130px;text-align:center}
  .panel{overflow-x:auto}
}

/* ===== v1.7.75 月度结算改版 ===== */
.stn-table .r{text-align:right;font-variant-numeric:tabular-nums}
.stn-bill{display:flex;align-items:center;gap:18px;flex-wrap:wrap;background:linear-gradient(100deg,#175640,#26744f);color:#fff;border-radius:14px;padding:18px 24px;margin-top:4px;box-shadow:0 8px 22px rgba(23,86,64,.28)}
.stn-bill .t{font-size:13px;letter-spacing:2px;opacity:.85;font-weight:700}
.stn-bill .v{font-size:24px;font-weight:800;font-variant-numeric:tabular-nums}
.stn-bill .x{margin-left:auto;font-size:12px;opacity:.75}
@media (max-width:760px){.stn-bill{padding:14px 16px}.stn-bill .v{font-size:20px}.stn-bill .x{margin-left:0;width:100%}}

/* ── 详情页配钻状态横幅（醒目条带） ── */
.stnb{display:flex;align-items:center;gap:12px;border-radius:10px;padding:10px 14px;margin-top:12px;flex-wrap:wrap}
.stnb .stnb-ico{font-size:18px;line-height:1}
.stnb .stnb-tx{flex:1;display:flex;flex-direction:column;gap:1px;min-width:180px}
.stnb .stnb-tx b{font-size:14px;letter-spacing:.5px}
.stnb .stnb-tx i{font-style:normal;font-size:12px;opacity:.82}
.stnb-wait{background:#fff4e5;border:1.5px solid #f5cba0;color:#a35400}
.stnb-wait .stnb-ico{color:#e67e22}
.stnb-done{background:#e9f6ee;border:1.5px solid #bfe3cb;color:#1e7a34}
.stnb-done .stnb-ico{color:var(--green)}
.stnb-skip{background:#f4f5f2;border:1.5px dashed #c8cfc5;color:#6b776a}

/* ===== v1.7.84 订单表单三区分区（接单 / 工厂生产 / 出货结算）===== */
.stagebar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px 16px;margin-bottom:12px}
.sb-t{font-size:11.5px;font-weight:800;color:var(--sub);letter-spacing:1px;margin-right:2px}
.sbar-it{display:flex;align-items:center;gap:6px;font-size:12.5px;font-weight:700;color:#93a09a;white-space:nowrap}
.sbar-it i{width:20px;height:20px;border-radius:50%;background:#eef1ec;color:#93a09a;display:flex;align-items:center;justify-content:center;font-style:normal;font-size:11.5px;font-weight:800}
.sbar-it.on{color:var(--green)}
.sbar-it.on i{background:var(--green);color:#fff}
.sbar-ln{flex:1;min-width:18px;height:2px;background:#e4e9e4;border-radius:2px}
.sbar-ln.on{background:var(--green)}
.stage{border-left-width:4px !important;border-radius:0 10px 10px 0 !important}
.stage1{border-left-color:#1c5fa8 !important}
.stage2{border-left-color:#0e8a72 !important}
.stage3{border-left-color:#b07514 !important}
.stage1>.st{background:#eef4fb;border-left-color:#1c5fa8;color:#1c5fa8}
.stage2>.st{background:#e9f6f2;border-left-color:#0e8a72;color:#0b6e5a}
.stage3>.st{background:#fdf6e8;border-left-color:#b07514;color:#a06a10}
.stg-tag{display:inline-flex;min-width:22px;height:22px;border-radius:50%;color:#fff;align-items:center;justify-content:center;font-size:12px;font-weight:800;margin-right:4px;background:rgba(0,0,0,.18)}
.stage1>.st .stg-tag{background:#1c5fa8}
.stage2>.st .stg-tag{background:#0e8a72}
.stage3>.st .stg-tag{background:#b07514}
.stg-sub{font-size:11.5px;font-weight:600;opacity:.72;margin-left:8px;letter-spacing:0}
.stg-ar{margin-left:auto;font-size:11px;opacity:.55;transition:transform .15s}
.stage.collapsed>.st .stg-ar{transform:rotate(-90deg)}
/* v1.7.237 窄屏阶段条规整：标题行(标签+标题+箭头)，副标题整行下移不再中间折行 */
@media (max-width:760px){
  .st.stage-hd{display:flex;flex-wrap:wrap;align-items:center;gap:3px 8px}
  .st.stage-hd .stg-ar{margin-left:auto}
  .st.stage-hd .stg-sub{flex:1 1 100%;margin-left:30px}
}
.stage>.stage-bd{margin-top:12px}
.stage.collapsed>.stage-bd{display:none}
.stage-hd{cursor:pointer;user-select:none}
.inn-sec{margin-top:16px;padding-top:12px;border-top:1px dashed var(--line)}
.cmp-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:start}
@media (max-width:920px){.cmp-grid{grid-template-columns:1fr}}
/* —— 灯箱对比模式（v1.7.106）：大图停靠右侧，左侧内容并排核对 —— */
#lb.split{left:44vw;right:0;background:rgba(15,25,20,.45);justify-content:flex-end;padding-right:18px}
#lb.split #lbImg{max-width:40vw;max-height:88vh}
#lb.split #lbPrev{left:10px}
#lb.split #lbNext{right:10px}
#lb.split #lbMode{left:auto;right:78px;top:20px}

/* —— 石料表合计行：石重/货款双合计，简洁高端（v1.7.113） —— */
.stn-total .ct-total{text-align:right;font-weight:800;color:#3d5245;font-size:15.5px;font-variant-numeric:tabular-nums;white-space:nowrap}
.stn-unit{font-weight:500;font-size:12px;color:#8a9a8e;margin-left:3px}

.stn-table td.rsum{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.stn-total .cnt-total{text-align:right;font-weight:800;color:#3d5245;font-size:15.5px;font-variant-numeric:tabular-nums;white-space:nowrap}

/* ===== v1.7.115 批量工具条升级 + 存草稿回到原单高亮 ===== */
/* 批量工具条：实线描边 + 浅绿渐变底 + 深绿徽标，比原来的虚线灰条显眼 */
.stn-batch{display:flex;flex-wrap:wrap;gap:6px 8px;align-items:center;margin:0 0 10px;padding:10px 14px;border:1.5px solid #c8dabf;border-radius:10px;background:linear-gradient(90deg,#f0f7ea,#fbfdf8);font-size:14px;color:#43584a;box-shadow:0 1px 4px rgba(24,46,36,.05)}
.stn-batch-tag{display:inline-flex;align-items:center;background:var(--green);color:#fff;border-radius:7px;padding:3px 12px;font-size:13px;font-weight:800;letter-spacing:1.5px}
.stn-batch .stn-batch-apply{border-color:#b9cfae}
.stn-batch select,.stn-batch input{font-size:13.5px;padding:7px 10px}
/* 存草稿/送厂等操作后回到工作台：定位到原单并金框闪烁两轮提示 */
@keyframes stnHl{0%,100%{box-shadow:0 1px 3px rgba(24,46,36,.05),0 6px 22px rgba(24,46,36,.06)}30%,70%{box-shadow:0 0 0 4px rgba(233,168,42,.45),0 8px 28px rgba(233,168,42,.22)}}
.stn-hl{animation:stnHl 1.2s ease-in-out 2;border-color:#e9c76a}

/* ===== v1.7.118 工厂账号页面字体整体加大（body.rfac，仅 factory 角色生效） ===== */
body.rfac .mini-table{font-size:15px}
body.rfac .mini-table th{font-size:13.5px;padding:9px 10px}
body.rfac .mini-table td{padding:9px 10px}
body.rfac .mini-table input,body.rfac .mini-table select{font-size:14px;padding:7px 9px}
body.rfac .mini-table tr.sumrow td{font-size:15px}
body.rfac .subsect{font-size:16px;padding:9px 16px}
body.rfac .subsect .ss-x{font-size:14px}
body.rfac .secbox>.subsect{font-size:17.5px;padding:11px 18px}
body.rfac .secbox>.subsect .ss-x{font-size:14.5px}
body.rfac .panel h3.h-big{font-size:18.5px}
body.rfac .panel h3.h-big>span{font-size:13.5px !important}
body.rfac .fm input,body.rfac .fm select,body.rfac .fm textarea{font-size:14.5px;padding:9px 12px}
body.rfac .fm label{font-size:13px}
body.rfac .cstep .l{font-size:12.5px}
body.rfac .cstep .v{font-size:17px}
body.rfac .costlist{font-size:15px}
body.rfac .st{font-size:16px}

/* ===== v1.7.119 配钻工作台卡片折叠 + 批量勾选一键送厂 ===== */
/* 卡片默认折叠只显表头，点表头展开；箭头指示方向 */
.stn-card.fold .stn-body,.stn-card.fold .stn-foot,.stn-card.fold .stn-dates{display:none}
.stn-card.fold .stn-foot{display:none!important}
.stn-head{cursor:pointer}
.stn-head a,.stn-head button,.stn-head input,.stn-head select,.stn-head label,.stn-head form{cursor:auto}
.stn-ar{margin-left:10px;color:#8a9a8e;font-size:15px;transition:transform .18s;flex:none}
.stn-card.fold .stn-ar{transform:rotate(-90deg)}
.stn-card.fold{box-shadow:0 1px 3px rgba(24,46,36,.05)}
.stn-card.fold:hover{box-shadow:0 2px 8px rgba(24,46,36,.1)}
/* 勾选框 + 批量送厂条 */
.stn-pick{display:inline-flex;align-items:center;flex:none}
.stn-pick input{width:17px;height:17px;cursor:pointer;accent-color:var(--green)}
.stn-bulkbar{position:sticky;top:10px;z-index:30;display:flex;align-items:center;gap:14px;padding:10px 16px;border:1.5px solid #b9d3a8;background:linear-gradient(90deg,#eaf5e2,#fbfdf8);border-radius:12px;margin-bottom:14px;font-size:14px;color:#3d5245;box-shadow:0 4px 16px rgba(24,46,36,.1)}

/* ===== v1.7.333 石料配钻表适配：桌面加大行距；手机(≤720px)卡片化，不再挤压竖排 ===== */
#dtStones td{padding-top:11px;padding-bottom:11px}
#dtStones .fe-cnt,#dtStones .fe-ct,#dtStones .fe-price{min-width:64px}
@media (max-width:720px){
  #dtStones{display:block;background:transparent;border:none}
  #dtStones thead{display:none}
  #dtStones tbody,#dtStones tr{display:block;width:100%}
  #dtStones tr{border:1.5px solid #dfe5db;border-radius:12px;padding:6px 12px 8px;margin-bottom:10px;background:#fff}
  #dtStones tr:nth-child(even) td{background:transparent}
  #dtStones td{display:flex;justify-content:space-between;align-items:center;gap:12px;border:none;border-bottom:1px dashed #eef1ea;padding:8px 2px;text-align:right;font-size:14.5px;min-width:0}
  #dtStones td:last-child{border-bottom:none}
  #dtStones td::before{flex:0 0 auto;font-size:12px;font-weight:700;color:#66736a;letter-spacing:.5px;text-align:left}
  #dtStones td:nth-child(1)::before{content:'配石种类'}
  #dtStones td:nth-child(2)::before{content:'形状'}
  #dtStones td:nth-child(3)::before{content:'尺寸'}
  #dtStones td:nth-child(4)::before{content:'粒数'}
  #dtStones td:nth-child(5)::before{content:'石重'}
  #dtStones td:nth-child(6)::before{content:'出厂单价'}
  #dtStones td:nth-child(7)::before{content:'出厂小计'}
  #dtStones td:nth-child(8)::before{content:'供应商'}
  #dtStones td:nth-child(9)::before{content:'操作'}
  #dtStones tr.sumrow td::before,#dtStones td[colspan]::before{content:none!important}
  #dtStones tr.sumrow td{justify-content:flex-end;border-bottom:none;color:#2d5a41}
  #dtStones td .fe-cnt,#dtStones td .fe-ct,#dtStones td .fe-price,#dtStones td .fe-sup{width:110px!important}
  #dtStones td .rowdel{padding:8px 12px}
}

/* ===== v1.7.331 对客结算参数区网格卡：自动换行适配宽度，永不横向滚动 ===== */
.salegrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(148px,1fr));gap:8px;margin-bottom:12px}
.salegrid .scell{background:#fdf6e8;border:1px solid #ecd9b0;border-radius:10px;padding:7px 12px 8px;min-width:0}
.salegrid .scell .sl{font-size:11.5px;font-weight:700;color:#a06a10;opacity:.72;letter-spacing:.5px;margin-bottom:1px}
.salegrid .scell .sval{font-size:14.5px;font-weight:700;color:#7a5310;line-height:1.5;word-break:break-all}
.salegrid .scell .sval small{font-size:11.5px}

/* ===== v1.7.120 工厂结算构成行字体加大（覆盖模板内嵌 .costlist .ci 规则） + 签收页批量条 ===== */
body.rfac .costlist .ci{font-size:15px;padding:11px 14px}
body.rfac .costlist .ci .k small{font-size:13px}
body.rfac .costlist .ci.total .k{font-size:15.5px}
body.rfac .costlist .ci.total .v{font-size:24px}
body.rfac .stn-table{font-size:14px}
body.rfac .stn-table th{font-size:12.5px}
.stn-bulkbar .stn-bk{font-weight:800;color:#2f4a3a}
.stn-bulkbar button{font-weight:800}

/* ===== v1.7.147 配钻工作台卡片头重排：网格分区（勾选|单号款式|订单信息2×2|状态两行|金额|箭头），跨卡片纵向对齐 ===== */
.stn-head .stn-pick-sp{width:17px}
.stn-head .stn-id{display:flex;align-items:center;gap:8px;min-width:0}
.stn-head .stn-no{flex:none;font-size:16px}
.stn-head .tag-gold{flex:none;max-width:64px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.stn-meta{display:grid;grid-template-columns:auto auto;gap:4px 30px;font-size:12.5px;color:var(--sub);align-content:center}
.stn-meta span{display:inline-flex;align-items:center;gap:5px;white-space:nowrap}
.stn-meta i{font-style:normal;color:#8a9a8e;font-size:11.5px;letter-spacing:1px}
.stn-meta b{color:var(--ink);font-weight:700;font-variant-numeric:tabular-nums}
.stn-status{display:flex;flex-direction:column;align-items:flex-end;gap:5px;min-width:0}
.stn-st1,.stn-st2{display:flex;align-items:center;gap:8px;min-width:0}
.stn-st1 .stn-done-badge{font-size:12.5px;padding:4px 12px}
.stn-status .stn-fac{font-size:12.5px;padding:4px 11px}
.stn-status .stn-chip{font-size:11.5px;padding:3px 9px}
.stn-status .stn-send{padding:6px 14px;font-size:12.5px;border-radius:9px}
.stn-head .stn-sub{margin-left:0!important;min-width:0}

/* ===== v1.7.237 扁平卡片头修复：stones_settle/flows/receive/order 的 stn-head 不是 v1.7.147 网格的包裹结构，
     被塞进 30px 首列导致单号与胶囊文字重叠 —— 加 .stn-flat 恢复弹性换行布局 ===== */
.stn-head.stn-flat{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px}
.stn-head.stn-flat .stn-no{font-size:16px;flex:none}
.stn-head.stn-flat .stn-meta{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;color:var(--sub);white-space:nowrap}
.stn-head.stn-flat .stn-meta b{color:var(--ink);font-weight:700}
.stn-head.stn-flat .stn-sub{margin-left:auto!important;text-align:right}
.stn-head.stn-flat .stn-chip{flex:none}

/* ===== v1.7.144 侧边栏字号：全账号基础 15/14px（比工厂小一号），工厂 rfac 保持 16/15px ===== */

/* ===== v1.7.131 ③ 退回/补配「实称重量」输入框醒目化（金色大框） ===== */
.stn-ctlab{display:inline-flex;align-items:center;gap:8px;font-size:14.5px;font-weight:800;color:#8a5a00;background:linear-gradient(120deg,#fdf3dd,#fbe9c4);border:2px solid #e2a13d;border-radius:99px;padding:6px 8px 6px 14px;box-shadow:0 2px 8px rgba(180,130,30,.18)}
.stn-ct{width:112px;padding:7px 10px;border:1.5px solid #d9a84e;border-radius:9px;font-size:15.5px;font-weight:800;text-align:right;background:#fffdf6;color:#8a5a00;outline:none}
.stn-ct:focus{border-color:#c97e12;box-shadow:0 0 0 3px #f6e3bd}
.stn-ct::placeholder{color:#c9a86a;font-weight:600}

/* ===== v1.7.143 select 跨浏览器统一外观：Safari/Mac 不再显示系统小步进框，自绘箭头 ===== */
select,.tools select,.fm select,.mini-table select,.stn-table select,.stn-batch select,.stn-head select{
  -webkit-appearance:none;-moz-appearance:none;appearance:none;
  background-color:#fff;
  background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%235a6b60' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 10px center;
  padding-right:30px}
select:disabled{opacity:.6}

/* ===== v1.7.149 配钻日期补录（管理员，历史单补录真实日期） ===== */
.stn-dates{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:14px 22px 18px;padding:11px 16px;background:#f7faf5;border:1.5px dashed #cfe0cb;border-radius:12px}
.stn-dates-tag{font-size:12.5px;font-weight:800;color:#2f5a41;letter-spacing:1px}
.stn-dates label{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:#5a6b5e}
.stn-dates input[type=date]{padding:5px 8px;border:1.5px solid var(--line);border-radius:8px;font-size:12.5px;background:#fff;color:var(--ink)}
.stn-dates .stn-dates-hint{font-size:11.5px;color:#8a9a8e}
.stn-done-date{display:inline-flex;align-items:center;gap:6px;margin-right:auto;font-size:12.5px;color:#5a6b5e}
.stn-done-date input[type=date]{padding:6px 9px;border:1.5px solid var(--line);border-radius:8px;font-size:12.5px;background:#fff;color:var(--ink)}
@media (max-width:760px){
  .stn-dates{margin:12px 14px 16px}
  .stn-dates .stn-dates-hint{display:none}
}

/* ============================================================
   v1.7.235 手机端适配（≤768px）
   桌面端完全不受影响：所有规则都在窄屏媒体查询内
   组成：① 顶部品牌条（☰）② 左侧栏 → 抽屉 ③ 底部导航 ④ 列表卡片化
   ============================================================ */
.mtop,.mbnav,.mnav-mask{display:none}
@media (max-width:768px){
  body{padding-top:50px;font-size:15px}
  /* ① 顶部品牌条 */
  .mtop{display:flex;position:fixed;top:0;left:0;right:0;height:50px;z-index:60;align-items:center;gap:10px;
    padding:0 12px;background:linear-gradient(120deg,#0d2e23,#17452f);color:#fff;box-shadow:0 2px 10px rgba(13,46,35,.22)}
  .mtop-b{flex:none;width:38px;height:34px;border:none;border-radius:9px;background:rgba(255,255,255,.13);color:#fff;font-size:18px;line-height:1;cursor:pointer}
  .mtop-b:active{background:rgba(255,255,255,.26)}
  .mtop-t{font-size:15px;font-weight:700;letter-spacing:1.5px;color:#fff}
  .mtop-t span{margin-left:5px;color:var(--gold);font-size:11px;letter-spacing:2px}
  .mtop-u{margin-left:auto;font-size:12px;color:#b9c8bf;max-width:90px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  /* ② 侧边栏 → 左侧抽屉（覆盖 900px 的图标栏规则） */
  .app{display:block}
  .side{width:272px;max-width:82vw;transform:translateX(-100%);transition:transform .22s ease;z-index:70}
  body.nav-open .side{transform:none;box-shadow:8px 0 34px rgba(0,0,0,.4)}
  body.nav-open{overflow:hidden}
  .side .logo{padding:16px 16px 14px}
  .side .t1,.side .t2{display:block!important}
  .side-foot{display:block!important}
  .nav{padding:10px 9px}
  .nav a{justify-content:flex-start!important;font-size:13.5px!important;gap:10px;white-space:nowrap!important}
  .nav a .tx{white-space:nowrap!important}
  .nav a span.tx{display:inline!important}
  .nav>a,.nav>.ng>a{padding:10px 12px;letter-spacing:.5px}
  .nav .subnav a,.subnav a{font-size:12.5px;padding:8px 12px 8px 30px}
  .nav-sec{margin:10px 4px 4px;padding-top:8px}
  .mnav-mask{display:block;position:fixed;inset:0;z-index:65;background:rgba(8,20,15,.52);opacity:0;pointer-events:none;transition:opacity .2s}
  body.nav-open .mnav-mask{opacity:1;pointer-events:auto}
  /* ③ 内容区让位（底部留出导航高度） */
  .main{margin-left:0!important;padding:14px 12px 82px!important}
  .pagehead{flex-direction:column;align-items:stretch;gap:10px;margin-bottom:12px}
  .pagehead h1{font-size:18px}
  .pagehead .desc{font-size:12px}
  .panel{padding:14px 13px;border-radius:12px;margin-bottom:12px}
  .panel h3.h-big{font-size:16px;padding:7px 12px}
  .kpis{gap:10px}
  .grid2{gap:10px}
  /* 工具条/筛选：两列自动换行，宽控件不溢出 */
  .tools{gap:8px}
  .tools input,.tools select{flex:1 1 44%;min-width:0;font-size:14px;padding:9px 11px}
  .tools .btn{flex:1 1 100%;padding:11px}
  .tools>span[style]{flex:1 1 100%!important;margin-left:0!important;flex-wrap:wrap}
  /* 表单：手机一律单列 */
  .fm{grid-template-columns:1fr!important;gap:11px}
  .fm input,.fm select,.fm textarea{padding:10px 12px;font-size:15px}
  .btn{padding:10px 16px}
  /* 底部吸附算价条上移，避免被底部导航盖住 */
  .calc-bar{bottom:78px;padding:12px 14px;gap:14px}
  .calc-bar .cv{font-size:16px}
  .calc-bar .cv.big{font-size:19px}
  /* ④ 底部导航 */
  .mbnav{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:60;height:62px;
    background:#fff;border-top:1px solid var(--line);box-shadow:0 -2px 12px rgba(24,46,36,.08);
    padding-bottom:env(safe-area-inset-bottom)}
  .mbnav a,.mbnav .mb-more{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
    border:none;background:none;padding:0;color:#7b8a81;font-size:11px;font-weight:600;letter-spacing:.3px;position:relative}
  .mbnav a .i,.mbnav .mb-more .i{font-size:19px;line-height:1}
  .mbnav a.on{color:var(--green)}
  .mbnav a.on .i{color:var(--green)}
  .mbnav a.on::after{content:"";position:absolute;top:0;width:26px;height:3px;border-radius:0 0 3px 3px;background:var(--gold)}
  .mbnav .n{position:absolute;top:5px;left:calc(50% + 4px);background:#c0392b;color:#fff;font-size:10px;font-weight:800;line-height:16px;border-radius:99px;padding:0 5px;min-width:16px;text-align:center}
  /* ⑤ 订单列表 → 卡片（仅 orders.html 的表加了 ord-cards） */
  .tb-orders.ord-cards{border:none;background:none;border-radius:0;overflow:visible}
  .tb-orders.ord-cards thead{display:none}
  .tb-orders.ord-cards tbody{display:block}
  .tb-orders.ord-cards tbody tr{display:flex;flex-wrap:wrap;align-items:center;gap:5px 10px;
    background:#fff;border:1px solid #e4e9e0;border-radius:12px;padding:12px;margin-bottom:10px;
    box-shadow:0 1px 4px rgba(24,46,36,.06)}
  .tb-orders.ord-cards tbody tr:hover{background:#fff}
  .tb-orders.ord-cards tbody tr:last-child{margin-bottom:0}
  .tb-orders.ord-cards td{border:none!important;padding:0!important;white-space:normal;font-size:13px;background:none!important}
  .tb-orders.ord-cards .c-ck{order:0;flex:none;width:20px}
  .tb-orders.ord-cards .c-img{order:1;flex:none}
  .tb-orders.ord-cards .c-img img.thumb,.tb-orders.ord-cards .c-img .thumb{width:54px;height:54px;border-radius:9px}
  .tb-orders.ord-cards .c-no{order:2}
  .tb-orders.ord-cards .c-no .ord-no{font-size:16.5px}
  .tb-orders.ord-cards .c-cust{order:3;font-size:14.5px}
  .tb-orders.ord-cards .c-st{order:4;margin-left:auto;text-align:right}
  .tb-orders.ord-cards .c-dstay{order:4;font-size:12.5px;color:var(--sub);font-variant-numeric:tabular-nums}
  .tb-orders.ord-cards .c-st .pill{font-size:12.5px;padding:4px 11px}
  .tb-orders.ord-cards .ord-date{order:5;color:var(--sub);font-size:12.5px;font-variant-numeric:tabular-nums}
  .tb-orders.ord-cards .ord-sub{order:6;color:var(--sub);font-size:12.5px}
  .tb-orders.ord-cards .c-due{order:7;font-size:12.5px}
  /* 强制换行伪元素：日期/工厂/工期固定第二行，卡片版式统一不随内容漂移 */
  .tb-orders.ord-cards tbody tr::before{content:"";flex:0 0 100%;height:0;order:5}
  .tb-orders.ord-cards .ord-date{margin-top:3px}
  /* v1.7.273 手机卡片恢复显示备注（旧版 820px 以下 .ord-note 被 display:none 隐藏）；
     空备注（只有 – 占位）不显示灰条，避免整卡噪音 */
  .tb-orders.ord-cards .ord-note{display:block;order:8;flex:1 1 100%;max-width:none;font-size:12.5px;
    background:#f7f9f5!important;border-radius:8px;padding:7px 10px!important;margin-top:2px}
  .tb-orders.ord-cards .ord-note.ord-empty{display:none}
  .tb-orders.ord-cards .ord-ops{order:9;flex:1 1 100%;display:flex;gap:8px;justify-content:flex-end;margin-top:2px}
  .tb-orders.ord-cards .op-btn{padding:7px 12px;font-size:12.5px;margin:0}
  /* v1.7.241 画图账号：设计要求醒目 + 师傅备注输入列 */
  .tb-orders .c-dreq{color:var(--ink)!important;font-weight:700;white-space:normal}
  .tb-orders.ord-cards .c-dnote{order:8;flex:1 1 100%;margin-top:2px}
  .tb-orders.ord-cards .c-dnote input{width:100%!important}
  /* 其它宽表（汇总/配钻/台账等）在面板内横向滚动，不撑破页面 */
  .panel{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .mini-table{font-size:13px}
  .mini-table th,.mini-table td{padding:8px 9px}
  .stn-bulkbar{top:6px;flex-wrap:wrap;gap:8px}
  /* 登录页（独立模板，不走 base 外壳） */
  .login-wrap{padding:18px}
  .login-box{width:min(360px,calc(100vw - 36px));padding:26px 22px 24px}
}
/* 打印时隐藏手机外壳 */
@media print{.mtop,.mbnav,.mnav-mask{display:none!important}body{padding-top:0!important}}
/* v1.7.244 工厂账号手机端侧边栏字号再小一号（覆盖移动断点的 13.5px !important） */
@media (max-width:900px){
  body.rfac .nav a{font-size:13px!important}
  body.rfac .nav .subnav a,body.rfac .subnav a{font-size:12px!important}
}
/* ===== v1.7.296 🔧 维修单模块 ===== */
.rp-chips{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}
.rp-chips a{display:inline-block;padding:6px 13px;border-radius:99px;border:1px solid var(--line);
  background:#fff;color:var(--sub);font-size:13px;text-decoration:none}
.rp-chips a.on{background:var(--green);border-color:var(--green);color:#fff;font-weight:700}
.rp-chips a b{font-weight:800}
.rp-pill{display:inline-block;padding:2px 9px;border-radius:99px;font-size:11.5px;font-weight:700;white-space:nowrap}
.rp-wait{background:#fdecea;color:#a32d2d}
.rp-doing{background:#fdf1d8;color:#8a5a00}
.rp-chk{background:#fff3d6;color:#8a5a00;border:1px solid #e8c87a}
.rp-ok{background:#e6f2ea;color:#14513d}
.rp-cust{background:#e7f0fa;color:#1c5fa8}
.rp-mut{color:var(--sub);font-size:12.5px}
.rp-note{font-size:12.5px;color:var(--sub);line-height:1.7;margin-top:8px}
.rp-f{display:block;font-size:12.5px;color:var(--sub);font-weight:700;margin-bottom:5px}
.rp-in,.rp-sel,.rp-ta{width:100%;border:1px solid var(--line);border-radius:8px;padding:8px 10px;
  font-size:13.5px;font-family:inherit;color:var(--ink);background:#fff}
.rp-in:focus,.rp-sel:focus,.rp-ta:focus{outline:2px solid #cfe0d8;border-color:#9dbfae}
.rp-in.sm{padding:5px 8px;font-size:12.5px}
.rp-row{margin-bottom:12px}
.rp-g2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.rp-g2>*{min-width:0}
@media (max-width:760px){.rp-g2{grid-template-columns:1fr}}
.rp-h3{font-size:15px;font-weight:700;margin-bottom:10px;letter-spacing:.5px}
.rp-h3 small{font-size:12px;color:var(--sub);font-weight:400;letter-spacing:0}
.rp-calc{background:#f7faf8;border:1px dashed #b9cfc3;border-radius:10px;padding:12px 14px}
.rp-cr{display:flex;justify-content:space-between;gap:10px;font-size:13.5px;padding:5px 0;border-bottom:1px dotted #dde5e0}
.rp-cr:last-child{border-bottom:0;font-weight:800;font-size:15px;color:var(--green);padding-top:9px}
.rp-cr.sub{border-bottom:0;padding:2px 0;font-size:12.5px;color:var(--sub);font-weight:400}
.rp-lock{background:#f7faf8;border:1px solid var(--line);border-radius:8px;padding:9px 11px;font-size:13px;color:var(--sub)}
.rp-lock b{color:var(--ink)}
.rp-tb{width:100%;border-collapse:collapse;font-size:13px}
.rp-tb th,.rp-tb td{padding:8px 9px;border-bottom:1px solid #f0f2ec;text-align:left;white-space:nowrap}
.rp-tb th{background:#f7f8f4;color:var(--sub);font-weight:600;font-size:12.5px}
.rp-tb td.r,.rp-tb th.r{text-align:right;font-variant-numeric:tabular-nums}
.rp-tb tr.sum td{background:#f6f3e8;font-weight:800}
.rp-tb tr.hi td{background:#fff8e8}
.rp-tb tr.hi td:first-child{box-shadow:inset 3px 0 0 #d4ac2b}
.rp-tb tr.rep td{background:#fdf9ef}
.rp-tb tr.rep td:first-child{box-shadow:inset 3px 0 0 #B9770E}
.rp-tb tr.done td{background:#f2f8f4}
.rp-tb tr.done td:first-child{box-shadow:inset 3px 0 0 #1a7a4c}
.rp-act{display:flex;gap:6px;flex-wrap:wrap}
.rp-mini{font-size:11.5px;color:var(--sub)}
.rp-warn{background:#fdf9ef;border:1px solid #ecd9a8;border-left:4px solid #B9770E;border-radius:9px;
  padding:9px 14px;font-size:12.5px;color:#6a5518;margin-bottom:14px;line-height:1.7}
.rp-flow{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12.5px;color:var(--sub);margin-top:8px}
.rp-flow b{color:var(--ink)}
.rp-imgbox{display:flex;gap:10px;flex-wrap:wrap;margin-top:8px}
.rp-imgbox .it{position:relative;width:104px}
.rp-imgbox img{width:104px;height:104px;object-fit:cover;border-radius:8px;border:1px solid var(--line);display:block}
.rp-imgbox form{position:absolute;top:4px;right:4px}
.rp-imgbox .del{border:0;background:rgba(0,0,0,.55);color:#fff;border-radius:6px;padding:1px 6px;cursor:pointer;font-size:12px}
@media print{@page{size:A5 landscape;margin:4mm}}
/* ===== v1.7.298 维修金料统计条（驾驶舱 / 维修单列表）===== */
.rp-agg{display:flex;gap:10px 18px;flex-wrap:wrap;align-items:center;background:#fbf8ef;
  border:1px solid #ecdfc0;border-left:4px solid #B9770E;border-radius:10px;padding:10px 14px;margin:12px 0}
.rp-agg .t{font-weight:800;color:#8a5a00;font-size:13.5px;white-space:nowrap}
.rp-agg .i{font-size:13px;color:var(--sub);white-space:nowrap}
.rp-agg .i b{font-size:14px;color:var(--text);font-weight:800}
.rp-agg .i.hi b{color:#B9770E}
.rp-agg .i.pay b{color:#14513d}
.rp-agg .w{font-size:12.5px;color:#a32d2d;font-weight:700;white-space:nowrap}
.rp-agg .n{flex-basis:100%;font-size:11.5px;color:var(--sub)}
@media (max-width:640px){.rp-agg{gap:6px 14px;padding:9px 11px}.rp-agg .i{font-size:12.5px}}

/* ── v1.7.320 CAD 跟进分段控件：阶段│已出图│已发客户 连成一体胶囊条，单行整齐 ── */
.seg{display:inline-flex;align-items:stretch;height:30px;border-radius:999px;border:1.5px solid #e0e5e1;background:#fff;overflow:hidden;white-space:nowrap;vertical-align:middle;box-shadow:0 1px 3px rgba(30,50,40,.07)}
.seg-stage{display:inline-flex;align-items:center;padding:0 14px;font-size:12.5px;font-weight:800;letter-spacing:.5px}
.seg-btn{display:inline-flex;align-items:center;justify-content:center;min-width:88px;padding:0 14px;border:0;border-left:1.5px solid #e8ece9;background:#fff;color:#8a958c;font-size:12.5px;font-weight:800;letter-spacing:.5px;cursor:pointer;line-height:1;font-family:inherit;transition:background .12s,color .12s;user-select:none}
.seg-btn:hover{background:#f2f5f3;color:#41544a}
.seg-btn:disabled{opacity:.65;cursor:default}
.seg-btn.on[data-field="issued"]{background:#1c5fa8;color:#fff}
.seg-btn.on[data-field="sent"]{background:#1a7a4c;color:#fff}

/* v1.7.322 石料签收 · 待签收卡片重排 */
.rcv-row{padding:14px 4px;border-bottom:1px dashed #eef1ea}
.rcv-top{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.rcv-top .stn-no{flex-shrink:0}
.rcv-meta{flex:1 1 auto;min-width:180px;font-size:13px;color:var(--sub);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rcv-meta b{color:var(--ink)}
.rcv-right{margin-left:auto;display:flex;align-items:center;gap:10px;flex-shrink:0;flex-wrap:wrap}
.rcv-amt{font-weight:800;color:#8a5a00;white-space:nowrap;font-size:13.5px}
.rcv-main{display:grid;grid-template-columns:104px 1fr;gap:12px;margin-top:10px;align-items:start}
.rcv-cads{display:flex;gap:8px;flex-wrap:wrap;align-items:flex-start}
.rcv-stones{background:#fafbf8;border:1px solid #eef1ea;border-radius:9px;padding:9px 12px;min-width:0}
.rcv-st-title{font-size:12px;font-weight:800;color:var(--sub);margin-bottom:6px;letter-spacing:.3px}
.rcv-pills{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
@media (max-width:720px){.rcv-main{grid-template-columns:1fr}.rcv-meta{white-space:normal}}

/* v1.7.323 备注/设计要求 点击文字即复制 */
.cp-note{cursor:copy;border-radius:6px;transition:background .12s}
.cp-note:hover{background:#fdf3d7;box-shadow:0 0 0 3px #fdf3d7}
@media (hover:none){.cp-note:active{background:#fdf3d7}}

/* v1.7.324 画图板行内备注（点击复制全文 / 双击自选文字） */
/* v1.7.325 备注独立成列（不再塞在阶段胶囊后）：加宽加高适配列内展示 */
.seg-note{max-width:210px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:600;color:#8a5a00;background:#fdf6e3;border:1px solid #f3e6c4;border-radius:6px;padding:3px 9px;display:inline-block;vertical-align:middle}
/* v1.7.389 居中确认弹窗（替代原生 confirm：原生固定窗口顶部且样式不可控） */
#cfmOv{position:fixed;inset:0;background:rgba(13,30,23,.45);display:none;align-items:center;justify-content:center;z-index:99990;padding:20px}
#cfmCard{background:var(--panel);color:var(--ink);border-radius:14px;box-shadow:0 18px 60px rgba(0,0,0,.28);padding:24px 26px 18px;max-width:min(480px,88vw);animation:cfmIn .16s ease-out}
@keyframes cfmIn{from{opacity:0;transform:translateY(-14px) scale(.97)}to{opacity:1;transform:none}}
#cfmMsg{line-height:1.75;font-size:14.5px;margin-bottom:20px;word-break:break-word}
#cfmBtns{display:flex;gap:10px;justify-content:flex-end}
#cfmOk{min-width:88px}#cfmNo{min-width:88px}

/* ===== v1.7.391 财务资金界面升级：英雄区+卡片化+弹窗编辑+记一笔分节重排 ===== */
.fin-hero{background:linear-gradient(135deg,#0d2e23 0%,#14513d 68%,#1a6b4f 100%);border-radius:16px;padding:22px 26px;color:#eaf3ed;margin-bottom:16px;box-shadow:0 10px 30px rgba(13,46,35,.25);position:relative;overflow:hidden}
.fin-hero::after{content:"";position:absolute;right:-60px;top:-60px;width:230px;height:230px;border-radius:50%;background:rgba(201,162,39,.13)}
.fin-hero .fh-top{font-size:12px;color:#9fbfae;letter-spacing:1.5px}
.fin-hero .fh-big{font-size:32px;font-weight:800;color:#fff;font-variant-numeric:tabular-nums;letter-spacing:.5px;margin-top:5px}
.fin-hero .fh-sub{font-size:12.5px;color:#b9d4c4;margin-top:3px}
.fin-hero .fh-cells{display:flex;gap:38px;flex-wrap:wrap;margin-top:16px;position:relative;z-index:1}
.fin-hero .fh-cell .l{font-size:11.5px;color:#9fbfae}
.fin-hero .fh-cell .v{font-size:17px;font-weight:700;color:#ffe9a8;font-variant-numeric:tabular-nums;margin-top:3px}
.fin-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(225px,1fr));gap:12px}
.fin-card{background:var(--panel);border-radius:13px;border:1px solid #edf0e9;box-shadow:0 1px 3px rgba(24,46,36,.05),0 5px 18px rgba(24,46,36,.06);padding:14px 16px;transition:.18s}
.fin-card:hover{transform:translateY(-2px);box-shadow:0 8px 26px rgba(24,46,36,.13)}
.fin-card .ic{width:38px;height:38px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:19px;margin-bottom:9px}
.fin-card .nm{font-weight:800;font-size:14.5px}
.fin-card .nm a{color:var(--ink)}
.fin-card .nm a:hover{color:var(--green)}
.fin-card .tags{display:flex;gap:5px;margin-top:6px;flex-wrap:wrap}
.fin-card .tag{font-size:10.5px;color:var(--sub);background:#f3f5f0;border-radius:20px;padding:2px 9px}
.fin-card .bal{font-size:21px;font-weight:800;margin-top:9px;font-variant-numeric:tabular-nums}
.fin-card .bar{height:5px;border-radius:4px;background:#eef1ea;margin-top:9px;overflow:hidden}
.fin-card .bar i{display:block;height:100%;border-radius:4px;background:linear-gradient(90deg,#d4ac2b,#b08d1e)}
.fin-card .acts{display:flex;gap:7px;margin-top:11px;flex-wrap:wrap}
.fin-ic-bank{background:#eaf1fb}.fin-ic-wechat{background:#e8f7ee}.fin-ic-alipay{background:#eef2ff}
.fin-ic-cash{background:#fdf6e3}.fin-ic-credit{background:#fdeeee}.fin-ic-other{background:#f2f3ef}
/* v1.7.398 编辑账户弹窗改大气：更大的卡片/标题/输入框，聚焦描边，不再小气拥挤 */
.fin-modal{position:fixed;inset:0;background:rgba(13,30,23,.5);display:none;align-items:flex-start;justify-content:center;z-index:99995;padding:6vh 18px;overflow-y:auto;backdrop-filter:blur(2px)}
.fin-modal .fm-card{background:var(--panel);border-radius:20px;box-shadow:0 24px 80px rgba(0,0,0,.32);width:min(680px,94vw);padding:28px 30px 26px;animation:cfmIn .16s ease-out}
.fin-modal h3{font-size:18px;font-weight:800;margin-bottom:5px;letter-spacing:.5px}
.fin-modal .fmg{display:grid;grid-template-columns:1fr 1fr;gap:16px 20px;margin-top:18px}
.fin-modal .fmg label{font-size:12.5px;color:var(--sub);font-weight:700;display:flex;flex-direction:column;gap:6px;line-height:1.5}
.fin-modal .fmg .fin{width:100%;box-sizing:border-box;border:1.5px solid var(--line);border-radius:11px;padding:11px 14px;font-size:14.5px;background:#fff;color:var(--ink);outline:none;font-family:inherit;transition:border-color .12s,box-shadow .12s}
.fin-modal .fmg .fin:focus{border-color:var(--green);box-shadow:0 0 0 3px rgba(30,142,78,.13)}
.fin-modal .fmg .mini{font-weight:500}
.fin-modal .full{grid-column:1/-1}
.fin-modal .btn{padding:11px 22px;font-size:14px;border-radius:11px}
@media (max-width:560px){.fin-modal .fmg{grid-template-columns:1fr}}
.fin-sect{background:var(--panel);border-radius:14px;border:1px solid #edf0e9;box-shadow:0 1px 3px rgba(24,46,36,.05),0 6px 22px rgba(24,46,36,.07);padding:20px 22px;margin-bottom:14px}
.fin-sect .st{font-size:12px;font-weight:800;color:var(--gold);letter-spacing:2px;margin-bottom:15px;display:flex;align-items:center;gap:10px}
.fin-sect .st::after{content:"";flex:1;height:1px;background:var(--line)}
.fin-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(215px,1fr));gap:14px 18px}
.fin-grid label{font-size:12.5px;color:var(--sub);display:block}
.fin-grid input,.fin-grid select{width:100%;margin-top:6px;padding:9px 11px;border:1px solid var(--line);border-radius:9px;font-size:14px;background:#fff;color:var(--ink)}
.fin-grid input:focus,.fin-grid select:focus{outline:none;border-color:var(--green);box-shadow:0 0 0 3px rgba(20,81,61,.09)}
.fin-amt input{font-size:28px;font-weight:800;padding:7px 13px;font-variant-numeric:tabular-nums}
.fin-kindbar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}
.fin-kindbar a{border-radius:26px;padding:9px 20px;font-size:13.5px;font-weight:700;border:1.5px solid var(--line);color:var(--sub);background:var(--panel);transition:.15s}
.fin-kindbar a:hover{border-color:var(--green);color:var(--green)}
.fin-kindbar a.on{background:linear-gradient(120deg,#14513d,#1a6b4f);border-color:transparent;color:#fff;box-shadow:0 4px 14px rgba(20,81,61,.28)}
.fin-up{display:block;border:1.5px dashed var(--line);border-radius:12px;padding:16px;text-align:center;color:var(--sub);font-size:12.5px;cursor:pointer;transition:.15s;background:#fbfcf9}
.fin-up:hover{border-color:var(--green);color:var(--green);background:#f6faf7}
/* v1.7.465 凭证上传拖拽高亮 */
.fin-up.up-drag{border-color:var(--green);color:var(--green);background:#eef7f0;border-style:solid}

/* ===== v1.7.394 配钻卡片分层：状态色边条 + 结算页头部色带 + 折叠 ===== */
.stn-card{margin-bottom:20px}
.stn-card.st-ok{border-left:4px solid #2f8f62}
.stn-card.st-doing{border-left:4px solid #5b8dd6}
.stn-card.st-warn{border-left:4px solid #d9a441;box-shadow:0 1px 3px rgba(217,164,65,.16),0 6px 22px rgba(217,164,65,.16)}
.stn-head.stn-flat{cursor:pointer;background:linear-gradient(180deg,#f4f8f1,#ebf2e7);border-bottom:1px solid #e0e9d8;padding:13px 22px}
.stn-head.stn-flat a,.stn-head.stn-flat .stn-chip{cursor:auto}
.stn-flat-body{border-top:1px solid #f0f4ec}
.stn-card.fold .stn-flat-body{display:none}
.stn-flat-warn{background:#fffaf0;border-top:1px dashed #f0dfba;color:#b8860b;font-weight:600;font-size:12.5px;padding:9px 22px}
.stn-head.stn-flat .stn-ar{margin-left:10px;flex:none}
/* v1.7.395 单据页订单信息一行化 + 旧 stn-info 网格不再使用 */
.stn-oinfo{display:flex;flex-wrap:wrap;gap:6px 26px;align-items:baseline;font-size:13px;color:var(--sub)}
.stn-oinfo span{white-space:nowrap;display:inline-flex;gap:6px;align-items:baseline}
.stn-oinfo b{color:var(--ink);font-weight:700;font-size:13.5px}

/* ===== v1.7.403 订单编辑页版面整理：标签瘦身（说明移到小字）/ 两栏盒头统一 / 小节降噪 ===== */
#orderForm .fm label{display:flex;flex-direction:column;gap:1px;line-height:1.35}
#orderForm .fm label small{font-size:11px;font-weight:500;color:#8fa096;letter-spacing:0;line-height:1.35}
.fm.fm3{grid-template-columns:repeat(3,1fr)}
@media (max-width:920px){.fm.fm3{grid-template-columns:1fr 1fr}}
#orderForm .subsect{font-size:14.5px;background:linear-gradient(90deg,#e9efe7,#f7faf5);border-left-width:3px;padding:8px 14px;letter-spacing:.3px}
#orderForm .subsect .ss-x{font-weight:500;color:#7e9084;margin-left:auto}
.cmp-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(380px,1fr));gap:14px;align-items:start}
.cmp-hd{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;padding:10px 14px;border-left:4px solid transparent;border-radius:8px 8px 0 0}
.cmp-hd b{font-size:14.5px;font-weight:800;letter-spacing:.5px}
.cmp-hd small{font-size:12px;font-weight:500;flex:1 1 220px;min-width:0;line-height:1.5}
.cmp-hd.hd-fac{background:#eef4fb;border-left-color:#1c5fa8}
.cmp-hd.hd-fac b{color:#1c5fa8}
.cmp-hd.hd-fac small{color:#5a6b8c}
.cmp-hd.hd-sale{background:#fdf6e8;border-left-color:#b07514}
.cmp-hd.hd-sale b{color:#a06a10}
.cmp-hd.hd-sale small{color:#8a6d3b}
.cmp-body{margin-top:0;border:1.5px solid var(--line);border-top:none;border-radius:0 0 10px 10px;background:#fff;padding:13px 14px 14px}
.cmp-sep{width:100%;font-size:12px;font-weight:800;color:#a06a10;border-top:1px dashed #e5d3ab;padding-top:10px;letter-spacing:.3px}
/* v1.7.403 续：修 .fm 四列网格被 input 默认宽度撑破容器（订单编辑页双栏溢出的根因） */
#orderForm .fm .f{min-width:0}
#orderForm .fm input,#orderForm .fm select{min-width:0;width:100%}

/* ===== v1.7.424 今日金价：驾驶舱卡片 + 独立页（报价表 / 旧料表 / 走势图 / 设置） ===== */
.gq-card{background:var(--panel);border-radius:14px;box-shadow:var(--shadow);margin-bottom:14px;overflow:hidden;border:1px solid #edf0e9}
.gq-hd{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:9px 14px;background:linear-gradient(120deg,#7d1a22,#9c2b2b);color:#fff}
.gq-hd .gq-t{font-size:14.5px;font-weight:800;letter-spacing:1px}
.gq-hd .gq-upd{font-size:11.5px;color:#f0d9c8;font-variant-numeric:tabular-nums}
.gq-hd .gq-go{margin-left:auto;font-size:12px;font-weight:700;color:#ffe6b8}
.gq-tb{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}
.gq-tb th{background:#faf7f0;color:#8a7256;font-size:11.5px;font-weight:700;padding:6px 12px;text-align:right;border-bottom:1px solid var(--line)}
.gq-tb th:first-child{text-align:left}
.gq-tb td{padding:7px 12px;text-align:right;border-bottom:1px solid #f2f4ef;font-size:15px;font-weight:700}
.gq-tb td:first-child{text-align:left;font-size:13.5px;font-weight:800;color:#41544a}
.gq-tb tr:last-child td{border-bottom:0}
.gq-tb .gq-buy{color:#14513d}
.gq-tb .gq-sell{color:#a52a20}
.gq-tb .gq-mid{color:#7c8b84;font-weight:600;font-size:13.5px}
.gq-tb .gq-t{color:#93a09a;font-weight:600;font-size:12px}
.gq-old{padding:8px 14px 10px;font-size:12px;color:#5d6b64;background:#fbfaf6;border-top:1px solid #f2f4ef;line-height:1.9}
.gq-old b{color:#8a5a00;font-size:13px}
.gq-old .gq-oi{margin-right:14px;white-space:nowrap}
/* 独立页 */
.gp-wrap{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.gp-panel{margin-bottom:0}
.gp-note{font-size:11.5px;color:var(--sub);font-weight:500}
.gp-tb{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;border-radius:10px;overflow:hidden}
.gp-tb thead th{background:linear-gradient(120deg,#7d1a22,#9c2b2b);color:#fff;font-size:13px;font-weight:800;letter-spacing:1px;padding:9px 14px;text-align:right}
.gp-tb thead th:first-child{text-align:left}
.gp-tb tbody tr:nth-child(even){background:#fbfaf7}
.gp-tb td{padding:10px 14px;text-align:right;font-size:17px;font-weight:800;border-bottom:1px solid #f2f4ef}
.gp-tb td:first-child{text-align:left}
.gp-tb .gp-mid{color:#7c8b84;font-weight:600;font-size:15px}
.gp-tb .gp-buy{color:#14513d}
.gp-tb .gp-sell{color:#a52a20}
.gp-tb .gp-oldv{color:#8a5a00;font-size:19px}
.gp-tb .gp-oldc{font-size:13px;font-weight:600}
.gp-tb .gp-t{color:#93a09a;font-size:12.5px;font-weight:600}
.gp-nm{font-size:15px}
.gp-u{font-size:11px;color:#9aa79f;font-weight:600;margin-left:6px}
.gp-tb tbody tr:nth-child(even) .gp-u{color:#9aa79f}
.gp-src{margin-top:10px;font-size:11.5px;color:var(--sub);line-height:1.9}
.gp-ctl{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:10px}
.gp-seg{display:inline-flex;border:1px solid var(--line);border-radius:9px;overflow:hidden;background:#fff}
.gp-seg button{border:0;background:transparent;padding:6px 14px;font-size:12.5px;font-weight:700;color:#68766f;cursor:pointer}
.gp-seg button+button{border-left:1px solid var(--line)}
.gp-seg button.on{background:linear-gradient(120deg,#d4ac2b,#b08d1e);color:#fff}
.gp-chart{min-height:250px}
.gp-charthead{font-size:12.5px;color:#5d6b64;margin-bottom:4px;display:flex;gap:10px;flex-wrap:wrap;align-items:baseline}
.gp-charthead b{font-size:14px;color:var(--ink)}
.gp-setgrid{display:grid;grid-template-columns:repeat(5,1fr);gap:10px}
.gp-setcard{background:#fbfaf7;border:1px solid #eef1ec;border-radius:10px;padding:9px 11px}
.gp-setnm{font-size:13px;font-weight:800;color:#41544a;margin-bottom:6px}
.gp-setcard label{display:block;font-size:11.5px;color:var(--sub);margin-top:5px}
.gp-setcard input,.gp-setcard select{width:100%;margin-top:3px;padding:5px 8px;border:1px solid var(--line);border-radius:7px;font-size:13px;font-variant-numeric:tabular-nums}
@media(max-width:1100px){
  .gp-setgrid{grid-template-columns:repeat(3,1fr)}
}
@media(max-width:860px){
  .gp-wrap{grid-template-columns:1fr}
  .gp-setgrid{grid-template-columns:repeat(2,1fr)}
  .gp-tb td{font-size:15px;padding:8px 10px}
  .gp-tb thead th{padding:8px 10px;font-size:12px}
  .gq-tb td{padding:6px 10px;font-size:14px}
  .gq-tb th{padding:5px 10px}
  .gq-old .gq-oi{display:block;margin:0}
}

/* v1.7.487 编辑页「对客结算」默认折叠 */
.sale-fold{border:1.5px dashed #d9cba4;border-radius:8px;margin-top:8px;background:#fffdf8;overflow:hidden}
.sale-fold>summary{cursor:pointer;padding:9px 12px;font-size:12.5px;font-weight:700;color:#8a5a00;list-style:none;user-select:none}
.sale-fold>summary::-webkit-details-marker{display:none}
.sale-fold>summary::before{content:'▸ ';}
.sale-fold[open]>summary::before{content:'▾ ';}
.sale-fold>summary:hover{background:#fdf6e8}
.sale-fold[open]>summary{border-bottom:1px dashed #e5d9b8}
.sale-fold .cmp-body{padding:8px 10px}
