/* 德米订单管理系统 - 全局样式 */
*{margin:0;padding:0;box-sizing:border-box;font-family:"Microsoft YaHei","PingFang SC",sans-serif}
body{background:#f0f2f5;color:#333;font-size:14px}
a{color:#1f5fa5;text-decoration:none}
input,select,textarea{font-size:14px;color:#333}
input:focus,select:focus,textarea:focus{outline:none;border-color:#1f5fa5}
input,select,textarea{border:1.5px solid #e2e8f0;border-radius:8px;padding:9px 11px;background:#fafbfd;width:100%}

/* ===== 登录页 ===== */
.login-page{display:flex;height:100vh;overflow:hidden}
.login-left{flex:1.25;background:linear-gradient(150deg,#16283f 0%,#1f3a5f 55%,#2c5282 100%);color:#fff;display:flex;flex-direction:column;justify-content:center;padding:0 7%;position:relative;overflow:hidden}
.login-left .gear-bg{position:absolute;opacity:.06;right:-120px;bottom:-120px}
.brand{display:flex;align-items:center;gap:14px;margin-bottom:34px}
.brand .mark{width:52px;height:52px;border-radius:12px;background:linear-gradient(135deg,#e67e22,#f39c12);display:flex;align-items:center;justify-content:center;font-size:26px;box-shadow:0 6px 18px rgba(230,126,34,.35)}
.brand .name{font-size:22px;font-weight:bold;letter-spacing:1px}
.brand .en{font-size:11px;color:#8fa8c8;letter-spacing:3px;margin-top:3px}
.slogan{font-size:34px;font-weight:bold;line-height:1.45;margin-bottom:14px}
.slogan em{font-style:normal;color:#f5a623}
.sub-slogan{font-size:15px;color:#a9bdd8;margin-bottom:46px;line-height:1.8}
.feats{display:grid;grid-template-columns:1fr 1fr;gap:18px 26px;max-width:520px}
.feat{display:flex;gap:12px;align-items:flex-start}
.feat .ic{width:38px;height:38px;border-radius:9px;background:rgba(255,255,255,.09);border:1px solid rgba(255,255,255,.14);display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0}
.feat b{font-size:14.5px;display:block;margin-bottom:3px}
.feat span{font-size:12px;color:#8fa8c8;line-height:1.55;display:block}
.foot-note{position:absolute;bottom:26px;left:7%;font-size:12px;color:#5f7896}
.login-right{flex:1;display:flex;align-items:center;justify-content:center;background:#f7f9fc}
.login-card{width:420px;background:#fff;border-radius:16px;padding:40px 42px;box-shadow:0 12px 48px rgba(31,58,95,.12)}
.login-tabs{display:flex;gap:6px;margin-bottom:24px;border-bottom:1px solid #eef1f5}
.lt{flex:1;border:none;background:none;padding:12px;font-size:14.5px;color:#8b98a9;cursor:pointer;border-bottom:2px solid transparent}
.lt.on{color:#1f3a5f;font-weight:bold;border-bottom-color:#1f3a5f}

/* ===== 顶栏 ===== */
.topbar{background:#1f3a5f;color:#fff;padding:10px 24px;display:flex;align-items:center;gap:22px;position:sticky;top:0;z-index:50}
.topbar .logo{font-weight:bold;font-size:15px;white-space:nowrap}
.topbar nav{display:flex;gap:4px;flex:1;flex-wrap:wrap}
.topbar nav a{color:#cfe0f5;padding:6px 11px;border-radius:7px;font-size:13.5px}
.topbar nav a:hover{background:rgba(255,255,255,.1)}
.topbar nav a.on{background:rgba(255,255,255,.16);color:#fff;font-weight:bold}
.tb-right{font-size:12.5px;color:#cfe0f5;white-space:nowrap}
.page{max-width:1240px;margin:18px auto;padding:0 18px}
.pg-title{font-size:19px;color:#1f3a5f}
.pg-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;gap:14px;flex-wrap:wrap}
.pg-head .meta{color:#666;font-size:13px;margin-top:6px}
.crumb{color:#888;font-size:13px;margin-bottom:10px}
.card{background:#fff;border-radius:10px;box-shadow:0 1px 3px rgba(0,0,0,.06);margin-bottom:14px;padding:20px 22px}
.cols2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.cols3{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
h3{font-size:15px;color:#1f3a5f;margin:18px 0 12px;border-left:4px solid #1f3a5f;padding-left:10px}
.sec-head{display:flex;align-items:center;margin:0 0 12px;gap:10px}
.sec-head h3{margin:0;flex:1}
/* 通用折叠：收起时隐藏内容块 */
.fold-btn{white-space:nowrap;flex:0 0 auto}
.fold-body.folded{display:none}
.fold-tools{display:flex;align-items:center;gap:8px;margin:0 0 12px}
.fold-tools .meta{color:#8b98a9;font-size:12.5px}
.sec-head .meta{color:#8b98a9;font-size:12.5px;font-weight:400}
.view-all{font-size:13px}

/* ===== 表格 ===== */
table{width:100%;border-collapse:collapse;font-size:13px}
/* 列太多时允许横向滚动，不再把「交期 / 优先级 / 操作」挤到折行（用户 2026-10-09） */
.tbl-wrap{overflow-x:auto}
/* 首页看板「临期 / 逾期订单」：条数多时右侧滚动查看全部（用户 2026-10-12），表头吸顶 */
.due-scroll{max-height:400px;overflow-y:auto;overflow-x:auto}
.due-scroll th{position:sticky;top:0;z-index:2;background:#f7f9fc}
.due-scroll::-webkit-scrollbar{width:8px;height:8px}
.due-scroll::-webkit-scrollbar-thumb{background:#d3dbe6;border-radius:4px}
.due-scroll::-webkit-scrollbar-thumb:hover{background:#bcc7d6}
.due-scroll::-webkit-scrollbar-track{background:transparent}
th{background:#f7f9fc;text-align:left;padding:9px 12px;color:#555;font-weight:normal;border-bottom:1px solid #eee;white-space:nowrap}
td{padding:9px 12px;border-bottom:1px solid #f2f2f2}
/* 不许折行的单元格：交期 / 日期 / 编号等 */
td.nw{white-space:nowrap}
.link-row{cursor:pointer}
.link-row:hover td{background:#f8fafd}
tr.tot td{background:#f7f9fc;border-top:1px solid #e6ecf3}
.empty{color:#98a5b5;text-align:center;padding:26px 0;font-size:13px}
.money{color:#e74c3c;font-weight:bold}
.red{color:#e74c3c;font-weight:bold}.orange{color:#e67e22;font-weight:bold}
/* 待收款 · 累计合计行（累计应收 / 累计已收 / 累计未收） */
.cum-row{display:flex;flex-wrap:wrap;gap:6px 30px;align-items:baseline;justify-content:flex-end}
.cum-row .it{color:#5a6b80;font-size:13px;white-space:nowrap}
.cum-row .it b{margin-left:6px;font-size:15px;font-weight:bold}
.cum-row .cum-due{color:#1f3a5f}
.cum-row .cum-paid{color:#27ae60}
.cum-row .cum-un{color:#e74c3c}
.pill{padding:2px 10px;border-radius:10px;font-size:12px;white-space:nowrap;display:inline-block}
.pill.big{font-size:14px;padding:5px 16px}
.pill.blue{background:#eaf2fb;color:#1f3a5f}.pill.orange{background:#fdf1e3;color:#e67e22}.pill.green{background:#e8f7ee;color:#27ae60}.pill.gray{background:#eee;color:#888}.pill.red-p{background:#fdeaea;color:#c0392b}
.pri{font-size:12px;padding:2px 8px;border-radius:4px;white-space:nowrap;display:inline-block;text-align:center;min-width:42px}
.pri.紧急{background:#c0392b;color:#fff}.pri.加急{background:#e67e22;color:#fff}.pri.普通{background:#f0f2f5;color:#888}
.pri-menu{position:fixed;z-index:9999;background:#fff;border:1px solid #dfe6ef;border-radius:8px;box-shadow:0 8px 24px rgba(31,58,95,.18);padding:4px;min-width:108px}
.pri-menu div{padding:7px 12px;font-size:13px;border-radius:6px;cursor:pointer;color:#333}
.pri-menu div:hover{background:#eef4fb;color:#1f3a5f}
.pri-menu div.on{color:#1f3a5f;font-weight:bold;background:#f6f9fd}

/* ===== 按钮 ===== */
.btn{border:1.5px solid #d8e0ea;background:#fff;color:#43536b;border-radius:8px;padding:8px 16px;font-size:13.5px;cursor:pointer;transition:all .12s}
.btn:hover{border-color:#9dbde0;color:#1f5fa5}
.btn.primary{background:linear-gradient(135deg,#1f3a5f,#2c5f9e);border:none;color:#fff;font-weight:bold;box-shadow:0 4px 12px rgba(31,58,95,.22)}
.btn.primary:hover{opacity:.92}
.btn.ghost{background:#f4f7fb;border-color:transparent;color:#1f5fa5}
.btn.sm{padding:5px 11px;font-size:12.5px;border-radius:6px;white-space:nowrap}
.btn.block{width:100%;padding:12px;font-size:15px;letter-spacing:4px;margin-top:8px}
.filter-bar{display:flex;gap:10px;align-items:center;margin-bottom:14px;flex-wrap:wrap}
.filter-bar input,.filter-bar select{width:auto;min-width:150px}
.cb{font-size:13px;color:#555;display:flex;align-items:center;gap:5px;white-space:nowrap}
.cb input{width:auto}
.batch-bar{background:#eef4fb;border:1px solid #d5e3f5;border-radius:8px;padding:10px 14px;margin-bottom:12px;display:flex;gap:10px;align-items:center}
.batch-bar b{color:#1f3a5f}

/* ===== 状态卡片 / 看板 ===== */
.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:14px}
.stat-card{background:#fff;border-radius:10px;padding:18px;text-align:center;cursor:pointer;box-shadow:0 1px 3px rgba(0,0,0,.06);transition:transform .12s}
.stat-card:hover{transform:translateY(-2px)}
.stat-card.dim{opacity:.45}
.stat-card .sc-num{font-size:26px;font-weight:bold;color:#1f3a5f}
.stat-card.warn .sc-num{color:#e67e22}
.stat-card.danger .sc-num{color:#e74c3c;font-size:20px;padding-top:4px}
.stat-card .sc-label{font-size:12.5px;color:#888;margin-top:5px}
.kv-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.kv-grid.wide{grid-template-columns:repeat(3,1fr)}
.kv-grid b{display:block;font-size:19px;color:#1f3a5f;font-weight:bold}
.kv-grid.wide b{font-size:14.5px;font-weight:normal;color:#333;display:inline}
.kv-grid span{font-size:12px;color:#98a5b5}
.kv-grid.wide span{font-size:13px;color:#333}
.tip-box{background:#f6f9fd;border:1px solid #dfe9f5;border-radius:8px;padding:10px 14px;font-size:12.5px;color:#4a6076;margin-top:14px;line-height:1.8}
.tip-box.warn{background:#fdf6ec;border-color:#f2ddb8}
.tip-box a{color:#1f5fa5}
/* 归档后锁定提示（老板专属：改订单编号/客户仅限空白订单，2026-10-12） */
.tip-box.lock{background:#fdf3f2;border-color:#f2c9c4;color:#8e2f22}
.tip-box.lock b{color:#b03a2e}
/* 「仅老板」小标 + 等宽编号输入 */
.badge-boss{display:inline-block;font-size:11.5px;border-radius:5px;padding:2px 8px;background:#fdf1e3;color:#e67e22;vertical-align:middle;margin-left:6px}
.mono{font-family:Consolas,Monaco,monospace;letter-spacing:.4px}

/* ===== 状态步进条 ===== */
.steps{display:flex;margin:16px 0 4px;flex-wrap:wrap}
.steps .st{font-size:12.5px;padding:4px 14px;border:1px solid #ddd;background:#fff;position:relative;margin-right:18px;color:#999;border-radius:3px}
.steps .st.done{background:#e8f7ee;color:#27ae60;border-color:#bfe6cd}
.steps .st.doing{background:#1f3a5f;color:#fff;border-color:#1f3a5f;font-weight:bold}
.steps .st:after{content:"›";position:absolute;right:-14px;color:#bbb}
.steps .st:last-child:after{content:""}
.cond-tip{color:#888;font-size:13px;background:#f6f9fd;border-radius:6px;padding:8px 12px;display:inline-block;margin-top:10px}
.od-actions{display:flex;gap:10px;margin-top:10px;flex-wrap:wrap;align-items:center}
/* 生产准备条件条：材料（订料+到货确认）与程序两个环节 */
.cond-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:12px;padding:10px 12px;background:#f6f9fd;border:1px solid #e2ecf7;border-radius:8px}
.cond-bar .cond-l{font-size:12.5px;color:#1f3a5f;font-weight:bold}
.cond-chip{font-size:12.5px;padding:3px 10px;border-radius:12px;white-space:nowrap;border:1px solid transparent}
.cond-chip.ok{background:#e8f7ee;color:#1e8f52;border-color:#cdecd9}
.cond-chip.warn{background:#fdf1e3;color:#c96a10;border-color:#f6dfc4}
.cond-chip.bad{background:#fdeaea;color:#c0392b;border-color:#f5cfcf}
.cond-bar .cond-note{font-size:12px;color:#96a1b3}
.tb-right .ver{background:rgba(255,255,255,.14);border-radius:5px;padding:2px 7px;margin-right:10px;font-size:11.5px;color:#cfe0f5}

/* ===== Tab ===== */
.tabs{display:flex;gap:4px;margin-bottom:12px;flex-wrap:wrap}
.tab{border:1.5px solid #d8e0ea;background:#fff;border-radius:8px;padding:8px 18px;font-size:13.5px;color:#666;cursor:pointer}
.tab.on{background:#1f3a5f;color:#fff;border-color:#1f3a5f;font-weight:bold}

/* ===== 表单 ===== */
.field{margin-bottom:14px}
.field label{display:block;font-size:13px;color:#5a6b80;margin-bottom:6px;font-weight:bold}
.iw{display:flex;align-items:center;gap:8px}
.iw input{flex:1}
.iw .ic{color:#9aa9bd}
.row-grid{display:grid;grid-template-columns:2fr 2fr 1.2fr 1.5fr auto;gap:8px;margin-bottom:8px}
.row-grid.proc-row{grid-template-columns:1.4fr 1.2fr 1.2fr .8fr auto}
.help-row{display:flex;justify-content:space-between;margin-top:18px;font-size:12.5px;color:#8b98a9}
.tpl-item{border:1px solid #e5eaf1;border-radius:8px;padding:10px 14px;margin-bottom:8px;cursor:pointer}
.tpl-item:hover{border-color:#9dbde0;background:#f8fafd}
.tpl-item span{display:block;font-size:12.5px;color:#888;margin-top:3px}
.role-tag{font-size:12px;color:#1f3a5f;background:#eef4fb;border:1px solid #d8e5f3;border-radius:20px;padding:4px 12px;display:inline-block;margin:3px}

/* ===== 图纸/程序上传页 ===== */
.up-on td{background:#eef4fb}
/* 列表分区：待补齐 / 图纸·程序已齐全 */
.up-sec{margin-top:16px;padding-top:2px}
.up-sec:first-child{margin-top:0}
.up-sec + .up-sec{border-top:1px dashed #e3ebf4;padding-top:14px}
.up-count{font-size:12.5px;color:#98a5b5;margin-left:auto}
.up-count b{color:#e67e22}
/* 排序控件前面的「排序」小标签（用户 2026-10-09 要求上传页可排序） */
.up-sort-lbl{font-size:13px;color:#5a6472;white-space:nowrap;margin-left:4px}
.up-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:16px 0 4px}
.dropzone{border:2px dashed #cbd8e6;border-radius:12px;background:#f8fafd;padding:26px 18px;text-align:center;cursor:pointer;transition:all .15s}
.dropzone:hover{border-color:#9dbde0;background:#f2f7fd}
.dropzone.over{border-color:#1f5fa5;background:#e9f2fc;transform:scale(1.01)}
.dropzone.off{opacity:.5}
.dropzone .dz-ic{font-size:30px;line-height:1}
.dropzone .dz-t{font-size:15px;font-weight:bold;color:#1f3a5f;margin-top:10px}
.dropzone .dz-s{font-size:12.5px;color:#8b98a9;margin-top:6px}
.dropzone .dz-k{font-size:11.5px;color:#aab6c6;margin-top:10px}
.up-meta{margin-bottom:12px}
.arch-paths{background:#f6f9fd;border:1px solid #dfe9f5;border-radius:8px;padding:10px 14px;font-size:12.5px;color:#4a6076;line-height:2.1}
.arch-paths .ap-l{display:inline-block;min-width:86px;color:#8b98a9}
.arch-paths code{font-family:Consolas,Monaco,monospace;color:#1f5fa5;font-size:12px;word-break:break-all}
.arch-cell{font-size:11.5px;color:#889;line-height:1.7;word-break:break-all}

/* ===== 弹窗 / 提示 ===== */
.modal-mask{position:fixed;inset:0;background:rgba(15,30,50,.45);display:flex;align-items:center;justify-content:center;z-index:100}
.modal{background:#fff;border-radius:14px;width:520px;max-width:94vw;max-height:88vh;overflow:auto;padding:24px 26px;box-shadow:0 20px 60px rgba(0,0,0,.25)}
.m-head{font-size:16.5px;font-weight:bold;color:#1f3a5f;margin-bottom:16px}
.m-foot{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}
.toast{position:fixed;top:70px;left:50%;transform:translateX(-50%) translateY(-16px);background:#1f3a5f;color:#fff;padding:10px 22px;border-radius:24px;font-size:13.5px;opacity:0;pointer-events:none;transition:all .2s;z-index:200;box-shadow:0 8px 24px rgba(0,0,0,.25)}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.toast.err{background:#c0392b}

/* ===== 生产工单打印预览 ===== */
.print-root{position:fixed;inset:0;background:#eef1f5;z-index:300;display:flex;flex-direction:column;overflow:auto}
.print-toolbar{position:sticky;top:0;z-index:2;display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 20px;background:#1f3a5f;color:#fff;box-shadow:0 2px 10px rgba(0,0,0,.18)}
.print-toolbar .pt-l{font-size:14px}
.print-toolbar .pt-l b{color:#f5a623}
.print-toolbar .pt-r{display:flex;align-items:center;gap:10px}
.print-toolbar .pt-tip{font-size:12.5px;color:#bcd0e8}
.print-toolbar .btn{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.3);color:#fff}
.print-toolbar .btn:hover{border-color:#fff;color:#fff;background:rgba(255,255,255,.2)}
.print-toolbar .btn.primary{background:linear-gradient(135deg,#e67e22,#f39c12);border:none;color:#fff;box-shadow:0 3px 10px rgba(230,126,34,.4)}
.print-body{padding:22px 0 44px;display:flex;flex-direction:column;align-items:center;gap:20px}
.sheet{width:820px;max-width:96vw;background:#fff;padding:34px 44px;box-shadow:0 4px 20px rgba(15,30,50,.14);color:#222;font-size:13px;line-height:1.5;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.sheet .p-company{display:flex;justify-content:space-between;align-items:flex-end;border-bottom:3px double #333;padding-bottom:10px}
.sheet .p-company h1{font-size:21px;letter-spacing:4px}
.sheet .p-company .sub{font-size:11.5px;color:#666;letter-spacing:2px;margin-top:3px}
.sheet .p-company .rt{text-align:right;font-size:11.5px;color:#666;line-height:1.75}
.sheet .p-title{text-align:center;font-size:18px;font-weight:bold;letter-spacing:8px;margin:16px 0 8px}
.sheet .p-no{display:flex;justify-content:space-between;font-size:12.5px;color:#444;margin-bottom:12px;flex-wrap:wrap;gap:6px}
.sheet .p-no b{color:#111}
.sheet table{width:100%;border-collapse:collapse;font-size:12.5px;margin-bottom:12px}
.sheet th,.sheet td{border:1px solid #555;padding:5px 8px;vertical-align:top;white-space:pre-wrap}
.sheet th{background:#f0f0f0;font-weight:bold;text-align:left}
.sheet .p-kv td:nth-child(odd){background:#f6f6f6;width:13%;color:#555}
.sheet h4{font-size:13px;margin:12px 0 6px;background:#eee;padding:4px 9px;border-left:3px solid #1f3a5f}
.sheet .p-pill{display:inline-block;padding:0 7px;border-radius:9px;font-size:11.5px;line-height:18px;white-space:nowrap}
.sheet .p-pill.done{background:#e8f7ee;color:#1b8a4b}
.sheet .p-pill.doing{background:#eaf2fb;color:#1f5fa5}
.sheet .p-pill.wait{background:#f2f2f2;color:#888}
.sheet .p-pill.os{background:#fdeeee;color:#c0392b}
.sheet .p-empty{color:#999;font-size:12px;padding:6px 2px 10px}
.sheet .p-sign{display:flex;gap:40px;margin-top:26px;font-size:12.5px}
.sheet .p-sign div{flex:1;border-top:1px solid #444;padding-top:6px;color:#555}
.sheet .p-foot{margin-top:18px;font-size:11px;color:#999;text-align:center;border-top:1px dashed #ddd;padding-top:8px}

/* ---------- 可点击就地编辑的单元格 ---------- */
.edit-cell{cursor:text;display:inline-block;max-width:330px;white-space:pre-wrap;border-bottom:1px dashed #c3cbd6}
.edit-cell:hover{background:#eef4ff;border-bottom-color:#4a86e8}
.edit-cell .ph{font-style:normal;color:#b6bec9}
.ph{font-style:normal;color:#b6bec9}
/* 归档页：空白日期格点一下就填（用户 2026-10-09 要求） */
.dt-fill{cursor:pointer;display:inline-block;font-size:12.5px;color:#4a86e8;border-bottom:1px dashed #a9c5ea;padding:0 2px}
.dt-fill:hover{background:#eef4ff;border-bottom-color:#2f6fd0}
.dt-input{font-size:12.5px;padding:2px 4px;border:1px solid #9dbde0;border-radius:4px;width:132px;max-width:100%}
/* 表头副标题（如「上月欠款」下的年月） */
th .th-sub{display:block;font-weight:normal;color:#9aa7b6;font-size:11.5px;line-height:1.35}
.btn.danger{color:#c0392b}
.btn.danger:hover{background:#fdf3f1;border-color:#e8b4ab}
/* 破坏性操作的主确认按钮（清空工序等，用户 2026-10-12） */
.btn.solid-danger{background:linear-gradient(135deg,#c0392b,#e05c4a);border:none;color:#fff;font-weight:bold;box-shadow:0 4px 12px rgba(192,57,43,.22)}
.btn.solid-danger:hover{opacity:.92;background:linear-gradient(135deg,#c0392b,#e05c4a);border:none;color:#fff}

/* ===== 图纸预览浮层 ===== */
.modal.wide{width:940px;max-width:96vw;padding:20px 22px}
.pv-tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px;max-height:78px;overflow:auto}
.pv-tab{border:1px solid #dfe6ef;background:#f7fafd;color:#43536b;border-radius:6px;padding:5px 10px;font-size:12.5px;cursor:pointer;max-width:230px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pv-tab:hover{border-color:#9dbde0;color:#1f5fa5}
.pv-tab.on{background:#1f3a5f;color:#fff;border-color:#1f3a5f}
.pv-stage{background:#f2f5f9;border:1px solid #e3eaf3;border-radius:10px;height:62vh;display:flex;align-items:center;justify-content:center;overflow:auto}
.pv-img{max-width:100%;max-height:62vh;object-fit:contain;display:block}
.pv-frame{width:100%;height:62vh;border:0;background:#fff;border-radius:10px}
.pv-no{text-align:center;color:#66748a;font-size:13.5px;line-height:2.1;padding:20px}
.pv-meta{margin-top:10px;font-size:12.5px;color:#8a97a8;display:flex;gap:16px;flex-wrap:wrap;align-items:center}
.pv-meta b{color:#43536b}

/* ---------- 打印预览：编辑态 & 留白 ---------- */
.print-root.editing .sheet{outline:2px dashed #4a86e8;outline-offset:8px}
.print-root.editing .sheet [contenteditable]:focus{background:#fffbe6;outline:1px solid #f0d264}
.sheet .p-blank{display:block;min-height:18px}

/* 打印时只输出工单纸面 */
@media print{
  body{background:#fff}
  body>*{display:none!important}
  body>#print-root{display:block!important}
  .print-root{position:static;inset:auto;background:#fff;overflow:visible;display:block}
  .print-toolbar{display:none!important}
  .print-body{padding:0;gap:0;display:block}
  .sheet{width:auto;max-width:none;box-shadow:none;padding:0;break-after:page;page-break-after:always}
  .sheet:last-child{break-after:auto;page-break-after:auto}
  .no-print{display:none!important}
  .print-root.editing .sheet{outline:none!important}
  @page{size:A4 portrait;margin:12mm}
}

/* ---------- 列表排序 ---------- */
.th-sort{cursor:pointer;user-select:none;white-space:nowrap}
.th-sort:hover{color:#2b6cb0}
.sort-idle{color:#c3cbd6;font-size:11px;margin-left:2px}
.sort-on{color:#2b6cb0;font-weight:700;margin-left:2px}
.sort-hint{margin-left:auto;font-size:12px;color:#9aa4b2}
/* 只读（自动计算）的输入框 */
.ro{background:#f4f6f9;color:#5a6472}
.field label .meta{font-weight:400;color:#9aa4b2;font-size:11px;margin-left:6px}
/* 待生产统计的板块排序按钮 */
.prod-sort{margin-left:auto;display:flex;align-items:center;gap:6px;font-size:13px;color:#5a6472}
.prod-sort select{padding:3px 6px;font-size:13px}

/* ---------- 订单异常标记（用户 2026-10-09 要求） ---------- */
.abn-tag{display:inline-block;font-size:12px;line-height:1.5;padding:1px 7px;border-radius:4px;
  background:#c0392b;color:#fff;cursor:pointer;white-space:nowrap;vertical-align:middle}
.abn-tag:hover{opacity:.86}
.abn-add{color:#a6b0bd;border-color:#e3e9f0;font-weight:400}
.abn-add:hover{color:#c0392b;border-color:#f0cfcb;background:#fdf3f2}
/* 订单详情顶部的异常提示条 */
.abn-bar{background:#fdecea;border:1px solid #f2c9c4;border-radius:8px;padding:10px 14px;margin:0 0 14px;
  display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.abn-bar .abn-l{font-weight:bold;color:#b03a2e;white-space:nowrap}
.abn-bar .abn-tx{flex:1;min-width:200px;color:#8e2f22;font-size:13px;line-height:1.6}
.abn-bar .abn-meta{color:#b98a83;font-size:12px}
.abn-hist{margin:8px 0 0;font-size:12.5px;color:#98a4b5}
/* 异常弹窗 */
.abn-box{background:#fdf3f2;border:1px solid #f2c9c4;border-radius:8px;padding:12px 14px;margin:4px 0 14px}
.abn-box .abn-note{font-size:14px;color:#8e2f22;line-height:1.7;white-space:pre-wrap}
.abn-box .abn-sub{margin-top:8px;font-size:12px;color:#b98a83}
.abn-quick{display:flex;gap:8px;flex-wrap:wrap;margin:2px 0 10px}
.abn-input{width:100%;box-sizing:border-box;border:1px solid #dfe6ef;border-radius:8px;padding:10px 12px;
  font-size:13.5px;font-family:inherit;line-height:1.7;resize:vertical}
.abn-input:focus{outline:none;border-color:#9dbde0;box-shadow:0 0 0 3px rgba(74,134,232,.12)}

/* ===== 顶栏「待分配角色」标签（未分配角色用户 2026-10-10）===== */
.role-pill{background:rgba(243,156,18,.22);border:1px solid rgba(243,156,18,.45);color:#f8c471;padding:2px 10px;border-radius:10px;font-size:12px;margin-left:8px;white-space:nowrap}

/* ===== 静态欢迎页（未分配角色，2026-10-10 v2 效果图）===== */
.wl-wrap{display:flex;justify-content:center;padding:30px 0 10px}
.wl-card{max-width:640px;width:100%;background:#fff;border-radius:14px;box-shadow:0 10px 40px rgba(31,58,95,.10);overflow:hidden}
.w-hero{position:relative;overflow:hidden;background:linear-gradient(150deg,#16283f 0%,#1f3a5f 55%,#2c5282 100%);color:#fff;padding:46px 44px 38px;text-align:center}
.w-hero .gear-bg{position:absolute;opacity:.07;right:-70px;bottom:-100px}
.w-hero .mark{width:58px;height:58px;border-radius:14px;background:linear-gradient(135deg,#e67e22,#f39c12);display:inline-flex;align-items:center;justify-content:center;font-size:30px;box-shadow:0 6px 18px rgba(230,126,34,.35);margin-bottom:16px}
.w-hero .hi{font-size:25px;font-weight:bold;letter-spacing:1px}
.w-hero .hi em{font-style:normal;color:#f5a623}
.w-hero .date{margin-top:10px;font-size:13px;color:#a9bdd8;letter-spacing:1px}
.w-hero .sub{margin-top:14px;font-size:13.5px;color:#c9d8ec}
.w-body{padding:30px 40px 34px}
.w-body .t{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.w-body .t .ic{width:38px;height:38px;border-radius:10px;background:#fdf3e3;display:flex;align-items:center;justify-content:center;font-size:19px;flex-shrink:0}
.w-body .t b{font-size:15.5px;color:#1f3a5f}
.w-body p{color:#666;line-height:2;font-size:13.5px}
.w-body b{color:#e67e22}
.w-body .steps{margin-top:16px;display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:12.5px;color:#8b98a9;justify-content:center}
.w-body .steps .s{background:#f7f9fc;border:1px solid #e6ecf3;border-radius:8px;padding:7px 13px;color:#1f3a5f;white-space:nowrap}

/* ===== 常用技术要求 chips（工艺工序弹窗，2026-10-10）===== */
.req-chips{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:8px}
.req-chip{cursor:pointer;background:#f2f7fd;border:1px solid #d7e5f5;color:#1f5fa5;border-radius:12px;padding:3px 10px;font-size:12px;white-space:nowrap}
.req-chip:hover{background:#e3eefb;border-color:#1f5fa5}
.req-mgr{background:#f8fafc;border:1px solid #e6ecf3;border-radius:8px;padding:12px 14px}

/* ===== 首页看板 · 重点项目（专人跟踪，2026-10-12）===== */
.stat-card.proj{background:#fff9f0;border:1.5px solid #f3d9b5}
.stat-card.proj .sc-num{color:#d9822b}
.stat-card.proj .sc-label{color:#b9770e}
.pj-chips{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 12px}
.pj-chip{cursor:pointer;background:#f2f7fd;border:1px solid #d7e5f5;color:#1f5fa5;border-radius:14px;padding:4px 12px;font-size:12.5px;white-space:nowrap}
.pj-chip:hover{background:#e3eefb;border-color:#1f5fa5}
.pj-chip.on{background:#1f5fa5;border-color:#1f5fa5;color:#fff;font-weight:bold}
.pj-chip b{opacity:.75;font-size:11.5px;margin-left:3px;font-weight:normal}
.pj-chip.on b{opacity:.9}
.pj-hint{color:#a6b2c1;font-size:12px;margin-left:2px}
.pj-table th.pj-col-h{cursor:pointer;color:#c0651a}
.pj-col{background:#fffdf9;white-space:nowrap}
.pj-owner{display:inline-block;background:#fff4e6;border:1px solid #f3d9b5;color:#c0651a;border-radius:6px;padding:2px 9px;font-size:12.5px;font-weight:bold;white-space:nowrap}
.pj-owner.none{background:#f2f3f5;border-color:#e3e5e8;color:#98a5b5;font-weight:normal}
