:root {
  --bg: #f5f7fb;
  --card: #ffffff;
  --text: #1f2937;
  --muted: #6b7280;
  --border: #e5e7eb;
  --primary: #2563eb;
  --primary-dark: #1d4ed8;
  --success: #059669;
  --danger: #dc2626;
  --warning: #d97706;
  --sidebar: #111827;
  --sidebar-text: #d1d5db;
}
* { box-sizing: border-box; }
body { margin: 0; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Microsoft YaHei", Arial, sans-serif; background: var(--bg); color: var(--text); }
a { color: inherit; text-decoration: none; }
.layout { display: flex; min-height: 100vh; }
.sidebar { width: 238px; background: var(--sidebar); color: var(--sidebar-text); display: flex; flex-direction: column; position: fixed; top: 0; bottom: 0; left: 0; }
.brand { padding: 22px 18px; color: white; font-weight: 700; font-size: 18px; border-bottom: 1px solid rgba(255,255,255,0.08); }
.brand small { display: block; margin-top: 4px; color: #9ca3af; font-weight: 400; font-size: 12px; }
.nav { padding: 14px 10px; flex: 1; }
.nav a { display: block; padding: 11px 13px; border-radius: 10px; margin-bottom: 5px; color: var(--sidebar-text); font-size: 14px; }
.nav a:hover, .nav a.active { background: rgba(255,255,255,0.09); color: white; }
.userbar { padding: 14px 18px; color: #9ca3af; font-size: 13px; border-top: 1px solid rgba(255,255,255,0.08); }
.main { margin-left: 238px; width: calc(100% - 238px); }
.topbar { height: 62px; background: rgba(255,255,255,0.9); border-bottom: 1px solid var(--border); display:flex; align-items:center; justify-content:space-between; padding: 0 24px; position: sticky; top: 0; z-index: 10; backdrop-filter: blur(8px); }
.topbar h1 { font-size: 20px; margin:0; }
.content { padding: 22px 24px 60px; }
.card { background: var(--card); border: 1px solid var(--border); border-radius: 16px; padding: 18px; box-shadow: 0 8px 20px rgba(15,23,42,0.04); margin-bottom: 18px; }
.card h2, .card h3 { margin-top: 0; }
.grid { display: grid; gap: 16px; }
.grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.stat { background: linear-gradient(135deg, #fff, #f8fafc); border: 1px solid var(--border); border-radius: 16px; padding: 18px; }
.stat .num { font-size: 30px; font-weight: 800; color: var(--primary); }
.stat .label { color: var(--muted); margin-top: 4px; }
.btn { display: inline-flex; align-items: center; gap: 6px; padding: 9px 13px; border-radius: 10px; border: 1px solid var(--border); background: #fff; cursor: pointer; font-size: 14px; line-height: 1.2; }
.btn:hover { box-shadow: 0 4px 12px rgba(0,0,0,0.08); }
.btn.primary { background: var(--primary); border-color: var(--primary); color: white; }
.btn.primary:hover { background: var(--primary-dark); }
.btn.danger { color: white; background: var(--danger); border-color: var(--danger); }
.btn.success { color: white; background: var(--success); border-color: var(--success); }
.btn.warning { color: white; background: var(--warning); border-color: var(--warning); }
.btn.small { padding: 6px 9px; font-size: 12px; }
.actions { display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
.form-row { display:grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; }
.form-row.two { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.form-row.three { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.form-field { margin-bottom: 14px; }
label { display:block; margin-bottom: 6px; color:#374151; font-size: 13px; font-weight: 600; }
input[type="text"], input[type="password"], input[type="number"], input[type="file"], select, textarea {
  width: 100%; border: 1px solid var(--border); border-radius: 10px; padding: 9px 10px; background: white; color: var(--text); font-size: 14px; outline: none;
}
textarea { min-height: 82px; resize: vertical; }
input:focus, select:focus, textarea:focus { border-color: #93c5fd; box-shadow: 0 0 0 3px rgba(59,130,246,0.12); }
.table-wrap { overflow-x: auto; border:1px solid var(--border); border-radius: 14px; }
table { width: 100%; border-collapse: collapse; background: white; }
th, td { padding: 10px 11px; border-bottom: 1px solid var(--border); text-align: left; vertical-align: middle; font-size: 14px; }
th { background: #f8fafc; color: #374151; font-weight: 700; white-space: nowrap; }
tr:last-child td { border-bottom: none; }
.badge { display:inline-block; padding: 4px 8px; border-radius: 999px; background:#eef2ff; color:#3730a3; font-size: 12px; }
.badge.gray { background:#f3f4f6; color:#4b5563; }
.badge.green { background:#ecfdf5; color:#047857; }
.badge.orange { background:#fff7ed; color:#c2410c; }
.help { color: var(--muted); font-size: 13px; line-height: 1.6; }
.flash { padding: 12px 14px; border-radius: 12px; margin-bottom: 16px; border: 1px solid transparent; }
.flash.success { background:#ecfdf5; color:#047857; border-color:#a7f3d0; }
.flash.danger { background:#fef2f2; color:#b91c1c; border-color:#fecaca; }
.flash.warning { background:#fffbeb; color:#b45309; border-color:#fde68a; }
.flash.info { background:#eff6ff; color:#1d4ed8; border-color:#bfdbfe; }
.product-img { width: 62px; height: 62px; object-fit: cover; border-radius: 10px; border:1px solid var(--border); background:#f9fafb; }
.gallery { display:grid; grid-template-columns: repeat(auto-fill, minmax(145px, 1fr)); gap: 14px; }
.gallery-item { border:1px solid var(--border); border-radius: 14px; padding:10px; background:#fff; }
.gallery-item img { width:100%; height:120px; object-fit:contain; background:#f9fafb; border-radius: 10px; }
.gallery-item .meta { font-size:12px; color:var(--muted); margin-top:7px; word-break: break-all; }
.login-page { display:flex; min-height:100vh; align-items:center; justify-content:center; background: radial-gradient(circle at top left, #dbeafe, #f8fafc 45%, #fff); }
.login-box { width: 390px; background:white; border:1px solid var(--border); border-radius: 20px; padding: 26px; box-shadow: 0 20px 50px rgba(15,23,42,0.12); }
.login-box h1 { margin:0 0 6px; }
.login-box p { color:var(--muted); margin-top:0; }
.searchbar { display:grid; grid-template-columns: 2fr 1fr 1fr 1fr 1fr auto; gap: 10px; align-items:end; }
.mini-input { min-width: 100px; }
.dim-table input { min-width: 92px; }
.empty { padding: 26px; text-align:center; color: var(--muted); }
.kv { display:grid; grid-template-columns: 140px 1fr; border-bottom: 1px dashed var(--border); padding: 8px 0; }
.kv .k { color: var(--muted); }
.footer-note { color: var(--muted); font-size: 12px; margin-top: 28px; }
@media (max-width: 1100px) {
  .grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .form-row { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .searchbar { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 720px) {
  .sidebar { position: relative; width: 100%; bottom:auto; }
  .layout { flex-direction: column; }
  .main { margin-left:0; width:100%; }
  .grid-4, .grid-3, .grid-2, .form-row, .form-row.two, .form-row.three, .searchbar { grid-template-columns: 1fr; }
}
.variant-table input { min-width: 104px; }
#custom-dim-table input { min-width: 100px; }
.pump-searchbar { grid-template-columns: 2fr auto auto; }
#custom-variant-table input { min-width: 105px; }
#image-preview-wrap:empty { display:none; }
.gallery-item .form-field { margin-bottom: 8px; }
.gallery-item input, .gallery-item select { font-size: 12px; padding: 7px 8px; }
@media (max-width: 1100px) { .pump-searchbar { grid-template-columns: 1fr 1fr; } }
@media (max-width: 720px) { .pump-searchbar { grid-template-columns: 1fr; } }

/* V1.5: 产品列表主图悬停放大预览 */
.thumb-preview { position: relative; display: inline-block; }
.thumb-preview .preview-box { display: none; position: fixed; left: 300px; top: 110px; width: 360px; min-height: 300px; padding: 12px; background: #fff; border: 1px solid var(--border); border-radius: 16px; box-shadow: 0 20px 60px rgba(15,23,42,0.22); z-index: 9999; }
.thumb-preview .preview-box img { width: 100%; max-height: 330px; object-fit: contain; background: #f9fafb; border-radius: 12px; }
.thumb-preview:hover .preview-box { display: block; }
.model-link { color: var(--primary); text-decoration: underline; text-underline-offset: 3px; }
.permissions-grid { display:grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 12px; }
.permission-card { border: 1px solid var(--border); border-radius: 14px; padding: 12px; background: #fff; }
.permission-card strong { display:block; margin-bottom:6px; }
@media (max-width: 1100px) { .permissions-grid { grid-template-columns: repeat(2, minmax(0,1fr)); } }
@media (max-width: 720px) { .thumb-preview .preview-box { left: 20px; right: 20px; width: auto; top: 90px; } .permissions-grid { grid-template-columns: 1fr; } }

/* V1.6: 产品详情尺寸/价格更清晰 */
.detail-section-title { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:12px; }
.detail-section-title h3 { margin:0; font-size:20px; }
.detail-readable-card { padding: 20px; }
.detail-table-wrap { border-radius:16px; background:#fff; }
.detail-data-table { min-width: 760px; }
.detail-data-table th { font-size:15px; padding:14px 16px; background:#eef2ff; color:#1f2937; }
.detail-data-table td { font-size:16px; padding:15px 16px; color:#111827; font-weight:600; white-space:nowrap; }
.detail-data-table tbody tr:nth-child(even) td { background:#f9fafb; }
.detail-data-table tbody tr:hover td { background:#eff6ff; }
.variant-detail-table .price-cell { font-size:18px; color:#047857; font-weight:800; }
.inline-check { display:inline-flex; align-items:center; gap:6px; margin:0; color:#374151; font-size:13px; font-weight:600; }
.inline-check input { width:auto; }

/* V1.6: 泵型号查密封 - 关联产品搜索框 */
.autocomplete-field { position: relative; }
.autocomplete-list { display:none; position:absolute; left:0; right:0; top:70px; max-height:280px; overflow-y:auto; background:#fff; border:1px solid var(--border); border-radius:14px; box-shadow:0 18px 40px rgba(15,23,42,0.16); z-index:30; padding:6px; }
.autocomplete-item { display:block; width:100%; border:0; background:#fff; text-align:left; padding:10px 11px; border-radius:10px; cursor:pointer; color:var(--text); }
.autocomplete-item:hover { background:#eff6ff; }
.autocomplete-item span { color:var(--muted); font-size:12px; }
.autocomplete-empty { color:var(--muted); padding:12px; font-size:13px; }

/* V1.7: 产品详情图片只展示图片本身 */
.detail-image-gallery { grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); }
.detail-image-only { padding: 8px; }
.detail-image-only img { height: 170px; }

/* V1.8: 销售开单 / 打印 */
.sales-item-wrap { overflow: visible; }
.sales-item-table { min-width: 1250px; }
.sales-item-table input { min-width: 76px; padding: 8px 8px; }
.sales-product-field .autocomplete-list { top: 42px; min-width: 280px; }
.item-amount-cell { font-weight: 800; color: var(--success); white-space: nowrap; }
.sales-total-box { padding: 10px 14px; border: 1px solid var(--border); background: #f8fafc; border-radius: 12px; }
.print-sheet { max-width: 1120px; margin: 0 auto; color: #111827; }
.print-header { text-align: center; border-bottom: 2px solid #111827; padding-bottom: 10px; margin-bottom: 12px; }
.print-header h1 { margin: 0; font-size: 30px; letter-spacing: 8px; }
.print-company { margin-top: 6px; font-size: 15px; }
.print-meta-grid { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 8px 14px; margin-bottom: 12px; font-size: 14px; }
.print-meta-grid .span-2 { grid-column: span 2; }
.print-meta-grid .span-4 { grid-column: span 4; }
.print-table { width: 100%; border-collapse: collapse; margin-top: 8px; }
.print-table th, .print-table td { border: 1px solid #111827; padding: 8px 7px; font-size: 13px; color: #111827; }
.print-table th { background: #f3f4f6; text-align: center; }
.print-table td:nth-child(1), .print-table td:nth-child(6), .print-table td:nth-child(7), .print-table td:nth-child(8), .print-table td:nth-child(9) { text-align: center; }
.print-table .blank-row td { height: 34px; }
.print-summary { display: grid; grid-template-columns: repeat(6, minmax(0,1fr)); gap: 0; border: 1px solid #111827; border-top: 0; }
.print-summary div { padding: 9px 8px; border-right: 1px solid #111827; font-size: 14px; }
.print-summary div:last-child { border-right: 0; font-weight: 800; }
.print-remark { border: 1px solid #111827; border-top: 0; padding: 10px; min-height: 44px; font-size: 14px; }
.print-footer-note { margin-top: 10px; font-size: 13px; color: #374151; }
.print-signatures { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 30px; margin-top: 22px; font-size: 14px; }
@media print {
  body { background: #fff; }
  .sidebar, .topbar, .no-print, .footer-note, .flash { display: none !important; }
  .main { margin-left: 0 !important; width: 100% !important; }
  .content { padding: 0 !important; }
  .card { border: 0 !important; box-shadow: none !important; border-radius: 0 !important; padding: 0 !important; margin: 0 !important; }
  .print-sheet { max-width: none; width: 100%; }
  .print-table th, .print-table td { font-size: 12px; padding: 6px 5px; }
  @page { size: A4 landscape; margin: 10mm; }
}

/* V2.0: 销售合同 / 打印 */
.contract-item-edit-table { min-width: 980px; }
.contract-clauses-editor { min-height: 260px; line-height: 1.75; }
.tall-textarea { min-height: 110px; line-height: 1.7; }
.contract-sheet { max-width: 820px; margin: 0 auto; color:#111827; font-family: "SimSun", "Microsoft YaHei", Arial, sans-serif; }
.contract-title { text-align:center; font-size:28px; letter-spacing:2px; margin: 2px 0 14px; }
.contract-status { display:flex; justify-content:center; gap:8px; margin-bottom:10px; }
.contract-party-table, .contract-items-table { width:100%; border-collapse: collapse; margin: 10px 0 16px; }
.contract-party-table th, .contract-party-table td, .contract-items-table th, .contract-items-table td { border:1px solid #111827; padding:7px 8px; font-size:13px; color:#111827; }
.contract-party-table th { background:#f3f4f6; text-align:left; font-weight:700; }
.contract-party-table td { height:30px; }
.contract-preface, .contract-section-title, .contract-clauses { font-size:14px; line-height:1.9; white-space:pre-wrap; }
.contract-section-title { margin-top: 8px; font-weight:700; }
.contract-items-table th { background:#f3f4f6; text-align:center; font-weight:700; }
.contract-items-table td:nth-child(1), .contract-items-table td:nth-child(3), .contract-items-table td:nth-child(4), .contract-items-table td:nth-child(5) { text-align:center; }
.contract-items-table .blank-row td { height:26px; }
.contract-total-row td { font-weight:700; }
.contract-remark { margin-top:12px; padding:10px; border:1px dashed var(--border); color:#374151; background:#f8fafc; }
.contract-sign-area { display:grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 70px; margin-top: 46px; font-size:14px; }
.contract-date-row { display:grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 70px; margin-top: 22px; font-size:14px; }
.print-sheet-portrait { box-shadow: 0 8px 20px rgba(15,23,42,0.04); }
@media print {
  .contract-sheet { max-width:none; width:100%; }
  .contract-title { font-size:27px; margin-top:0; }
  .contract-party-table th, .contract-party-table td, .contract-items-table th, .contract-items-table td { font-size:12px; padding:5px 6px; }
  .contract-preface, .contract-section-title, .contract-clauses { font-size:13px; line-height:1.72; }
  .contract-sign-area { margin-top:42px; }
}

/* V2.1: 首页待办清单 */
.todo-card-prominent { border:2px solid #2563eb; background:linear-gradient(135deg,#eff6ff 0%,#ffffff 72%); box-shadow:0 14px 34px rgba(37,99,235,.13); }
.todo-headline { display:grid; grid-template-columns: 1fr minmax(420px, 620px); gap:18px; align-items:center; }
.todo-kicker { display:inline-block; padding:4px 10px; border-radius:999px; background:#dbeafe; color:#1d4ed8; font-weight:800; font-size:13px; margin-bottom:8px; }
.todo-count { display:inline-block; margin-left:8px; font-size:14px; padding:5px 10px; border-radius:999px; background:#f97316; color:#fff; vertical-align:middle; }
.todo-add-form { display:flex; gap:8px; min-width:420px; }
.todo-add-form input { min-width:300px; }
.todo-add-form-large input { min-height:44px; font-size:15px; border:2px solid #93c5fd; }
.todo-list { margin-top:14px; display:grid; gap:8px; }
.todo-list-large { gap:10px; }
.todo-item { display:grid; grid-template-columns: 40px 1fr auto auto; gap:10px; align-items:center; padding:12px 14px; border:1px solid #bfdbfe; border-radius:14px; background:#fff; }
.todo-check { width:30px; height:30px; border-radius:10px; border:2px solid #2563eb; background:#f8fafc; cursor:pointer; font-weight:900; color:#047857; font-size:18px; }
.todo-title { font-weight:700; font-size:15px; color:#111827; }
.todo-item.done { opacity:.68; background:#f8fafc; border-color:var(--border); }
.todo-item.done .todo-title { color:var(--muted); text-decoration:line-through; }
.todo-time { font-size:12px; color:var(--muted); white-space:nowrap; }
.todo-empty { border:1px dashed #60a5fa; background:#eff6ff; color:#1e3a8a; }
@media (max-width: 980px) { .todo-headline { grid-template-columns:1fr; } }
@media (max-width: 720px) { .todo-add-form { min-width:0; width:100%; flex-direction:column; } .todo-add-form input { min-width:0; } .todo-item { grid-template-columns:34px 1fr auto; } .todo-time { display:none; } }

/* V2.1: 销售开单按送货单样式重做 + 一客一价提示 */
.order-sheet-form { max-width:1180px; margin:0 auto 18px; }
.delivery-form-head { display:grid; grid-template-columns: 1fr 260px; gap:18px; align-items:start; border-bottom:2px solid #111827; padding-bottom:10px; margin-bottom:12px; }
.delivery-company-preview { font-size:26px; font-weight:800; color:#dc2626; letter-spacing:3px; text-align:center; padding:6px 0; }
.delivery-title-box { text-align:center; }
.delivery-title-preview { font-size:24px; font-weight:800; letter-spacing:4px; margin-bottom:8px; }
.delivery-info-form { display:grid; grid-template-columns: 1.3fr 1fr 1fr; gap:8px 24px; margin-bottom:12px; }
.delivery-info-form .form-field { margin-bottom:0; }
.delivery-info-form input, .delivery-title-box input { border-radius:0; border:0; border-bottom:1px solid #9ca3af; padding:7px 6px; }
.delivery-info-form label, .delivery-title-box label { font-size:13px; margin-bottom:2px; }
.delivery-item-wrap { border-radius:0; border-color:#111827; overflow:visible; }
.delivery-edit-table { min-width:1180px; }
.delivery-edit-table th, .delivery-edit-table td { border:1px solid #111827; padding:6px 5px; font-size:13px; }
.delivery-edit-table th { text-align:center; background:#f3f4f6; color:#111827; }
.delivery-edit-table input { border:0; border-radius:0; padding:5px 4px; min-width:60px; background:transparent; }
.delivery-edit-table input:focus { background:#eff6ff; box-shadow:none; }
.delivery-edit-table .row-no, .delivery-edit-table .item-amount-cell { text-align:center; font-weight:800; }
.delivery-edit-table .sales-product-field .autocomplete-list { top:32px; min-width:330px; }
.price-memory-tip { color:#dc2626; font-size:11px; line-height:1.2; margin-top:2px; min-height:14px; }
.delivery-summary-edit { display:grid; grid-template-columns: repeat(6, minmax(0,1fr)); border:1px solid #111827; border-top:0; }
.delivery-summary-edit > div { min-height:44px; padding:7px 8px; border-right:1px solid #111827; display:flex; align-items:center; gap:6px; }
.delivery-summary-edit > div:last-child { border-right:0; }
.delivery-summary-edit label { margin:0; white-space:nowrap; }
.delivery-summary-edit input { border-radius:0; border:0; border-bottom:1px solid #9ca3af; padding:4px 3px; }

.delivery-print-sheet { max-width: 980px; margin:0 auto; color:#111827; font-family:"SimSun", "Microsoft YaHei", Arial, sans-serif; }
.delivery-print-head { display:grid; grid-template-columns: 1fr 220px; align-items:start; border-bottom:0; margin-bottom:14px; }
.delivery-company { text-align:center; color:#dc2626; font-size:24px; font-weight:700; letter-spacing:4px; padding-top:4px; }
.delivery-doc-title { text-align:center; font-size:18px; line-height:1.7; }
.delivery-doc-title strong { font-size:16px; }
.delivery-meta { display:grid; grid-template-columns: 1.4fr 1fr 1fr; gap:4px 26px; font-size:14px; margin-bottom:4px; }
.delivery-meta div { min-height:20px; }
.delivery-meta span { color:#111827; }
.delivery-print-table { width:100%; border-collapse:collapse; margin-top:2px; }
.delivery-print-table th, .delivery-print-table td { border:1px solid #111827; padding:4px 5px; color:#111827; font-size:13px; line-height:1.25; }
.delivery-print-table th { font-weight:700; text-align:center; background:#fff; }
.delivery-print-table td:nth-child(1), .delivery-print-table td:nth-child(6), .delivery-print-table td:nth-child(7), .delivery-print-table td:nth-child(8), .delivery-print-table td:nth-child(9) { text-align:center; }
.delivery-print-table .blank-row td { height:22px; }
.delivery-total-row td { font-weight:700; }
.delivery-extra-summary { display:flex; gap:24px; font-size:12px; margin-top:6px; }
.delivery-footer-note { font-weight:700; font-size:13px; margin:8px 0 18px; }
.delivery-remark { font-size:13px; margin-bottom:12px; }
.delivery-sign-row { display:grid; grid-template-columns: 1fr 1fr; gap:70px; margin-top:26px; font-size:14px; }
@media (max-width: 1100px) { .delivery-form-head, .delivery-info-form { grid-template-columns:1fr; } .delivery-summary-edit { grid-template-columns:1fr 1fr; } }
@media print {
  .delivery-print-sheet { max-width:none; width:100%; }
  .delivery-company { font-size:22px; }
  .delivery-doc-title { font-size:17px; }
  .delivery-meta { font-size:13px; }
  .delivery-print-table th, .delivery-print-table td { font-size:12px; padding:3px 4px; }
  .delivery-print-table .blank-row td { height:20px; }
  @page { size: A4 landscape; margin: 9mm; }
}

/* V2.3: sales order column visibility + company logo */
.so-col-hidden { display: none !important; }
.visibility-editor { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; padding: 10px; background: #f8fafc; border: 1px solid #dbe4ee; border-radius: 10px; }
.visibility-pill { display: inline-flex; align-items: center; gap: 6px; padding: 6px 10px; border: 1px solid #cbd5e1; border-radius: 999px; background: #fff; font-size: 13px; cursor: pointer; user-select: none; }
.visibility-pill input { margin: 0; }
.strong-visibility-editor { border: 2px solid #2563eb; background: #eff6ff; }
.logo-setting-preview { width: 160px; min-height: 56px; border: 1px dashed #cbd5e1; border-radius: 10px; padding: 8px; background: #fff; display: flex; align-items: center; justify-content: center; margin: 8px 0; }
.logo-setting-preview img { max-width: 140px; max-height: 60px; object-fit: contain; }
.inline-check { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; margin: 4px 0 8px; }
.delivery-logo-preview, .delivery-print-logo { display:flex; align-items:center; justify-content:center; }
.delivery-logo-preview { width: 86px; min-width: 86px; height: 64px; border: 1px solid #dbe4ee; border-radius: 10px; background:#fff; margin-right: 12px; }
.delivery-logo-preview img { max-width: 78px; max-height: 56px; object-fit: contain; }
.delivery-print-logo { width: 86px; height: 58px; margin-right: 10px; }
.delivery-print-logo img { max-width: 82px; max-height: 54px; object-fit: contain; }
@media print {
  .so-col-hidden { display: none !important; }
  .delivery-print-logo img { max-width: 80px; max-height: 50px; }
}
.delivery-form-head.has-logo { grid-template-columns: 86px 1fr 260px; }
.delivery-print-head.has-logo { grid-template-columns: 86px 1fr 220px; }

/* V2.6: 细分权限管理 */
.permission-check-panel { margin-top: 14px; border: 2px solid #dbeafe; background: #f8fbff; border-radius: 14px; padding: 14px; }
.permission-check-grid { display:grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 10px; }
.permission-check-item { display:flex; align-items:center; gap:8px; padding: 10px 12px; border:1px solid #cbd5e1; border-radius: 12px; background:#fff; font-weight:700; cursor:pointer; }
.permission-check-item input { margin:0; width:16px; height:16px; }
.mini-permission-list { display:flex; flex-wrap:wrap; gap:5px; max-width:520px; }
@media (max-width:1100px){ .permission-check-grid { grid-template-columns: repeat(2, minmax(0,1fr)); } }
@media (max-width:720px){ .permission-check-grid { grid-template-columns: 1fr; } }

/* V2.6: LOGO 固定显示在左上角 */
.sidebar-logo { display:block; max-width: 72px; max-height: 42px; object-fit: contain; margin: 0 0 8px 0; background:#fff; border-radius:8px; padding:4px; }
.delivery-form-head.has-logo, .delivery-print-head.has-logo { grid-template-columns: 92px 1fr 220px; }
.delivery-logo-preview, .delivery-print-logo { justify-content:flex-start; align-items:flex-start; margin:0; }
.delivery-logo-preview { border:0; padding:0; height:auto; }
.delivery-logo-preview img { max-width:88px; max-height:62px; }
.delivery-print-logo img { max-width:88px; max-height:58px; }

/* V2.7: 左侧功能栏重新排版 + 客户管理 */
.sidebar-v27 { width: 258px; background: linear-gradient(180deg, #0f172a 0%, #111827 52%, #0b1220 100%); box-shadow: 10px 0 30px rgba(15,23,42,.14); }
.main-v27 { margin-left: 258px; width: calc(100% - 258px); }
.brand-v27 { display:flex; align-items:center; gap:12px; padding:18px 16px; }
.brand-v27 .brand-mark { width:54px; min-width:54px; display:flex; align-items:center; justify-content:center; }
.brand-v27 .sidebar-logo { margin:0; max-width:54px; max-height:44px; border-radius:12px; }
.brand-fallback { width:44px; height:44px; border-radius:14px; display:flex; align-items:center; justify-content:center; background:linear-gradient(135deg,#2563eb,#06b6d4); color:#fff; font-size:22px; font-weight:900; }
.brand-text strong { display:block; color:#fff; font-size:17px; line-height:1.25; }
.brand-text small { margin-top:5px; }
.nav-v27 { padding:12px 12px 18px; overflow:auto; }
.nav-section { margin-bottom:14px; padding-bottom:10px; border-bottom:1px solid rgba(255,255,255,.08); }
.nav-section:last-child { border-bottom:0; }
.nav-title { color:#93a4bd; font-size:12px; font-weight:800; padding:5px 10px; letter-spacing:.08em; }
.nav-v27 a { display:flex; align-items:center; gap:9px; padding:10px 11px; margin:3px 0; border-radius:12px; color:#d6dee9; font-weight:650; transition:.16s ease; }
.nav-v27 a span { width:22px; text-align:center; opacity:.95; }
.nav-v27 a:hover { background:rgba(37,99,235,.22); color:#fff; transform:translateX(2px); }
.userbar-v27 { padding:14px 16px 16px; }
.user-pill { display:inline-flex; max-width:100%; padding:6px 10px; border-radius:999px; background:rgba(37,99,235,.22); color:#e0edff; font-weight:800; }
.user-role { margin:8px 0; color:#9ca3af; font-size:12px; }
.userbar-v27 a { color:#fff; font-weight:700; }
.topbar-v27 { height:64px; }
.customer-results { top:68px; }
@media (max-width: 720px) { .sidebar-v27 { width:100%; position:relative; } .main-v27 { margin-left:0; width:100%; } }
/* V2.8 inventory / todo enhancements */
.stock-warning { background:#fff7ed; }
.stock-warning td:first-child::after { content:' 预警'; color:#c2410c; font-size:12px; margin-left:6px; }
.badge.warn { background:#fff7ed; color:#c2410c; border-color:#fed7aa; }
.badge.ok { background:#ecfdf5; color:#047857; border-color:#bbf7d0; }
.todo-item .actions-inline { display:flex; gap:6px; }
.inventory-code { font-family: ui-monospace, SFMono-Regular, Consolas, monospace; font-weight:700; }
.readonly-input{background:#f3f4f6;color:#475569;font-weight:700;}

/* V3.0 登录页工业风背景 + 左侧浅色功能栏 */
.login-industrial-bg {
  position: relative;
  justify-content: center;
  gap: 34px;
  padding: 28px;
  overflow: hidden;
  background:
    radial-gradient(circle at 18% 18%, rgba(37,99,235,.24), transparent 30%),
    radial-gradient(circle at 82% 78%, rgba(14,165,233,.18), transparent 32%),
    linear-gradient(135deg, #eef6ff 0%, #f8fafc 42%, #eaf1f8 100%);
}
.login-industrial-bg::before {
  content: "";
  position: absolute;
  inset: -120px;
  background-image:
    linear-gradient(rgba(148,163,184,.18) 1px, transparent 1px),
    linear-gradient(90deg, rgba(148,163,184,.18) 1px, transparent 1px);
  background-size: 38px 38px;
  transform: rotate(-6deg);
  opacity: .55;
}
.login-industrial-bg::after {
  content: "";
  position: absolute;
  right: -160px;
  top: -160px;
  width: 520px;
  height: 520px;
  border-radius: 50%;
  border: 70px solid rgba(37,99,235,.08);
  box-shadow: inset 0 0 0 28px rgba(15,23,42,.04), 0 0 0 44px rgba(14,165,233,.04);
}
.login-hero-panel, .login-box-v30 { position: relative; z-index: 1; }
.login-hero-panel {
  width: min(480px, 42vw);
  min-height: 430px;
  padding: 36px;
  border-radius: 28px;
  color: #0f172a;
  background: rgba(255,255,255,.45);
  border: 1px solid rgba(255,255,255,.75);
  box-shadow: 0 24px 70px rgba(15,23,42,.12);
  backdrop-filter: blur(10px);
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}
.hero-badge { width: fit-content; padding: 7px 12px; border-radius: 999px; background:#dbeafe; color:#1d4ed8; font-weight:900; letter-spacing:.12em; }
.login-hero-panel h2 { margin: 14px 0 10px; font-size: 34px; line-height: 1.18; letter-spacing: .04em; }
.login-hero-panel p { margin: 0; color:#475569; font-size: 16px; line-height:1.7; }
.seal-illustration { position: relative; height: 180px; margin-top: 28px; }
.seal-illustration .ring { position:absolute; border-radius:50%; border: 20px solid rgba(37,99,235,.28); background:rgba(255,255,255,.35); box-shadow: 0 18px 50px rgba(37,99,235,.18), inset 0 0 0 14px rgba(255,255,255,.6); }
.seal-illustration .ring-1 { width: 154px; height: 154px; left: 16px; bottom: 6px; }
.seal-illustration .ring-2 { width: 118px; height: 118px; left: 145px; bottom: 28px; border-color: rgba(15,23,42,.18); }
.seal-illustration .ring-3 { width: 84px; height: 84px; left: 252px; bottom: 45px; border-width:16px; border-color: rgba(14,165,233,.32); }
.seal-illustration .shaft { position:absolute; left: 52px; right: 20px; bottom: 82px; height: 24px; border-radius: 999px; background:linear-gradient(90deg,#94a3b8,#e2e8f0,#64748b); box-shadow:0 10px 24px rgba(15,23,42,.12); }
.login-box-v30 { width: 410px; border:0; border-radius: 26px; padding: 30px; box-shadow: 0 26px 80px rgba(15,23,42,.18); }
.login-box-v30 h1 { font-size: 24px; }
.login-box-v30 input { height: 42px; border-radius: 12px; }
.login-box-v30 .btn.primary { height: 44px; border-radius: 12px; font-weight: 800; }

.sidebar-v27 {
  background: linear-gradient(180deg, #ffffff 0%, #f8fbff 54%, #eef6ff 100%) !important;
  color: #334155 !important;
  border-right: 1px solid #dbeafe;
  box-shadow: 8px 0 28px rgba(37,99,235,.08) !important;
}
.brand-v27 { border-bottom: 1px solid #e0ecff !important; }
.brand-text strong { color:#0f172a !important; }
.brand-text small { color:#64748b !important; }
.brand-fallback { background:linear-gradient(135deg,#2563eb,#38bdf8) !important; color:#fff; }
.nav-section { border-bottom:1px solid #e0ecff !important; }
.nav-title { color:#2563eb !important; }
.nav-v27 a { color:#334155 !important; background: transparent; }
.nav-v27 a:hover, .nav-v27 a.active {
  background:#eaf3ff !important;
  color:#1d4ed8 !important;
  box-shadow: inset 3px 0 0 #2563eb;
}
.userbar-v27 { border-top:1px solid #e0ecff !important; color:#64748b !important; }
.user-pill { background:#dbeafe !important; color:#1d4ed8 !important; }
.user-role { color:#64748b !important; }
.userbar-v27 a { color:#1d4ed8 !important; }
.topbar-v27 { background: rgba(255,255,255,.92); }
@media (max-width: 920px) {
  .login-industrial-bg { gap: 18px; }
  .login-hero-panel { display:none; }
}

/* V3.1 pagination and code display */
.pagination-bar {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin-top:14px;
  padding:12px;
  border:1px solid #e2e8f0;
  border-radius:14px;
  background:#f8fafc;
  flex-wrap:wrap;
}
.page-info { color:#475569; font-weight:700; }
.page-size-form { display:flex; align-items:center; gap:6px; color:#64748b; }
.page-size-form select { min-width:76px; height:34px; border-radius:10px; border:1px solid #cbd5e1; padding:0 8px; background:#fff; }
.page-links { display:flex; gap:8px; flex-wrap:wrap; }
.btn.disabled { opacity:.45; pointer-events:none; }
.code-display { font-weight:800; color:#1d4ed8; background:#eff6ff !important; min-width:96px; }
.sales-item-table th:first-child, .sales-item-table td:first-child { min-width:110px; }
/* V3.3 入库/出库复用销售单版式：产品型号格内显示内部编码 */
.code-chip { margin-top:3px; font-size:11px; color:#2563eb; font-weight:700; line-height:1.2; }
.delivery-edit-table .code-chip { white-space:nowrap; }

/* V3.5 待办图片与盘点增强 */
.todo-add-form-large { gap: 8px; flex-wrap: wrap; }
.todo-file { max-width: 220px; }
.todo-list-large { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.todo-list-large .todo-item { align-items: flex-start; min-height: 96px; }
.todo-body { flex: 1; min-width: 0; }
.todo-thumb { display:block; margin-top:8px; width:100%; max-height:150px; object-fit:cover; border-radius:12px; border:1px solid #e5e7eb; background:#fff; }
.todo-history-thumb { width:86px; height:58px; object-fit:cover; border-radius:8px; border:1px solid #e5e7eb; }
.text-danger { color:#dc2626; }
.text-success { color:#16a34a; }
@media (max-width: 980px){ .todo-list-large { grid-template-columns: 1fr; } }

/* V3.7 库存盘点表格与搜索下拉修复 */
.count-table-wrap { overflow: visible; }
.count-edit-table { min-width: 920px; }
.count-edit-table .autocomplete-list { top: 38px; min-width: 420px; z-index: 9999; }
.count-edit-table .autocomplete-item { line-height: 1.35; }
.count-edit-table input[readonly] { background:#f8fafc; color:#334155; font-weight:700; }
.count-note-cell { display:flex; gap:6px; align-items:center; }
.count-note-cell input { flex:1; }
.inline-upload-form { display:flex; align-items:center; gap:10px; flex-wrap:wrap; padding:12px; margin:12px 0; border:1px dashed #cbd5e1; border-radius:14px; background:#f8fafc; }
.inline-upload-form input[type=file] { max-width:280px; }


/* V3.8 库存预警增强 */
.stock-strong-alert { margin-top:8px; padding:10px 14px; border:2px solid #f97316; background:#fff7ed; color:#9a3412; border-radius:12px; font-weight:800; box-shadow:0 6px 18px rgba(249,115,22,.14); }
.stock-strong-alert span { display:inline-block; margin-right:6px; }
.stock-big { font-size:24px; line-height:1; font-weight:900; letter-spacing:.3px; }
.stock-low { color:#dc2626; }
.stock-ok { color:#047857; }
.fixed-variant-detail-table th { white-space:nowrap; }
.fixed-variant-detail-table td { vertical-align:middle; }
.warning-input { width:96px; min-width:80px; text-align:center; font-weight:700; }
.inventory-combined-table td { vertical-align:middle; }
.inventory-combined-table .stock-big { font-size:22px; }
.badge.orange { background:#fed7aa; color:#9a3412; }
.badge.gray { background:#e5e7eb; color:#374151; }


/* V3.9 产品详情库存预警位置 + 材质价格中间字段显示 */
.product-hero-card {
  display:grid;
  grid-template-columns: minmax(300px, 1.1fr) minmax(360px, 1.6fr) auto;
  gap: 22px;
  align-items:center;
  min-height:132px;
}
.product-hero-main h2 { font-size:30px; letter-spacing:.02em; }
.product-hero-alerts {
  display:flex;
  align-items:center;
  gap:16px;
  flex-wrap:wrap;
  min-height:82px;
}
.product-hero-alerts:empty { display:none; }
.product-hero-actions { justify-content:flex-end; }
a.stock-strong-alert {
  display:flex;
  flex-direction:column;
  justify-content:center;
  min-width:178px;
  min-height:82px;
  margin:0;
  padding:13px 18px;
  border:2px solid #ef4444;
  background:#fff5f5;
  color:#dc2626;
  border-radius:10px;
  font-weight:900;
  box-shadow:0 10px 26px rgba(239,68,68,.13);
  text-decoration:none;
}
a.stock-strong-alert:hover { transform: translateY(-1px); box-shadow:0 14px 32px rgba(239,68,68,.18); }
a.stock-strong-alert strong { font-size:16px; letter-spacing:.04em; margin-bottom:4px; }
a.stock-strong-alert span { display:block; margin:0; font-size:14px; line-height:1.35; }
a.stock-strong-alert em { display:block; margin-top:4px; font-style:normal; font-size:13px; color:#991b1b; }
.fixed-variant-detail-table th:nth-child(3), .fixed-variant-detail-table td:nth-child(3) { text-align:center; }
.stock-low { color:#dc2626 !important; }
.stock-warning .stock-big { color:#dc2626 !important; }
#variant-section { scroll-margin-top: 82px; }
@media (max-width: 1200px) {
  .product-hero-card { grid-template-columns: 1fr; align-items:flex-start; }
  .product-hero-actions { justify-content:flex-start; }
}

/* V4.0 系统日志 / 诊断 */
.notice.info { background:#eef6ff; border:1px solid #bfdbfe; color:#1e3a8a; padding:12px 14px; border-radius:12px; margin:12px 0; }
.log-table code { font-size:12px; white-space:normal; color:#475569; }
.log-table details summary { cursor:pointer; color:#2563eb; }
.log-detail { max-width:680px; max-height:320px; overflow:auto; background:#0f172a; color:#dbeafe; padding:12px; border-radius:10px; font-size:12px; line-height:1.55; white-space:pre-wrap; }
.badge { display:inline-flex; align-items:center; padding:4px 8px; border-radius:999px; font-size:12px; font-weight:700; }
.badge-error { background:#fee2e2; color:#b91c1c; }
.badge-warning { background:#fef3c7; color:#92400e; }
.badge-info { background:#dbeafe; color:#1d4ed8; }
tr.log-error { background:#fff7f7; }
tr.log-warning { background:#fffbeb; }
.error-page { min-height:100vh; display:flex; align-items:center; justify-content:center; background:linear-gradient(135deg,#eff6ff,#f8fafc); }
.error-card { width:min(560px,92vw); background:white; border:1px solid #e2e8f0; border-radius:24px; padding:34px; box-shadow:0 20px 70px rgba(15,23,42,.12); }
.error-card h1 { margin-top:0; font-size:30px; color:#0f172a; }
.bug-id { margin:18px 0; padding:14px 16px; border-radius:14px; background:#fff7ed; border:1px solid #fed7aa; color:#9a3412; font-weight:800; }

.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:16px}.stat label{display:block;color:var(--muted);font-size:13px;margin-bottom:6px}.stat strong{font-size:22px}@media(max-width:900px){.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr));}}


/* V4.2.2 采购订单本次应付/本次实付 */
.purchase-payable-panel{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:14px 0 10px;}
.payable-card{border:1px solid #dbe5f0;background:#f8fbff;border-radius:14px;padding:12px 14px;box-shadow:0 6px 18px rgba(15,23,42,.05);}
.payable-card span{display:block;font-size:13px;color:#64748b;margin-bottom:4px;}
.payable-card strong{display:block;font-size:22px;line-height:1.2;color:#0f172a;}
.payable-card small{display:block;color:#94a3b8;margin-top:4px;font-size:12px;}
.payable-card.warning{background:#fff7ed;border-color:#fed7aa;}
.payable-card.warning strong{color:#dc2626;}
@media(max-width:900px){.purchase-payable-panel{grid-template-columns:1fr;}}

/* V4.2.2 采购订单本次应付/本次实付 */
.purchase-inline-payable{align-items:stretch;}
.purchase-inline-payable > div{min-height:42px;}
.purchase-inline-payable input{font-weight:700;color:#111827;}
#purchase-payable,#purchase-current-unpaid{font-weight:800;font-size:17px;}
#purchase-current-unpaid{color:#dc2626;}

/* V4.3 旧进销存导入适配 */
.compact-table th, .compact-table td { padding: 8px 9px; font-size: 13px; white-space: nowrap; }
.table-input { width: 140px; min-width: 100px; border: 1px solid #cbd5e1; border-radius: 8px; padding: 6px 8px; background: #fff; }
.table-input.small { width: 82px; min-width: 72px; }
.warn-row { background: #fff7ed; }
.badge.success { background:#dcfce7; color:#15803d; }
.badge.danger { background:#fee2e2; color:#b91c1c; }

/* V4.4 业务单据统一用“规格”显示：型号+材质，内部仍保留型号/材质/编码 */
.code-chip{font-size:12px;color:#64748b;margin-top:4px;}
.muted-col{color:#94a3b8;}

/* V4.5.7 手机版适配：同一网址自动切换手机布局 */
.mobile-topbar,
.mobile-bottom-nav,
.mobile-drawer-close,
.mobile-nav-overlay,
.mobile-quick-actions,
.mobile-scroll-hint { display: none; }

@media (max-width: 820px) {
  html { scroll-behavior: smooth; }
  body.app-shell {
    min-width: 0;
    overflow-x: hidden;
    padding-bottom: calc(68px + env(safe-area-inset-bottom));
  }
  body.mobile-nav-open { overflow: hidden; }

  .layout { display: block; min-height: 100vh; }
  .main-v27,
  .main {
    width: 100% !important;
    margin-left: 0 !important;
    min-width: 0;
  }
  .desktop-topbar { display: none !important; }

  .mobile-topbar {
    position: sticky;
    top: 0;
    z-index: 70;
    display: grid;
    grid-template-columns: 44px minmax(0, 1fr) auto;
    align-items: center;
    gap: 10px;
    min-height: 62px;
    padding: max(8px, env(safe-area-inset-top)) 12px 8px;
    border-bottom: 1px solid #dbe5f0;
    background: rgba(255,255,255,.96);
    box-shadow: 0 5px 18px rgba(15,23,42,.08);
    backdrop-filter: blur(12px);
  }
  .mobile-menu-button,
  .mobile-icon-button {
    width: 42px;
    height: 42px;
    min-width: 42px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid #dbe5f0;
    border-radius: 13px;
    background: #fff;
    color: #1e3a8a;
    box-shadow: 0 4px 12px rgba(15,23,42,.06);
  }
  .mobile-menu-button { flex-direction: column; gap: 4px; cursor: pointer; }
  .mobile-menu-button span { width: 19px; height: 2px; border-radius: 10px; background: #1e3a8a; }
  .mobile-icon-button { font-size: 26px; font-weight: 700; line-height: 1; }
  .mobile-add-button { color: #fff; background: #2563eb; border-color: #2563eb; }
  .mobile-page-heading { min-width: 0; line-height: 1.2; }
  .mobile-page-heading small {
    display: block;
    max-width: 100%;
    margin-bottom: 3px;
    overflow: hidden;
    color: #64748b;
    font-size: 11px;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .mobile-page-heading strong {
    display: block;
    max-width: 100%;
    overflow: hidden;
    color: #0f172a;
    font-size: 16px;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .mobile-top-actions { display: flex; gap: 6px; }

  .sidebar-v27,
  .sidebar {
    position: fixed !important;
    inset: 0 auto 0 0 !important;
    z-index: 100;
    width: min(88vw, 350px) !important;
    height: 100dvh;
    transform: translateX(-104%);
    transition: transform .24s ease;
    box-shadow: 18px 0 50px rgba(15,23,42,.24) !important;
    overflow: hidden;
  }
  body.mobile-nav-open .sidebar-v27,
  body.mobile-nav-open .sidebar { transform: translateX(0); }
  .mobile-nav-overlay {
    position: fixed;
    inset: 0;
    z-index: 90;
    display: block;
    visibility: hidden;
    opacity: 0;
    background: rgba(15,23,42,.48);
    backdrop-filter: blur(2px);
    transition: opacity .22s ease, visibility .22s ease;
  }
  body.mobile-nav-open .mobile-nav-overlay { visibility: visible; opacity: 1; }
  .mobile-drawer-close {
    position: absolute;
    top: max(10px, env(safe-area-inset-top));
    right: 10px;
    z-index: 3;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: 38px;
    border: 1px solid #cbd5e1;
    border-radius: 12px;
    background: #fff;
    color: #475569;
    font-size: 26px;
    cursor: pointer;
  }
  .brand-v27 { padding-top: max(18px, calc(env(safe-area-inset-top) + 10px)); padding-right: 54px; }
  .nav-v27 { overscroll-behavior: contain; -webkit-overflow-scrolling: touch; }
  .nav-v27 a { min-height: 44px; font-size: 15px; }
  .userbar-v27 { padding-bottom: max(18px, env(safe-area-inset-bottom)); }

  .content {
    width: 100%;
    max-width: 100%;
    padding: 12px 12px calc(96px + env(safe-area-inset-bottom));
    overflow: hidden;
  }
  .card {
    margin-bottom: 12px;
    padding: 14px;
    border-radius: 15px;
    box-shadow: 0 6px 18px rgba(15,23,42,.045);
  }
  .card h2 { font-size: 20px; }
  .card h3,
  .detail-section-title h3 { font-size: 18px; }
  .detail-readable-card { padding: 14px; }
  .detail-section-title { align-items: flex-start; }
  .footer-note { text-align: center; margin: 18px 0 0; }

  .grid,
  .grid-2,
  .grid-3,
  .form-row,
  .form-row.two,
  .form-row.three,
  .searchbar,
  .pump-searchbar,
  .delivery-form-head,
  .delivery-info-form,
  .product-hero-card,
  .purchase-payable-panel,
  .stats-grid {
    grid-template-columns: minmax(0, 1fr) !important;
  }
  .grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 10px; }
  .stat { min-width: 0; padding: 14px 12px; border-radius: 14px; }
  .stat .num { font-size: 26px; }
  .stat .label { font-size: 12px; }

  .form-field { margin-bottom: 11px; }
  label { margin-bottom: 5px; font-size: 13px; }
  input[type="text"],
  input[type="password"],
  input[type="number"],
  input[type="date"],
  input[type="datetime-local"],
  input[type="file"],
  select,
  textarea {
    min-height: 44px;
    border-radius: 11px;
    padding: 10px 11px;
    font-size: 16px;
  }
  textarea { min-height: 96px; }
  input[type="checkbox"], input[type="radio"] { min-height: auto; }

  .btn {
    min-height: 42px;
    justify-content: center;
    padding: 10px 13px;
    border-radius: 11px;
    font-size: 14px;
  }
  .btn.small { min-height: 36px; padding: 8px 10px; font-size: 13px; }
  .actions { max-width: 100%; gap: 7px; }
  .actions form { margin: 0; }
  .card > .actions[style*="justify-content:space-between"],
  .card > .actions[style*="justify-content: space-between"] {
    align-items: stretch !important;
    flex-direction: column;
  }

  .searchbar .form-field:last-child { margin-bottom: 0; }
  .searchbar .form-field:last-child .btn { width: 100%; }
  .pump-searchbar .btn { width: 100%; }

  .kv { grid-template-columns: 98px minmax(0, 1fr); gap: 8px; padding: 10px 0; }
  .kv .k { font-size: 13px; }
  .kv > div:last-child { min-width: 0; overflow-wrap: anywhere; }

  .product-hero-main h2 { font-size: 24px; }
  .product-hero-alerts { min-height: 0; width: 100%; }
  a.stock-strong-alert { width: 100%; min-width: 0; min-height: 72px; }
  .product-hero-actions { width: 100%; }
  .product-hero-actions .btn { flex: 1; }
  .gallery,
  .detail-image-gallery { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 9px; }
  .gallery-item { padding: 7px; border-radius: 12px; }
  .gallery-item img,
  .detail-image-only img { height: 132px; }
  .thumb-preview .preview-box { display: none !important; }

  .table-wrap {
    max-width: 100%;
    border: 0;
    border-radius: 0;
    background: transparent;
  }
  .mobile-card-table-wrap { overflow: visible; }
  table.mobile-card-table,
  table.mobile-card-table tbody,
  table.mobile-card-table tr,
  table.mobile-card-table td { display: block; width: 100%; }
  table.mobile-card-table { min-width: 0 !important; background: transparent; }
  table.mobile-card-table thead { display: none; }
  table.mobile-card-table tbody { display: grid; gap: 10px; }
  table.mobile-card-table tr {
    overflow: hidden;
    border: 1px solid #dbe5f0;
    border-radius: 14px;
    background: #fff;
    box-shadow: 0 5px 15px rgba(15,23,42,.045);
  }
  table.mobile-card-table tr.stock-warning { border-color: #fdba74; background: #fffaf5; }
  table.mobile-card-table td {
    min-height: 42px;
    display: grid;
    grid-template-columns: minmax(92px, 34%) minmax(0, 1fr);
    align-items: center;
    gap: 10px;
    padding: 9px 11px;
    border: 0;
    border-bottom: 1px dashed #e2e8f0;
    background: transparent !important;
    font-size: 14px;
    font-weight: 500;
    white-space: normal !important;
    overflow-wrap: anywhere;
  }
  table.mobile-card-table td:last-child { border-bottom: 0; }
  table.mobile-card-table td::before {
    content: attr(data-label);
    color: #64748b;
    font-size: 12px;
    font-weight: 800;
  }
  table.mobile-card-table td.mobile-no-label { grid-template-columns: 1fr; }
  table.mobile-card-table td.mobile-no-label::before { display: none; }
  table.mobile-card-table td .actions { justify-content: flex-start; }
  table.mobile-card-table td .product-img { width: 72px; height: 72px; }
  table.mobile-card-table .price-cell,
  table.mobile-card-table .stock-big { font-size: 18px; }

  .mobile-horizontal-table {
    position: relative;
    overflow-x: auto !important;
    padding-top: 30px;
    border: 1px solid #dbe5f0;
    border-radius: 14px;
    background: #fff;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior-x: contain;
  }
  .mobile-horizontal-table table { margin: 0; }
  .mobile-scroll-hint {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    z-index: 4;
    display: block;
    height: 29px;
    padding: 6px 10px;
    border-bottom: 1px solid #dbe5f0;
    background: #eff6ff;
    color: #1d4ed8;
    font-size: 11px;
    font-weight: 700;
    white-space: nowrap;
  }
  .mobile-horizontal-table th:first-child,
  .mobile-horizontal-table td:first-child {
    position: sticky;
    left: 0;
    z-index: 2;
    background: #fff;
    box-shadow: 2px 0 0 #e2e8f0;
  }
  .mobile-horizontal-table th:first-child { z-index: 3; background: #f8fafc; }
  .delivery-item-wrap,
  .sales-item-wrap,
  .count-table-wrap { overflow-x: auto !important; overflow-y: visible; }
  .delivery-edit-table,
  .sales-item-table,
  .contract-item-edit-table,
  .count-edit-table { min-width: 980px !important; }
  .delivery-summary-edit { grid-template-columns: 1fr 1fr !important; }
  .delivery-summary-edit > div { min-width: 0; }

  .pagination-bar { justify-content: center; padding: 10px; }
  .page-info { width: 100%; text-align: center; }
  .page-size-form { justify-content: center; }
  .page-links { justify-content: center; }

  .todo-headline { grid-template-columns: 1fr !important; }
  .todo-headline > .actions { align-items: stretch !important; }
  .todo-add-form,
  .todo-add-form-large { min-width: 0; width: 100%; flex-direction: column; }
  .todo-add-form input,
  .todo-file { min-width: 0; max-width: none; width: 100%; }
  .todo-list-large { grid-template-columns: 1fr; }
  .todo-item { grid-template-columns: 36px minmax(0, 1fr) !important; gap: 8px; }
  .todo-item > form:first-child { grid-row: 1 / span 2; }
  .todo-body { grid-column: 2; }
  .todo-row-actions { grid-column: 2; display: flex; gap: 7px; justify-content: flex-end; }
  .todo-row-actions form { margin: 0; }
  .todo-time { display: block; }

  .mobile-quick-actions {
    display: grid;
    grid-template-columns: repeat(4, minmax(0,1fr));
    gap: 8px;
    margin-bottom: 12px;
  }
  .mobile-quick-actions a {
    min-width: 0;
    min-height: 72px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 6px;
    padding: 8px 4px;
    border: 1px solid #dbe5f0;
    border-radius: 14px;
    background: #fff;
    color: #334155;
    font-size: 12px;
    font-weight: 700;
    box-shadow: 0 4px 13px rgba(15,23,42,.045);
  }
  .mobile-quick-actions a span { font-size: 23px; line-height: 1; color: #2563eb; }

  .mobile-bottom-nav {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 80;
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    min-height: calc(64px + env(safe-area-inset-bottom));
    padding: 5px 5px env(safe-area-inset-bottom);
    border-top: 1px solid #dbe5f0;
    background: rgba(255,255,255,.97);
    box-shadow: 0 -8px 28px rgba(15,23,42,.1);
    backdrop-filter: blur(12px);
  }
  .mobile-bottom-nav a,
  .mobile-bottom-nav button {
    min-width: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 2px;
    border: 0;
    border-radius: 12px;
    background: transparent;
    color: #64748b;
    font-family: inherit;
    cursor: pointer;
  }
  .mobile-bottom-nav span { font-size: 22px; line-height: 1; }
  .mobile-bottom-nav small { font-size: 11px; font-weight: 700; }
  .mobile-bottom-nav a.active { color: #1d4ed8; background: #eff6ff; }

  .login-page { min-height: 100dvh; padding: 18px; }
  .login-industrial-bg { display: flex; padding: 18px; }
  .login-box { width: 100%; max-width: 410px; padding: 22px 18px; border-radius: 20px; }
  .login-box h1 { font-size: 24px; }
  .login-box .btn { min-height: 46px; }

  .contract-sheet,
  .delivery-print-sheet,
  .print-sheet { max-width: 100%; overflow-x: auto; }
  .contract-sign-area,
  .contract-date-row { gap: 20px; }
  .print-meta-grid { grid-template-columns: 1fr 1fr; }

  .autocomplete-list { position: fixed; left: 12px; right: 12px; top: 92px; max-height: 52vh; }
  .count-edit-table .autocomplete-list,
  .delivery-edit-table .autocomplete-list,
  .sales-item-table .autocomplete-list { position: absolute; left: 0; right: auto; top: 38px; min-width: 310px; max-width: 86vw; }
}

@media (max-width: 420px) {
  .content { padding-left: 9px; padding-right: 9px; }
  .mobile-topbar { padding-left: 9px; padding-right: 9px; }
  .mobile-icon-button { width: 39px; height: 39px; min-width: 39px; }
  .mobile-top-actions { gap: 4px; }
  .mobile-page-heading strong { font-size: 15px; }
  .grid-4 { gap: 8px; }
  .gallery,
  .detail-image-gallery { grid-template-columns: 1fr 1fr; }
  .mobile-quick-actions { grid-template-columns: repeat(4, minmax(0,1fr)); gap: 6px; }
  .mobile-quick-actions a { min-height: 66px; font-size: 11px; }
  .mobile-quick-actions a span { font-size: 21px; }
  table.mobile-card-table td { grid-template-columns: 88px minmax(0,1fr); padding: 8px 9px; }
  .delivery-summary-edit { grid-template-columns: 1fr !important; }
}

@media print {
  .mobile-topbar,
  .mobile-bottom-nav,
  .mobile-nav-overlay,
  .mobile-drawer-close,
  .mobile-scroll-hint,
  .mobile-quick-actions { display: none !important; }
  body.app-shell { padding-bottom: 0 !important; }
}

/* V4.6.0：产品查询参数列 + 泵型号批量查询 */
.product-query-table { min-width: 1120px; }
.product-query-table .dimension-summary {
  min-width: 108px;
  max-width: 190px;
  color: #0f172a;
  font-weight: 750;
  line-height: 1.55;
  white-space: normal;
  overflow-wrap: anywhere;
}
.pump-multi-query { min-height: 92px; line-height: 1.55; }
.pump-query-summary {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  margin: -6px 0 18px;
  padding: 12px 14px;
  border: 1px solid #dbeafe;
  border-radius: 14px;
  background: #eff6ff;
}
@media (max-width: 820px) {
  .pump-query-summary { margin-top: -4px; padding: 10px; }
  .product-query-table .dimension-summary { max-width: none; }
}

/* V4.6.1：所有单据预览、打印与下载 PDF 的正文统一加粗 */
.delivery-print-sheet,
.contract-sheet {
  font-weight: 700;
  font-synthesis: weight;
}

@media print {
  .delivery-print-sheet,
  .contract-sheet,
  .delivery-print-sheet table,
  .contract-sheet table,
  .delivery-print-sheet th,
  .delivery-print-sheet td,
  .contract-sheet th,
  .contract-sheet td,
  .delivery-print-sheet div,
  .delivery-print-sheet span,
  .delivery-print-sheet p,
  .contract-sheet div,
  .contract-sheet span,
  .contract-sheet p {
    font-weight: 700 !important;
    font-synthesis: weight;
  }
}


/* V4.6.2：泵型号查密封支持多图上传与查看 */
.pump-image-thumbs { display:flex; flex-wrap:wrap; gap:6px; min-width:86px; }
.pump-image-thumbs a { display:block; }
.pump-image-thumbs img { width:54px; height:54px; object-fit:cover; border:1px solid var(--border); border-radius:8px; background:#fff; }
.pump-image-thumbs img:hover { transform:scale(1.04); }
.pump-existing-images { margin:12px 0 18px; padding:12px; border:1px solid var(--border); border-radius:14px; background:#f8fafc; }
.pump-edit-gallery { grid-template-columns:repeat(auto-fill, minmax(145px, 180px)); }
.pump-edit-gallery .gallery-item form { margin-top:8px; }
@media (max-width: 820px) {
  .pump-image-thumbs { min-width:0; }
  .pump-image-thumbs img { width:48px; height:48px; }
  .pump-edit-gallery { grid-template-columns:repeat(2, minmax(0, 1fr)); }
}


/* V4.6.4：明细行操作与技术规格书 */
.row-operation-actions{display:flex;align-items:center;justify-content:center;gap:6px;white-space:nowrap;}
.row-operation-actions .btn{margin:0;}
.technical-spec-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px;margin-top:12px;}
.technical-spec-item{display:grid;grid-template-columns:72px minmax(0,1fr) auto;gap:10px;align-items:center;border:1px solid var(--line,#d9dee7);border-radius:10px;padding:10px;background:#fff;}
.technical-spec-preview{width:72px;height:72px;border:1px solid var(--line,#d9dee7);border-radius:8px;display:flex;align-items:center;justify-content:center;overflow:hidden;background:#f7f8fa;}
.technical-spec-preview img{width:100%;height:100%;object-fit:cover;}
.technical-spec-pdf{font-weight:800;font-size:20px;color:#b3261e;}
.technical-spec-info{min-width:0;display:flex;flex-direction:column;gap:5px;}
.technical-spec-info a{overflow-wrap:anywhere;}
.technical-spec-upload{display:flex;align-items:flex-end;gap:12px;margin-top:16px;padding-top:14px;border-top:1px dashed var(--line,#d9dee7);}
.technical-spec-upload .form-field{flex:1;margin:0;}
@media(max-width:820px){.technical-spec-item{grid-template-columns:64px minmax(0,1fr);}.technical-spec-preview{width:64px;height:64px;}.technical-spec-item form{grid-column:1/-1;}.technical-spec-upload{align-items:stretch;flex-direction:column;}}


/* V4.7.0 多仓库 */
.warehouse-switch-form{margin:0;display:flex;align-items:center}.warehouse-switch-form select{min-width:155px;background:#eef6ff;border-color:#bfdbfe;font-weight:800}.warehouse-field select{font-weight:750}.warehouse-permission-panel{margin-top:14px}.warehouse-check-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px;margin-top:8px}.muted-disabled{opacity:.45}.document-warehouse-line{padding:7px 10px;margin-bottom:8px;border:1px solid #bfdbfe;background:#eff6ff;border-radius:8px;text-align:right;font-size:13px}.transfer-flow{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px}
/* 所有单据的屏幕预览、浏览器打印、下载 PDF 统一明显加粗 */
.print-sheet,.print-sheet *,.delivery-print-sheet,.delivery-print-sheet *,.contract-sheet,.contract-sheet *,.payment-print-sheet,.payment-print-sheet *{font-weight:700!important;font-synthesis:weight}
@media print{body,body *{font-weight:700!important;font-synthesis:weight}.print-sheet,.print-sheet *,.contract-sheet,.contract-sheet *{font-weight:700!important}}

/* V4.7.0：所有单据预览页面与打印内容统一加粗 */
.document-print-preview, .document-print-preview *,
.delivery-print-sheet, .delivery-print-sheet *,
.contract-sheet, .contract-sheet *,
.payment-print-sheet, .payment-print-sheet *,
.print-sheet, .print-sheet * { font-weight: 700 !important; font-synthesis: weight; }
@media print {
  .delivery-print-sheet, .delivery-print-sheet *, .contract-sheet, .contract-sheet *,
  .payment-print-sheet, .payment-print-sheet *, .print-sheet, .print-sheet * {
    font-weight: 700 !important; font-synthesis: weight;
  }
}


/* V4.7.1：多仓库切换与销售合同列表修复 */
.warehouse-list-filter{flex:0 0 220px;min-width:220px;}
.warehouse-list-filter select{width:100%;min-width:0;}
.search-action-field{flex:0 0 auto;}
@media(max-width:820px){.warehouse-list-filter,.search-action-field{flex:1 1 100%;min-width:0;}}


/* V4.7.2：列表筛选栏统一对齐，仓库与搜索框保持紧凑 */
.product-list-searchbar{grid-template-columns:minmax(220px,280px) minmax(280px,360px) minmax(120px,1fr) minmax(120px,1fr) minmax(120px,1fr) minmax(120px,1fr) auto;justify-content:start;align-items:end;}
.document-list-searchbar{grid-template-columns:minmax(220px,280px) minmax(280px,360px) auto auto;justify-content:start;align-items:end;}
.product-list-searchbar .form-field,.document-list-searchbar .form-field{margin-bottom:0;}
.product-main-search-field,.document-main-search-field{min-width:0;}
.product-main-search-field input,.document-main-search-field input{width:100%;}
@media(max-width:1280px){.product-list-searchbar{grid-template-columns:minmax(210px,260px) minmax(260px,1fr) repeat(2,minmax(130px,1fr));}.product-list-searchbar .form-field:nth-of-type(n+5){grid-column:auto;}}
@media(max-width:1100px){.product-list-searchbar,.document-list-searchbar{grid-template-columns:repeat(2,minmax(0,1fr));}.product-list-searchbar .search-action-field,.document-list-searchbar .search-action-field{width:auto;}}
@media(max-width:720px){.product-list-searchbar,.document-list-searchbar{grid-template-columns:1fr;}.warehouse-list-filter{min-width:0;}}

/* V4.7.2：权限分组 */
.permission-group-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}
.permission-group-card{border:1px solid var(--border);border-radius:12px;padding:12px;background:#fbfdff;}
.permission-group-card h5{margin:0 0 9px;font-size:14px;color:#1e3a8a;}
.permission-check-grid.compact{display:grid;grid-template-columns:1fr;gap:7px;}
.permission-safety-note{margin-top:12px;padding:10px 12px;border:1px solid #fde68a;background:#fffbeb;border-radius:10px;color:#92400e;font-size:13px;line-height:1.6;}
@media(max-width:900px){.permission-group-grid{grid-template-columns:1fr;}}

/* V4.7.2：紧凑对齐的列表搜索栏与权限脱敏 */
.compact-list-searchbar{grid-template-columns:minmax(300px,430px) auto auto;justify-content:start;align-items:end;}
.compact-list-searchbar .form-field{margin-bottom:0;}
.permission-masked{display:inline-flex;align-items:center;min-height:26px;padding:3px 9px;border:1px dashed #cbd5e1;border-radius:8px;background:#f8fafc;color:#64748b;font-size:12px;font-weight:700;white-space:nowrap;}
.product-list-searchbar > .form-field,.document-list-searchbar > .form-field{align-self:end;}
.product-list-searchbar label,.document-list-searchbar label,.compact-list-searchbar label{min-height:20px;display:flex;align-items:center;}
@media(max-width:720px){.compact-list-searchbar{grid-template-columns:1fr;}}

/* V4.7.3：业务页面精简，减少无效说明和留白 */
@media screen {
  .order-sheet-form .delivery-form-head { margin-bottom: 10px; }
  .order-sheet-form .delivery-info-form { gap: 10px; }
  .order-sheet-form .actions { gap: 8px; }
  .card > h2:first-child, .card > h3:first-child { margin-top: 0; }
}


/* V4.7.3 界面精简 */
.page-main > .card > h2:first-child,
.page-main > .card > h3:first-child { margin-top: 0; }
.card .help:empty { display: none; }
.form-field > .help { margin-top: 4px; line-height: 1.45; }
@media (min-width: 900px) {
  .filter-card, .search-card { padding-top: 16px; padding-bottom: 16px; }
}

/* V4.7.4：同一系统窗口内的多页面标签 */
.workspace-tabs-shell {
  position: sticky;
  top: 62px;
  z-index: 9;
  min-width: 0;
  padding: 7px 18px 0;
  border-bottom: 1px solid #dbe5f0;
  background: #eef3f9;
}
.workspace-tabs {
  display: flex;
  align-items: flex-end;
  gap: 5px;
  min-width: 0;
  overflow-x: auto;
  overflow-y: hidden;
  scrollbar-width: thin;
  scrollbar-color: #cbd5e1 transparent;
}
.workspace-tab {
  flex: 0 0 auto;
  min-width: 96px;
  max-width: 230px;
  height: 38px;
  display: flex;
  align-items: center;
  overflow: hidden;
  border: 1px solid #dbe5f0;
  border-bottom: 0;
  border-radius: 11px 11px 0 0;
  background: #e7edf5;
  color: #475569;
}
.workspace-tab.active {
  background: #fff;
  color: #0f172a;
  box-shadow: 0 -1px 0 #fff, 0 4px 12px rgba(15,23,42,.05);
}
.workspace-tab-open {
  min-width: 0;
  height: 100%;
  flex: 1 1 auto;
  display: flex;
  align-items: center;
  gap: 7px;
  padding: 0 6px 0 12px;
  border: 0;
  background: transparent;
  color: inherit;
  font: inherit;
  cursor: pointer;
}
.workspace-tab-title {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 13px;
  font-weight: 700;
}
.workspace-tab-icon { flex: 0 0 auto; color: #64748b; font-size: 14px; }
.workspace-tab.active .workspace-tab-icon { color: #2563eb; }
.workspace-tab-close {
  width: 27px;
  height: 27px;
  flex: 0 0 27px;
  margin-right: 4px;
  border: 0;
  border-radius: 8px;
  background: transparent;
  color: #64748b;
  font-size: 18px;
  line-height: 1;
  cursor: pointer;
}
.workspace-tab-close:hover { background: #fee2e2; color: #dc2626; }
.workspace-tab:hover:not(.active) { background: #f3f6fa; color: #1e293b; }

@media (max-width: 820px) {
  .workspace-tabs-shell {
    top: calc(62px + env(safe-area-inset-top));
    padding: 6px 8px 0;
    z-index: 65;
  }
  .workspace-tab { min-width: 88px; max-width: 180px; height: 36px; }
  .workspace-tab-open { padding-left: 9px; gap: 5px; }
  .workspace-tab-title { font-size: 12px; }
}

@media print {
  .workspace-tabs-shell { display: none !important; }
}
/* V4.8.0：全局搜索、收藏、草稿、通知与库存可用量 */
.command-trigger{white-space:nowrap}.favorite-current.active{color:#b7791f;background:#fff8db;border-color:#f0c94d}
.command-palette{position:fixed;inset:0;background:rgba(15,23,42,.42);z-index:9999;display:flex;justify-content:center;align-items:flex-start;padding-top:min(14vh,120px)}
.command-palette[hidden]{display:none}.command-palette-panel{width:min(680px,calc(100vw - 28px));background:#fff;border-radius:16px;box-shadow:0 24px 70px rgba(15,23,42,.28);overflow:hidden;border:1px solid #dce4ef}
.command-palette-head{display:flex;align-items:center;gap:10px;padding:14px;border-bottom:1px solid #e8edf5}.command-palette-head input{flex:1;border:0;outline:0;font-size:18px;padding:8px 4px}.command-palette-close{border:0;background:#eef2f7;border-radius:9px;width:34px;height:34px;font-size:22px;cursor:pointer}
.command-search-results{max-height:460px;overflow:auto;padding:8px}.command-result{width:100%;border:0;background:transparent;border-radius:10px;padding:10px 12px;display:flex;align-items:center;gap:12px;text-align:left;cursor:pointer}.command-result:hover,.command-result.selected{background:#edf4ff}.command-result-icon{width:34px;height:34px;border-radius:9px;background:#eaf1ff;display:grid;place-items:center;font-size:17px}.command-result-main{display:flex;flex-direction:column;min-width:0;flex:1}.command-result-main strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.command-result-main small{color:#64748b;margin-top:3px}.command-enter{color:#94a3b8}.command-empty{padding:30px;text-align:center;color:#7a8699}.command-palette-open{overflow:hidden}
.autosave-status{position:fixed;right:22px;bottom:22px;background:#0f766e;color:#fff;padding:8px 14px;border-radius:999px;opacity:0;transform:translateY(8px);transition:.2s;z-index:9000;pointer-events:none}.autosave-status.visible{opacity:1;transform:none}.draft-restore-banner{display:flex;gap:8px;align-items:center;justify-content:flex-end;padding:9px 12px;background:#fff8db;border:1px solid #f0d06a;border-radius:10px;margin-bottom:10px}.draft-restore-banner span{margin-right:auto;color:#7c5c00}
.dashboard-notifications{display:flex;gap:10px;flex-wrap:wrap}.notification-chip{display:flex;gap:8px;align-items:center;padding:10px 13px;border:1px solid #d7e2f0;border-radius:12px;background:#f8fbff;text-decoration:none;color:#24364b}.notification-chip b{min-width:24px;height:24px;border-radius:999px;background:#ef4444;color:#fff;display:grid;place-items:center;font-size:12px}.favorite-grid,.recent-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px}.shortcut-card{display:flex;align-items:center;gap:10px;padding:11px 13px;border:1px solid #dde5ef;border-radius:11px;text-decoration:none;color:#26364a;background:#fff}.shortcut-card:hover{border-color:#8db5f6;background:#f7faff}.shortcut-card small{color:#7a8799;display:block;margin-top:3px}.stock-metric{font-variant-numeric:tabular-nums;white-space:nowrap}.stock-metric.available-low{color:#dc2626;font-weight:700}.stock-metric.available-ok{color:#057a55;font-weight:700}.doc-activity-grid{display:grid;grid-template-columns:minmax(240px,1fr) minmax(300px,1.4fr);gap:16px}.activity-list{display:flex;flex-direction:column;gap:8px}.activity-item{padding:9px 11px;border-left:3px solid #bfd3ee;background:#f8fafc;border-radius:0 9px 9px 0}.activity-item small{color:#718096}.attachment-list{display:flex;flex-wrap:wrap;gap:8px}.attachment-pill{display:flex;align-items:center;gap:7px;padding:7px 10px;border:1px solid #dbe4ef;border-radius:999px;background:#fff}
@media(max-width:760px){.command-palette{padding-top:60px}.doc-activity-grid{grid-template-columns:1fr}.draft-restore-banner{align-items:flex-start;flex-wrap:wrap}.draft-restore-banner span{width:100%}}
@media print{.command-palette,.autosave-status,.draft-restore-banner,.doc-activity-card{display:none!important}}


/* V4.8.1：首页板块排序设置 */
.dashboard-layout-editor{display:grid;gap:8px;}
.dashboard-layout-row{display:grid;grid-template-columns:42px minmax(180px,1fr) auto;gap:12px;align-items:center;padding:10px 12px;border:1px solid var(--line,#dfe5ee);border-radius:10px;background:#fff;}
.dashboard-layout-handle{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:8px;background:#eef4ff;font-weight:700;}
.dashboard-section+.dashboard-section{margin-top:18px;}
@media(max-width:720px){.dashboard-layout-row{grid-template-columns:34px 1fr}.dashboard-layout-row>.actions{grid-column:2;justify-content:flex-start}.dashboard-section+.dashboard-section{margin-top:12px;}}

/* V4.8.2 客户询单跟进 */
.inquiry-capture{display:flex;gap:18px;align-items:center;margin-bottom:16px;background:linear-gradient(135deg,#f8fbff,#eef6ff)}.inquiry-capture-copy{flex:1;min-width:230px}.inquiry-capture-copy h2{margin:0 0 6px}.inquiry-capture-copy p{margin:0;color:#64748b}.inquiry-capture form{display:flex;align-items:center;gap:10px;flex:2}.capture-drop{position:relative;display:flex;align-items:center;justify-content:center;min-height:68px;flex:1;border:2px dashed #93c5fd;border-radius:12px;background:#fff;overflow:hidden;cursor:pointer}.capture-drop.drag{background:#eff6ff;border-color:#2563eb}.capture-drop input{position:absolute;inset:0;opacity:0;cursor:pointer}.capture-drop img{height:64px;max-width:140px;object-fit:contain;margin-right:8px}.inquiry-toolbar{justify-content:space-between;align-items:end}.compact-filter-form{display:flex;gap:8px;flex-wrap:wrap;align-items:end}.compact-filter-form input{width:280px}.inquiry-board{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px;margin-top:14px}.inquiry-card{display:block;border:1px solid #e2e8f0;border-radius:14px;padding:14px;text-decoration:none;color:inherit;background:#fff;transition:.15s}.inquiry-card:hover{border-color:#60a5fa;box-shadow:0 7px 20px rgba(15,23,42,.08);transform:translateY(-1px)}.inquiry-card-head,.inquiry-card-foot{display:flex;justify-content:space-between;gap:8px}.inquiry-card-main{display:flex;gap:12px;margin:12px 0}.inquiry-card-main img{width:72px;height:72px;object-fit:cover;border-radius:10px;border:1px solid #e2e8f0}.inquiry-card h3{margin:0 0 6px}.inquiry-card p{margin:0;color:#475569;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.inquiry-card small,.inquiry-card-foot{color:#64748b;font-size:12px}.inquiry-detail-layout{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:16px}.inquiry-main-column,.inquiry-side-column{display:flex;flex-direction:column;gap:16px}.form-grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.span-2{grid-column:span 2}.span-4{grid-column:span 4}.ocr-state{display:flex;gap:12px;align-items:center;padding-top:10px;color:#64748b}.ocr-state small{color:#b45309}.inquiry-product-search{position:relative;display:flex;gap:8px;margin:12px 0}.inquiry-product-search input{max-width:420px}.suggestion-panel{position:absolute;z-index:10;top:42px;left:0;width:min(620px,100%);background:#fff;border:1px solid #cbd5e1;border-radius:10px;box-shadow:0 10px 30px rgba(15,23,42,.15);max-height:320px;overflow:auto}.suggestion-panel:empty{display:none}.suggestion-item{display:flex;width:100%;border:0;border-bottom:1px solid #e2e8f0;background:#fff;padding:10px;text-align:left;flex-direction:column;cursor:pointer}.suggestion-item:hover{background:#eff6ff}.suggestion-item small{color:#64748b}.inquiry-task-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:12px}.inquiry-task-row{display:flex;align-items:center;gap:8px;border:1px solid #e2e8f0;border-radius:10px;padding:8px}.inquiry-task-row input[type=text],.inquiry-task-row input:not([type]){flex:1;border:0;padding:3px}.inquiry-shot-grid{display:grid;gap:10px}.inquiry-shot{border:1px solid #e2e8f0;border-radius:10px;padding:8px}.inquiry-shot img{width:100%;max-height:260px;object-fit:contain;background:#f8fafc;border-radius:7px}.inquiry-shot small{display:block;color:#64748b;margin:5px 0}.capture-inline{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}.capture-inline input{max-width:100%}.activity-list{display:flex;flex-direction:column;gap:10px}.activity-row{border-left:3px solid #bfdbfe;padding-left:10px}.activity-row small{display:block;color:#64748b}.activity-row p{margin:4px 0 0}.inquiry-dashboard-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px}.inquiry-mini-card{display:flex;flex-direction:column;text-decoration:none;color:inherit;border:1px solid #e2e8f0;border-radius:10px;padding:10px}.inquiry-mini-card span,.inquiry-mini-card small{color:#64748b}
@media(max-width:980px){.inquiry-capture,.inquiry-capture form{align-items:stretch;flex-direction:column}.inquiry-detail-layout{grid-template-columns:1fr}.form-grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}.span-4{grid-column:span 2}.inquiry-side-column{order:-1}.inquiry-task-list{grid-template-columns:1fr}}
@media(max-width:600px){.form-grid-4{grid-template-columns:1fr}.span-2,.span-4{grid-column:span 1}.inquiry-board{grid-template-columns:1fr}.compact-filter-form input{width:100%}}

/* V4.8.3 客户跟进工作台：中文进销存常用的紧凑、清晰、表格式布局 */
.inquiry-workbench{display:flex;flex-direction:column;gap:16px}
.inquiry-page-head{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:2px 2px 0}
.inquiry-page-head h1{margin:0 0 5px;font-size:24px;color:#172033;letter-spacing:.2px}
.inquiry-page-head p{margin:0;color:#667085;font-size:14px}
.inquiry-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.inquiry-summary-card{position:relative;display:grid;grid-template-columns:1fr auto;grid-template-rows:auto auto;align-items:center;gap:4px 12px;padding:15px 17px;background:#fff;border:1px solid #e4e7ec;border-radius:10px;text-decoration:none;color:#344054;box-shadow:0 1px 2px rgba(16,24,40,.03)}
.inquiry-summary-card:hover{border-color:#84adff;box-shadow:0 4px 12px rgba(16,24,40,.07)}
.inquiry-summary-card span{font-size:14px;font-weight:600}.inquiry-summary-card strong{grid-row:1/3;grid-column:2;font-size:28px;line-height:1;color:#175cd3}.inquiry-summary-card small{font-size:12px;color:#98a2b3}.inquiry-summary-card.urgent strong{color:#d92d20}.inquiry-summary-card.urgent{border-left:4px solid #f04438}
.inquiry-capture-panel{padding:0;overflow:hidden;border-radius:10px}
.inquiry-section-title{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:15px 18px;border-bottom:1px solid #eaecf0;background:#f8fafc}
.inquiry-section-title h2{margin:0 0 3px;font-size:17px;color:#1d2939}.inquiry-section-title p{margin:0;color:#667085;font-size:13px}.inquiry-shortcut{padding:5px 10px;border-radius:5px;background:#eaf2ff;color:#175cd3;font-size:12px;font-weight:600;white-space:nowrap}
.inquiry-capture-layout{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:16px;padding:16px 18px}
.capture-drop-v2{min-height:170px;border:2px dashed #84adff;border-radius:9px;background:#f8fbff;display:flex;align-items:center;justify-content:center;text-align:center;cursor:copy;outline:none;overflow:hidden;transition:.15s}
.capture-drop-v2:focus,.capture-drop-v2.drag{border-color:#155eef;background:#eff4ff;box-shadow:0 0 0 3px rgba(21,94,239,.10)}
.capture-drop-v2.has-file{border-style:solid;background:#fff}.capture-drop-v2 img{display:block;width:100%;height:210px;object-fit:contain;background:#f2f4f7}
.capture-empty{display:flex;flex-direction:column;align-items:center;gap:7px;padding:22px;color:#667085}.capture-empty[hidden]{display:none!important}.capture-empty strong{font-size:16px;color:#344054}.capture-empty span:last-child{font-size:13px}.capture-icon{display:grid!important;place-items:center;width:42px;height:42px;border-radius:50%;background:#eaf2ff;color:#175cd3;font-size:24px}
.capture-control-panel{display:flex;flex-direction:column;gap:10px}.capture-control-panel label{font-size:13px;font-weight:600;color:#344054}.capture-control-panel select{margin-top:5px;width:100%}
.capture-native-label{display:flex;flex-direction:column}.capture-file-native{margin-top:5px;width:100%;border:1px solid #d0d5dd;border-radius:7px;background:#fff;color:#475467;font-size:12px;padding:4px}.capture-file-native::file-selector-button{border:0;border-right:1px solid #d0d5dd;background:#f2f4f7;color:#344054;padding:8px 12px;margin:-4px 10px -4px -4px;cursor:pointer;font-weight:600}
.capture-submit{min-height:39px}.capture-status{min-height:38px;padding:8px 10px;border-radius:7px;background:#f2f4f7;color:#667085;font-size:12px;line-height:1.5}.capture-status.success{background:#ecfdf3;color:#027a48}.capture-status.error{background:#fef3f2;color:#b42318}.capture-status.working{background:#eff8ff;color:#175cd3}
.inquiry-list-panel{padding:0;overflow:hidden;border-radius:10px}.inquiry-status-tabs{display:flex;gap:0;overflow-x:auto;border-bottom:1px solid #eaecf0;background:#f9fafb;padding:0 12px}.inquiry-status-tabs a{display:flex;align-items:center;gap:6px;padding:12px 11px;border-bottom:2px solid transparent;color:#475467;text-decoration:none;white-space:nowrap;font-size:13px}.inquiry-status-tabs a:hover{color:#175cd3}.inquiry-status-tabs a.active{color:#175cd3;border-bottom-color:#175cd3;background:#fff;font-weight:600}.inquiry-status-tabs a.danger{color:#b42318;border-bottom-color:#d92d20}.inquiry-status-tabs b{min-width:19px;height:19px;padding:0 5px;border-radius:10px;background:#eaecf0;color:#475467;font-size:11px;line-height:19px;text-align:center}.inquiry-status-tabs a.active b{background:#dbeafe;color:#175cd3}
.inquiry-filter-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 16px;border-bottom:1px solid #eaecf0}.inquiry-filter-form{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.inquiry-search-box{display:flex;align-items:center;width:340px;border:1px solid #d0d5dd;border-radius:7px;background:#fff;padding:0 10px}.inquiry-search-box:focus-within{border-color:#84adff;box-shadow:0 0 0 3px rgba(21,94,239,.08)}.inquiry-search-box span{color:#98a2b3}.inquiry-search-box input{width:100%;border:0!important;box-shadow:none!important;padding:9px 7px}.inquiry-filter-form select{width:145px}.inquiry-list-tip{font-size:12px;color:#667085;white-space:nowrap}
.inquiry-table-wrap{margin:0;border:0;border-radius:0}.inquiry-list-table{min-width:1050px;margin:0}.inquiry-list-table th{background:#f9fafb;color:#475467;font-size:12px;font-weight:600;padding:10px 12px;border-bottom:1px solid #eaecf0}.inquiry-list-table td{padding:11px 12px;vertical-align:middle;border-bottom:1px solid #f0f1f3;font-size:13px}.inquiry-list-table tbody tr:hover{background:#f8fbff}.inquiry-list-table tbody tr.is-due{background:#fff8f7}.inquiry-list-table tbody tr.is-due:hover{background:#fff1ef}
.inquiry-customer-cell{display:flex;align-items:center;gap:10px;min-width:175px}.inquiry-customer-cell img,.inquiry-avatar{width:38px;height:38px;border-radius:7px;object-fit:cover;border:1px solid #eaecf0;flex:0 0 auto}.inquiry-avatar{display:grid;place-items:center;background:#eaf2ff;color:#175cd3;font-size:16px;font-weight:700}.inquiry-customer-cell div,.inquiry-subject-cell{display:flex;flex-direction:column;gap:3px}.inquiry-customer-cell strong,.inquiry-subject-cell strong{color:#1d2939;font-size:13px}.inquiry-customer-cell small,.inquiry-subject-cell small{color:#98a2b3;font-size:11px}.inquiry-subject-cell{max-width:360px}.inquiry-subject-cell strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.inquiry-status{display:inline-flex;padding:4px 8px;border-radius:5px;background:#f2f4f7;color:#475467;font-size:12px;white-space:nowrap}.inquiry-status[data-status="待识别确认"],.inquiry-status[data-status="待查资料"]{background:#fff4e5;color:#b54708}.inquiry-status[data-status="待报价"],.inquiry-status[data-status="待回复客户"]{background:#eff8ff;color:#175cd3}.inquiry-status[data-status="等待客户回复"]{background:#f4f3ff;color:#5925dc}.inquiry-status[data-status="需要再次跟进"]{background:#fef3f2;color:#b42318}.inquiry-status[data-status="已成交"]{background:#ecfdf3;color:#027a48}.inquiry-status[data-status="已关闭"]{background:#f2f4f7;color:#667085}.inquiry-priority{display:inline-flex;margin-left:4px;padding:4px 6px;border-radius:5px;background:#fef3f2;color:#b42318;font-size:11px}.pending-number{display:inline-block;min-width:18px;text-align:center}.pending-number.has-pending{color:#d92d20}.follow-time{white-space:nowrap;color:#344054}.muted{color:#98a2b3;font-size:12px}
.inquiry-empty-state{display:flex;flex-direction:column;align-items:center;padding:55px 20px;color:#667085}.inquiry-empty-state>span{font-size:36px;color:#84adff}.inquiry-empty-state strong{margin-top:8px;color:#344054}.inquiry-empty-state p{margin:5px 0 0;font-size:13px}
.capture-drag-overlay{position:fixed;inset:0;z-index:9999;background:rgba(17,24,39,.58);display:grid;place-items:center;backdrop-filter:blur(2px)}.capture-drag-overlay[hidden]{display:none!important}.capture-drag-overlay>div{display:flex;flex-direction:column;align-items:center;gap:12px;padding:34px 54px;border:2px dashed #fff;border-radius:14px;background:rgba(21,94,239,.93);color:#fff;box-shadow:0 20px 50px rgba(0,0,0,.25)}.capture-drag-overlay span{font-size:42px;line-height:1}.capture-drag-overlay strong{font-size:18px}
.capture-inline-v2{display:flex;flex-direction:column;gap:8px;margin:10px 0 14px}.inline-shot-preview-box{min-height:95px;display:grid;place-items:center;border:1px dashed #84adff;border-radius:8px;background:#f8fbff;color:#667085;font-size:12px;text-align:center;padding:6px}.inline-shot-preview-box img{width:100%;max-height:180px;object-fit:contain}.inline-shot-preview-box img:not([hidden])+span{display:none}

@media(max-width:1100px){.inquiry-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.inquiry-capture-layout{grid-template-columns:1fr}.capture-control-panel{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:end}.capture-status{grid-column:1/-1}.inquiry-list-tip{display:none}}
@media(max-width:720px){.inquiry-page-head{align-items:flex-start;flex-direction:column}.inquiry-page-head .btn{width:100%}.inquiry-summary-grid{grid-template-columns:1fr 1fr;gap:8px}.inquiry-summary-card{padding:12px}.inquiry-summary-card strong{font-size:23px}.inquiry-summary-card small{display:none}.inquiry-section-title{align-items:flex-start;flex-direction:column}.inquiry-shortcut{white-space:normal}.inquiry-capture-layout{padding:12px}.capture-control-panel{grid-template-columns:1fr}.capture-status{grid-column:auto}.inquiry-filter-row{align-items:stretch;flex-direction:column}.inquiry-filter-form{display:grid;grid-template-columns:1fr 1fr;width:100%}.inquiry-search-box{grid-column:1/-1;width:100%}.inquiry-filter-form select{width:100%}.inquiry-list-table{min-width:860px}.inquiry-page-head h1{font-size:21px}}

/* V4.8.4 OCR状态：只显示可执行的中文提示，不展示脚本堆栈。 */
.ocr-state-failed{align-items:flex-start;background:#fff8e8;border:1px solid #f3d69a;color:#7a4b00;flex-wrap:wrap;line-height:1.65;padding:12px 14px}
.ocr-state-failed small{color:#7a4b00;flex:1 1 100%;font-size:14px;overflow-wrap:anywhere;white-space:normal}
.ocr-state-failed .ocr-help{color:#9a5c00;font-weight:600}

/* V4.8.7 极简客户跟进：四项快速记录、可配置平台/事项、到点提醒 */
.quick-follow-workbench{display:flex;flex-direction:column;gap:14px}.qf-page-head{display:flex;align-items:center;justify-content:space-between;gap:18px}.qf-page-head h1{margin:0 0 5px;font-size:24px;color:#172033}.qf-page-head p{margin:0;color:#667085}.qf-summary{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}.qf-summary a{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border:1px solid #e4e7ec;border-radius:9px;background:#fff;color:#344054;text-decoration:none}.qf-summary a:hover{border-color:#84adff;box-shadow:0 3px 10px rgba(16,24,40,.06)}.qf-summary span{font-size:13px}.qf-summary strong{font-size:25px;color:#175cd3}.qf-summary a.danger{border-left:4px solid #f04438}.qf-summary a.danger strong{color:#d92d20}
.qf-entry-card,.qf-list-card{padding:0;overflow:hidden}.qf-card-title{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border-bottom:1px solid #eaecf0;background:#f8fafc}.qf-card-title h2{margin:0 0 3px;font-size:17px;color:#1d2939}.qf-card-title p{margin:0;color:#667085;font-size:12px}.qf-card-title>a{font-size:12px}.qf-inline-form{display:grid;grid-template-columns:1fr 1.25fr;gap:14px 16px;padding:16px}.qf-field{display:flex;flex-direction:column;gap:7px}.qf-field>label,.qf-modal-form>label{font-size:13px;font-weight:700;color:#344054}.qf-platform-row{display:grid;grid-template-columns:minmax(120px,.8fr) minmax(140px,1.2fr);gap:8px}.qf-task-field,.qf-time-field,.qf-optional-row{grid-column:1/-1}.qf-task-chips,.qf-time-chips,.qf-preset-row{display:flex;flex-wrap:wrap;gap:7px}.qf-task-chips label{cursor:pointer}.qf-task-chips input{position:absolute;opacity:0;pointer-events:none}.qf-task-chips span,.qf-time-chips button,.qf-preset-row button{display:inline-flex;align-items:center;border:1px solid #d0d5dd;border-radius:6px;background:#fff;color:#475467;padding:7px 10px;font-size:12px;cursor:pointer}.qf-task-chips input:checked+span,.qf-time-chips button.active{border-color:#155eef;background:#eff4ff;color:#175cd3;font-weight:700}.qf-time-field input[type=datetime-local]{max-width:280px}.qf-optional-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;border-top:1px dashed #e4e7ec;padding-top:12px}.qf-shot-select{display:flex;align-items:center;gap:8px;font-size:12px;color:#475467}.qf-shot-select input{max-width:260px}.qf-shot-hint,.qf-modal-bottom>span{color:#98a2b3;font-size:12px}.qf-save{margin-left:auto;min-width:120px}.qf-paste-preview{grid-column:1/-1;display:flex;align-items:center;gap:10px;padding:8px;border:1px solid #d1e9ff;border-radius:8px;background:#f5fbff}.qf-paste-preview[hidden]{display:none}.qf-paste-preview img{width:80px;height:58px;object-fit:contain;background:#fff;border:1px solid #e4e7ec;border-radius:5px}.qf-paste-preview span{flex:1;color:#475467;font-size:12px}.qf-paste-preview button{border:0;background:none;color:#b42318;cursor:pointer}
.qf-tabs{display:flex;overflow-x:auto;padding:0 12px;border-bottom:1px solid #eaecf0;background:#f9fafb}.qf-tabs a{padding:12px 14px;color:#475467;text-decoration:none;border-bottom:2px solid transparent;white-space:nowrap;font-size:13px}.qf-tabs a.active{background:#fff;border-bottom-color:#175cd3;color:#175cd3;font-weight:700}.qf-tabs a.danger{color:#b42318;border-bottom-color:#d92d20}.qf-filter{padding:12px 16px;border-bottom:1px solid #eaecf0}.qf-filter form{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.qf-filter input{width:310px}.qf-filter select{width:145px}.qf-table-wrap{margin:0;border:0}.qf-table{min-width:920px;margin:0}.qf-table th{padding:10px 12px;background:#f9fafb;color:#475467;font-size:12px}.qf-table td{padding:11px 12px;font-size:13px;vertical-align:middle;border-bottom:1px solid #f0f1f3}.qf-table tbody tr:hover{background:#f8fbff}.qf-table tr.is-due{background:#fff4f2}.qf-table tr.is-complete{background:#fafafa;color:#98a2b3}.qf-platform-badge{display:inline-flex;padding:4px 8px;border-radius:5px;background:#eff8ff;color:#175cd3;font-size:12px}.qf-customer-link{font-weight:700;color:#1d2939;text-decoration:none}.qf-table td>small{display:block;color:#98a2b3;font-size:10px;margin-top:3px}.qf-has-shot{margin-left:5px;color:#667085}.qf-task-text{max-width:430px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.qf-follow-time{white-space:nowrap}.qf-follow-time.overdue{color:#d92d20;font-weight:700}.qf-row-actions{display:flex;align-items:center;gap:5px;white-space:nowrap}.qf-row-actions form{margin:0}.qf-empty{display:flex;flex-direction:column;align-items:center;gap:6px;padding:45px 20px;color:#98a2b3}.qf-empty strong{color:#475467}.qf-empty.small{padding:20px}
.qf-modal{position:fixed;inset:0;z-index:12000;display:grid;place-items:center;padding:20px;background:rgba(16,24,40,.55);backdrop-filter:blur(2px)}.qf-modal[hidden]{display:none}.qf-modal-panel{width:min(760px,96vw);max-height:92vh;overflow:auto;border-radius:12px;background:#fff;box-shadow:0 25px 70px rgba(0,0,0,.25)}.qf-modal-head{display:flex;align-items:flex-start;justify-content:space-between;padding:16px 18px;border-bottom:1px solid #eaecf0;background:#f8fafc}.qf-modal-head h2{margin:0 0 4px;font-size:19px}.qf-modal-head p{margin:0;color:#667085;font-size:12px}.qf-modal-head>button{border:0;background:none;font-size:26px;color:#667085;cursor:pointer}.qf-modal-form{display:flex;flex-direction:column;gap:10px;padding:18px}.qf-modal-grid{display:grid;grid-template-columns:1fr 1.3fr;gap:12px}.qf-modal-grid label{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:700;color:#344054}.qf-modal-bottom{display:flex;align-items:center;gap:10px;flex-wrap:wrap;border-top:1px dashed #e4e7ec;padding-top:12px}.qf-modal-bottom .btn{margin-left:auto}.qf-modal-open{overflow:hidden}
.qf-reminder-stack{position:fixed;right:18px;bottom:18px;z-index:13000;display:flex;flex-direction:column;gap:10px;width:min(360px,calc(100vw - 30px))}.qf-reminder-card{position:relative;transform:translateX(110%);opacity:0;transition:.2s;padding:15px 16px;border:1px solid #fecdca;border-left:5px solid #f04438;border-radius:10px;background:#fff;box-shadow:0 12px 35px rgba(16,24,40,.2)}.qf-reminder-card.show{transform:none;opacity:1}.qf-reminder-card>strong{display:block;color:#b42318;margin-bottom:5px}.qf-reminder-card>div{font-weight:700;color:#1d2939}.qf-reminder-card p{margin:5px 0 10px;color:#475467;font-size:13px}.qf-reminder-close{position:absolute;right:8px;top:6px;border:0;background:none;color:#98a2b3;font-size:20px;cursor:pointer}.qf-reminder-actions{display:flex;gap:6px!important}.qf-reminder-actions button,.qf-reminder-actions a{border:1px solid #d0d5dd;border-radius:5px;background:#fff;color:#344054;padding:5px 8px;text-decoration:none;font-size:12px;cursor:pointer}.qf-reminder-actions button:first-child{border-color:#155eef;background:#155eef;color:#fff}
.qf-detail-head{display:flex;align-items:center;gap:8px;margin-bottom:14px}.qf-detail-head form{margin:0}.qf-detail-layout{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:16px}.qf-detail-main,.qf-detail-side{display:flex;flex-direction:column;gap:16px}.qf-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:16px}.qf-detail-grid label{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:700;color:#344054}.qf-preset-row{padding:12px 16px 0}.qf-preset-row button{padding:5px 8px}.qf-detail-task-list{display:flex;flex-direction:column;gap:8px;padding:14px 16px}.qf-detail-task-list .inquiry-task-row{margin:0}.qf-shot-form{display:flex;flex-direction:column;gap:8px;padding:12px 0}.qf-shot-form img{max-width:100%;max-height:220px;object-fit:contain;background:#f8fafc;border-radius:7px}
.inquiry-status[data-status="待处理"]{background:#fff4e5;color:#b54708}.inquiry-status[data-status="已完成"]{background:#ecfdf3;color:#027a48}.inquiry-status[data-status="等待客户回复"]{background:#f4f3ff;color:#5925dc}
@media(max-width:1100px){.qf-summary{grid-template-columns:repeat(3,minmax(0,1fr))}.qf-detail-layout{grid-template-columns:1fr}.qf-inline-form{grid-template-columns:1fr}.qf-field{grid-column:1/-1}}
@media(max-width:720px){.qf-page-head{align-items:flex-start;flex-direction:column}.qf-page-head .actions,.qf-page-head .btn{width:100%}.qf-summary{grid-template-columns:1fr 1fr}.qf-summary a{padding:11px}.qf-summary strong{font-size:21px}.qf-inline-form{padding:12px}.qf-platform-row,.qf-modal-grid,.qf-detail-grid{grid-template-columns:1fr}.qf-filter form{display:grid;grid-template-columns:1fr 1fr}.qf-filter input{grid-column:1/-1;width:100%}.qf-filter select{width:100%}.qf-save{width:100%;margin-left:0}.qf-modal{padding:8px;align-items:end}.qf-modal-panel{width:100%;max-height:95vh;border-radius:14px 14px 0 0}.qf-modal-bottom .btn{width:100%;margin-left:0}}


/* V4.8.8：统一快速记录控件、单据高级搜索、图片材质分类与库存流水 */
.document-advanced-searchbar{display:grid;grid-template-columns:minmax(150px,210px) minmax(230px,1fr) minmax(230px,1fr) auto;gap:12px;align-items:end}.document-advanced-searchbar .form-field{margin:0}.document-advanced-searchbar input,.document-advanced-searchbar select{width:100%;height:42px}.document-search-actions{display:flex;align-items:center;gap:8px;white-space:nowrap}.document-search-actions .btn{height:42px;display:inline-flex;align-items:center;justify-content:center}.transfer-searchbar{grid-template-columns:minmax(280px,1fr) minmax(280px,1fr) auto}
.qf-modal-panel{width:min(820px,96vw)}.qf-modal-form{gap:16px;padding:18px 20px 20px}.qf-modal-grid{grid-template-columns:1fr 1fr;gap:14px}.qf-control-field,.qf-section-block{display:flex;flex-direction:column;gap:8px}.qf-control-field>span,.qf-section-block>label{min-height:20px;display:flex;align-items:center;font-size:13px;font-weight:700;color:#344054}.qf-control-field input,.qf-control-field select,.qf-inline-form>.qf-field>input,.qf-inline-form>.qf-field>select{width:100%;height:42px;min-height:42px}.qf-task-chips,.qf-time-chips{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px}.qf-task-chips label{width:100%;margin:0}.qf-task-chips span,.qf-time-chips button{width:100%;min-height:38px;padding:7px 8px;justify-content:center;text-align:center;line-height:1.2}.qf-task-chips span{display:flex}.qf-time-chips button{display:flex;align-items:center}.qf-modal-bottom,.qf-optional-row{display:grid;grid-template-columns:minmax(280px,1fr) minmax(180px,1fr) auto;align-items:end;gap:12px}.qf-shot-select{display:flex;flex-direction:column;align-items:stretch;gap:6px;font-weight:700}.qf-shot-select input{width:100%;max-width:none;height:42px;padding:5px}.qf-shot-hint{align-self:center}.qf-save{height:42px;min-width:118px;margin:0}.qf-inline-form{grid-template-columns:1fr 1fr;align-items:start}.qf-inline-form .qf-task-field,.qf-inline-form .qf-time-field,.qf-inline-form .qf-optional-row,.qf-inline-form .qf-paste-preview{grid-column:1/-1}.qf-field>label{min-height:20px;display:flex;align-items:center}
.reply-option-editor{display:flex;flex-direction:column;gap:8px}.reply-option-row{display:grid;grid-template-columns:minmax(170px,1.2fr) minmax(160px,1fr) minmax(130px,.8fr) auto;gap:8px;align-items:center}.reply-option-row input,.reply-option-row select{height:40px;width:100%}
.image-material-filter{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 16px}.image-material-filter button{border:1px solid #d0d5dd;border-radius:6px;background:#fff;color:#475467;padding:7px 13px;cursor:pointer}.image-material-filter button.active{border-color:#155eef;background:#eff4ff;color:#175cd3;font-weight:700}.detail-image-only[hidden]{display:none}.image-material-meta{display:flex;flex-direction:column;gap:3px;padding:8px 9px;border-top:1px solid #eaecf0}.image-material-meta span{font-weight:700;color:#344054;font-size:12px}.image-material-meta small{color:#98a2b3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.material-movement-toggle{display:flex;align-items:flex-start;flex-direction:column;gap:3px;border:0;background:none;color:#175cd3;padding:0;text-align:left;cursor:pointer}.material-movement-toggle strong{color:#1d2939}.material-movement-toggle span{font-size:11px}.material-movement-toggle.active span{color:#b54708}.variant-movement-row>td{padding:0!important;background:#f8fafc}.variant-movement-row[hidden]{display:none}.variant-movement-panel{padding:14px 16px;border-left:4px solid #84adff}.variant-movement-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.variant-movement-head span{color:#667085;font-size:12px}.movement-mini-table{min-width:760px}.movement-mini-table th,.movement-mini-table td{padding:8px 10px!important;font-size:12px!important}
@media(max-width:1050px){.document-advanced-searchbar{grid-template-columns:1fr 1fr}.document-search-actions{grid-column:1/-1}.qf-task-chips,.qf-time-chips{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:720px){.document-advanced-searchbar,.transfer-searchbar,.qf-modal-grid,.qf-inline-form,.reply-option-row{grid-template-columns:1fr}.document-search-actions{grid-column:auto;flex-wrap:wrap}.document-search-actions .btn{flex:1}.qf-task-chips,.qf-time-chips{grid-template-columns:repeat(2,minmax(0,1fr))}.qf-modal-bottom,.qf-optional-row{grid-template-columns:1fr}.qf-save{width:100%}.variant-movement-head{align-items:flex-start;flex-direction:column}}

/* V4.8.9：材质名称恢复原表格字号，点击进入独立出入库记录页 */
.material-flow-link{font:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;color:inherit;text-decoration:none;cursor:pointer}
.material-flow-link:hover{color:#175cd3;text-decoration:underline;text-underline-offset:3px}
.movement-page-hero{display:flex;align-items:center;justify-content:space-between;gap:18px}
.movement-page-hero h2{margin:4px 0 6px;font-size:24px}
.movement-page-kicker{font-size:13px;color:#175cd3;font-weight:700}
.movement-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:16px}
.movement-summary-item{background:#fff;border:1px solid #e4e7ec;border-radius:14px;padding:16px 18px;display:flex;flex-direction:column;gap:5px;min-height:92px}
.movement-summary-item span{font-size:13px;color:#667085}
.movement-summary-item strong{font-size:25px;line-height:1.1;color:#1d2939}
.movement-summary-item small{color:#667085}
.movement-list-title{align-items:flex-end}
.movement-list-title h3{margin:0 0 4px}
.movement-list-title p{margin:0}
.movement-filter-tabs{display:flex;gap:8px;flex-wrap:wrap}
.movement-filter-tabs a{display:inline-flex;align-items:center;justify-content:center;min-height:34px;padding:0 14px;border:1px solid #d0d5dd;border-radius:8px;color:#344054;background:#fff;text-decoration:none;font-size:13px}
.movement-filter-tabs a:hover,.movement-filter-tabs a.active{border-color:#84adff;background:#eff4ff;color:#175cd3}
.movement-record-table{min-width:1120px}
.movement-record-table th,.movement-record-table td{vertical-align:middle}
.movement-order-link{display:inline-block;margin-top:3px;color:#175cd3;font-weight:700;text-decoration:none}
.movement-order-link:hover{text-decoration:underline}
.movement-order-no{display:inline-block;margin-top:3px;color:#475467}
.document-item-target:target td{background:#fff3cd!important;animation:documentTargetFade 2.6s ease-out 1}
@keyframes documentTargetFade{0%{background:#ffd966}100%{background:#fff3cd}}
@media(max-width:980px){.movement-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.movement-page-hero{align-items:flex-start;flex-direction:column}.movement-list-title{align-items:flex-start;flex-direction:column}}
@media(max-width:560px){.movement-summary-grid{grid-template-columns:1fr}.movement-page-hero .actions{width:100%}.movement-page-hero .actions .btn{flex:1}.movement-filter-tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:100%}.movement-filter-tabs a{padding:0 8px}}
@media print{.document-item-target:target td{background:transparent!important;animation:none!important}}

/* V4.8.11：多材质快速筛选、库存规格搜索与全局精准排序 */
.variant-filter-bar{display:grid;grid-template-columns:minmax(260px,1fr) auto auto auto;align-items:end;gap:10px;margin:0 0 12px;padding:12px;border:1px solid #dbe4f0;border-radius:12px;background:#f8fbff}
.variant-filter-input-wrap{margin:0}.variant-filter-input-wrap input{height:40px}.variant-filter-buttons{display:flex;align-items:center;gap:6px;padding-bottom:1px}.variant-filter-buttons .btn{min-width:72px;height:40px}.variant-filter-buttons .btn.active{background:#2563eb;color:#fff;border-color:#2563eb}.variant-filter-count{display:inline-flex;align-items:center;justify-content:center;height:40px;min-width:76px;padding:0 10px;border-radius:8px;background:#eef2f7;color:#475467;font-weight:800}.variant-filter-bar>a.btn{height:40px;display:inline-flex;align-items:center}.variant-table-wrap{max-height:620px;overflow:auto}.variant-table-wrap thead th{position:sticky;top:0;z-index:3;background:#edf2ff}.variant-search-row[hidden]{display:none}.variant-focus-row{outline:3px solid #f79009;outline-offset:-3px;background:#fffaeb!important;transition:background .25s ease}
.inventory-query-searchbar{display:grid;grid-template-columns:190px minmax(260px,1.25fr) minmax(220px,1fr) auto auto;gap:12px;align-items:end}.inventory-query-searchbar .form-field{margin:0}.inventory-query-searchbar select,.inventory-query-searchbar input{height:42px}.inventory-warning-check{height:42px;display:flex;align-items:center;white-space:nowrap;margin:0}.inventory-query-searchbar .document-search-actions{display:flex;gap:8px;align-items:center}.inventory-query-searchbar .document-search-actions .btn{height:42px;display:inline-flex;align-items:center}.inventory-search-help{margin-top:8px}.command-palette-panel{width:min(780px,calc(100vw - 28px))}.command-search-results{max-height:min(64vh,620px)}
@media(max-width:1100px){.variant-filter-bar{grid-template-columns:1fr auto}.variant-filter-buttons{grid-column:1/-1}.inventory-query-searchbar{grid-template-columns:1fr 1fr}.inventory-warning-check,.inventory-query-searchbar .document-search-actions{align-self:end}}
@media(max-width:720px){.variant-filter-bar,.inventory-query-searchbar{grid-template-columns:1fr}.variant-filter-buttons{overflow:auto;flex-wrap:nowrap}.variant-filter-buttons .btn{flex:0 0 auto}.inventory-warning-check{height:auto}.inventory-query-searchbar .document-search-actions{display:grid;grid-template-columns:1fr 1fr}.inventory-query-searchbar .document-search-actions .btn{justify-content:center}}
.command-result-summary{position:sticky;top:0;z-index:2;margin:-8px -8px 6px;padding:9px 13px;background:#f8fafc;border-bottom:1px solid #e4e7ec;color:#667085;font-size:12px;font-weight:700}

/* V4.9.0：退货、收款、账龄、经营报表与安全导出 */
.v490-page-head{display:flex;align-items:center;justify-content:space-between;gap:18px}.v490-page-head h2{margin:0 0 5px}.v490-page-head p{margin:0}
.v490-source-loader{grid-template-columns:180px minmax(360px,1fr) auto;margin-bottom:18px;padding:14px;border:1px solid #dbe4f0;border-radius:12px;background:#f8fbff}.v490-entry-table{min-width:1180px}.v490-entry-table input{min-width:105px}.v490-entry-table input[name="item_note[]"]{min-width:180px}
.v490-summary-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;margin:14px 0 18px}.v490-stat{display:flex;flex-direction:column;gap:5px;min-height:94px;padding:15px;border:1px solid #dfe6ef;border-radius:12px;background:#fff}.v490-stat span{font-size:13px;color:#667085}.v490-stat strong{font-size:23px;color:#1d2939}.v490-stat small{color:#667085}.v490-stat.primary{border-color:#9fc1ff;background:#eff6ff}.v490-stat.primary strong{color:#175cd3}.report-summary{grid-template-columns:repeat(4,minmax(0,1fr))}
.v490-statement-filter{grid-template-columns:160px minmax(220px,1fr) 165px 165px auto}.v490-statement-filter .document-search-actions{flex-wrap:wrap}
.v490-security-state{display:flex;flex-direction:column;gap:4px;padding:14px;border-radius:10px}.v490-security-state.ok{background:#ecfdf3;border:1px solid #a6f4c5;color:#027a48}.v490-security-state.pending{background:#fffaeb;border:1px solid #fedf89;color:#b54708}
.v490-otp-card{width:min(520px,100%);margin:40px auto;text-align:center;padding:34px}.v490-lock-icon{font-size:48px}.v490-otp-card h2{margin:10px 0}.v490-otp-card .otp-input{font-size:28px;font-weight:800;letter-spacing:10px;text-align:center}.v490-otp-card .actions{justify-content:center;margin-top:18px}
@media(max-width:1100px){.v490-summary-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.report-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.v490-statement-filter{grid-template-columns:1fr 1fr}}
@media(max-width:720px){.v490-page-head{align-items:flex-start;flex-direction:column}.v490-page-head>.actions,.v490-page-head>.btn{width:100%}.v490-page-head>.actions .btn{flex:1}.v490-source-loader,.v490-statement-filter{grid-template-columns:1fr}.v490-summary-grid,.report-summary{grid-template-columns:1fr 1fr}.v490-otp-card{margin:10px auto;padding:20px}.v490-otp-card .otp-input{font-size:23px;letter-spacing:7px}}

/* V4.9.0：可收缩侧栏、可编排顶部快捷栏和个人日历。 */
.sidebar-v27,
.main-v27 { transition: width .2s ease, margin-left .2s ease; }
.sidebar-collapse-button {
  position: absolute;
  top: 72px;
  right: -14px;
  z-index: 5;
  width: 28px;
  height: 38px;
  padding: 0;
  border: 1px solid #cbd5e1;
  border-radius: 10px;
  background: #fff;
  color: #1d4ed8;
  box-shadow: 0 5px 16px rgba(15,23,42,.14);
  cursor: pointer;
  font-size: 23px;
  line-height: 1;
}
body.sidebar-collapsed .sidebar-v27 { width: 78px; }
body.sidebar-collapsed .main-v27 {
  width: calc(100% - 78px);
  margin-left: 78px;
}
body.sidebar-collapsed .brand-v27 { justify-content:center; padding:14px 8px; }
body.sidebar-collapsed .brand-text,
body.sidebar-collapsed .nav-title,
body.sidebar-collapsed .user-role,
body.sidebar-collapsed .userbar-v27 a { display:none; }
body.sidebar-collapsed .nav-v27 { padding-left:8px; padding-right:8px; }
body.sidebar-collapsed .nav-section { margin-bottom:8px; padding-bottom:8px; }
body.sidebar-collapsed .nav-v27 a {
  justify-content:center;
  min-height:44px;
  padding:8px 4px;
  overflow:hidden;
  font-size:0;
}
body.sidebar-collapsed .nav-v27 a span {
  width:auto;
  font-size:20px;
}
body.sidebar-collapsed .userbar-v27 { padding:10px 5px 14px; text-align:center; }
body.sidebar-collapsed .user-pill {
  justify-content:center;
  width:48px;
  padding:6px 4px;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  font-size:11px;
}
@media (min-width:821px) {
  html.sidebar-precollapsed .sidebar-v27 { width:78px; }
  html.sidebar-precollapsed .main-v27 { width:calc(100% - 78px); margin-left:78px; }
  html.sidebar-precollapsed .brand-v27 { justify-content:center; padding:14px 8px; }
  html.sidebar-precollapsed .brand-text,
  html.sidebar-precollapsed .nav-title,
  html.sidebar-precollapsed .user-role,
  html.sidebar-precollapsed .userbar-v27 a { display:none; }
  html.sidebar-precollapsed .nav-v27 { padding-left:8px; padding-right:8px; }
  html.sidebar-precollapsed .nav-section { margin-bottom:8px; padding-bottom:8px; }
  html.sidebar-precollapsed .nav-v27 a {
    justify-content:center;
    min-height:44px;
    padding:8px 4px;
    overflow:hidden;
    font-size:0;
  }
  html.sidebar-precollapsed .nav-v27 a span { width:auto; font-size:20px; }
  html.sidebar-precollapsed .userbar-v27 { padding:10px 5px 14px; text-align:center; }
}
.top-shortcut-actions { justify-content:flex-end; }
.shortcut-settings-link { width:38px; justify-content:center; padding-left:0; padding-right:0; }
.shortcut-settings-list { display:flex; flex-direction:column; gap:9px; margin-top:14px; }
.shortcut-setting-row {
  display:grid;
  grid-template-columns:34px minmax(180px,1fr) auto auto;
  align-items:center;
  gap:10px;
  padding:11px 12px;
  border:1px solid #dbe4ef;
  border-radius:12px;
  background:#fff;
}
.shortcut-setting-row.dragging { opacity:.5; border-color:#3b82f6; }
.shortcut-drag-handle { color:#94a3b8; font-size:20px; cursor:grab; user-select:none; }
.shortcut-label { display:flex; align-items:center; gap:9px; font-weight:800; }
.shortcut-visible { display:flex; align-items:center; gap:7px; margin:0; white-space:nowrap; }
.shortcut-visible input { width:17px; height:17px; margin:0; }
.shortcut-move-actions { display:flex; gap:5px; }
.mobile-product-filter-toggle { display:none; }
.mobile-knowledge-home { display:none; }
.mobile-calendar-overview { display:none; }

.calendar-page-layout {
  display:grid;
  grid-template-columns:minmax(0,1.55fr) minmax(300px,.75fr);
  gap:16px;
  align-items:start;
}
.calendar-page-layout > * { min-width:0; }
.calendar-card { min-width:0; }
.calendar-toolbar { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:12px; }
.calendar-toolbar h2 { margin:0; font-size:22px; }
.calendar-weekdays,
.calendar-grid { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); }
.calendar-weekdays div {
  padding:8px;
  color:#64748b;
  font-size:12px;
  font-weight:800;
  text-align:center;
}
.calendar-day {
  min-height:116px;
  padding:8px;
  border-top:1px solid #e2e8f0;
  border-left:1px solid #e2e8f0;
  background:#fff;
}
.calendar-day:nth-child(7n) { border-right:1px solid #e2e8f0; }
.calendar-day:nth-last-child(-n+7) { border-bottom:1px solid #e2e8f0; }
.calendar-day.other-month { background:#f8fafc; color:#94a3b8; }
.calendar-day.today { box-shadow:inset 0 0 0 2px #3b82f6; background:#eff6ff; }
.calendar-day-head { display:flex; justify-content:space-between; gap:5px; min-height:24px; }
.calendar-day-number {
  width:24px;
  height:24px;
  display:grid;
  place-items:center;
  border-radius:999px;
  font-weight:800;
}
.calendar-day.today .calendar-day-number { background:#2563eb; color:#fff; }
.holiday-label { color:#dc2626; font-size:11px; font-weight:800; text-align:right; }
.holiday-label.workday { color:#b45309; }
.calendar-event-chip {
  display:block;
  margin-top:5px;
  padding:5px 6px;
  overflow:hidden;
  border-left:3px solid #2563eb;
  border-radius:6px;
  background:#eaf2ff;
  color:#1e3a8a;
  font-size:11px;
  line-height:1.25;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.calendar-event-chip.completed { border-color:#94a3b8; background:#f1f5f9; color:#64748b; text-decoration:line-through; }
.calendar-create-grid { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.calendar-create-grid .span-2 { grid-column:span 2; }
.calendar-create-card { position:sticky; top:78px; }
.calendar-agenda { display:flex; flex-direction:column; gap:10px; }
.calendar-agenda-item { padding:11px; border:1px solid #dbe4ef; border-radius:12px; background:#fff; }
.calendar-agenda-item.due { border-color:#fca5a5; background:#fff7f7; }
.calendar-agenda-item h4 { margin:0 0 5px; }
.calendar-agenda-actions { display:flex; flex-wrap:wrap; gap:6px; margin-top:9px; }
.calendar-agenda-actions form { margin:0; }
.calendar-due-banner { margin-bottom:16px; border-color:#fecaca; background:#fff7f7; }
.calendar-due-banner h3 { color:#b91c1c; }
.holiday-sync-bar {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  margin-bottom:14px;
  padding:11px 13px;
  border:1px solid #bfdbfe;
  border-radius:12px;
  background:#eff6ff;
  color:#1e3a8a;
}
.holiday-sync-bar > div { min-width:0; display:flex; flex-direction:column; gap:3px; }
.holiday-sync-bar span { color:#475569; font-size:12px; overflow-wrap:anywhere; }

@media (max-width: 1120px) {
  .calendar-page-layout { grid-template-columns:1fr; }
  .calendar-create-card { position:static; }
}
@media (max-width: 820px) {
  .sidebar-collapse-button { display:none; }
  body.sidebar-collapsed .sidebar-v27 { width:min(88vw,350px) !important; }
  body.sidebar-collapsed .main-v27 { width:100% !important; margin-left:0 !important; }
  body.sidebar-collapsed .brand-text { display:block; }
  body.sidebar-collapsed .nav-title { display:block; }
  body.sidebar-collapsed .nav-v27 a { justify-content:flex-start; padding:10px 11px; font-size:inherit; }
  body.sidebar-collapsed .nav-v27 a span { width:22px; font-size:inherit; }
  body.sidebar-collapsed .user-role,
  body.sidebar-collapsed .userbar-v27 a { display:block; }
  .mobile-knowledge-home { display:block; }
  .desktop-dashboard-content { display:none; }
  .mobile-home-hero {
    margin:-12px -12px 12px;
    padding:22px 16px 18px;
    border-radius:0 0 22px 22px;
    background:linear-gradient(135deg,#1d4ed8,#0ea5e9);
    color:#fff;
    box-shadow:0 12px 30px rgba(37,99,235,.2);
  }
  .mobile-home-hero small { color:#dbeafe; font-weight:700; }
  .mobile-home-hero h2 { margin:4px 0 14px; color:#fff; font-size:23px; }
  .mobile-primary-search,
  .mobile-inline-search { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:8px; }
  .mobile-primary-search input,
  .mobile-inline-search input {
    min-width:0;
    min-height:46px;
    border:0;
    border-radius:13px;
    padding:0 12px;
    font-size:16px;
  }
  .mobile-primary-search button,
  .mobile-inline-search button,
  .mobile-memo-form button {
    min-height:46px;
    padding:0 15px;
    border:0;
    border-radius:13px;
    background:#0f172a;
    color:#fff;
    font-weight:800;
  }
  .mobile-core-actions {
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:9px;
    margin-bottom:12px;
  }
  .mobile-core-actions a {
    min-width:0;
    display:grid;
    grid-template-columns:38px minmax(0,1fr);
    grid-template-rows:auto auto;
    column-gap:9px;
    padding:13px 11px;
    border:1px solid #dbe5f0;
    border-radius:15px;
    background:#fff;
    color:#0f172a;
    box-shadow:0 5px 16px rgba(15,23,42,.05);
  }
  .mobile-core-actions a > span {
    grid-row:1 / span 2;
    width:38px;
    height:38px;
    display:grid;
    place-items:center;
    border-radius:12px;
    background:#eff6ff;
    color:#2563eb;
    font-size:21px;
  }
  .mobile-core-actions strong { font-size:14px; }
  .mobile-core-actions small {
    min-width:0;
    overflow:hidden;
    color:#64748b;
    font-size:10px;
    text-overflow:ellipsis;
    white-space:nowrap;
  }
  .mobile-home-card {
    margin-bottom:11px;
    padding:14px;
    border:1px solid #dbe5f0;
    border-radius:16px;
    background:#fff;
    box-shadow:0 5px 16px rgba(15,23,42,.045);
  }
  .mobile-section-heading {
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:10px;
    margin-bottom:11px;
  }
  .mobile-section-heading h3 { margin:0; font-size:17px; }
  .mobile-section-heading a { color:#2563eb; font-size:12px; font-weight:800; }
  .mobile-inline-search input { border:1px solid #cbd5e1; }
  .mobile-inline-search button { background:#2563eb; }
  .mobile-reminder-list,
  .mobile-memo-list { display:flex; flex-direction:column; gap:7px; }
  .mobile-reminder-list a,
  .mobile-memo-list a {
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:10px;
    padding:10px 11px;
    border-radius:12px;
    background:#f8fafc;
    color:#334155;
  }
  .mobile-reminder-list b {
    min-width:26px;
    height:26px;
    display:grid;
    place-items:center;
    border-radius:999px;
    background:#ef4444;
    color:#fff;
    font-size:12px;
  }
  .mobile-empty-state { padding:13px; border-radius:12px; background:#f8fafc; color:#64748b; text-align:center; font-size:13px; }
  .mobile-memo-form { display:flex; flex-direction:column; gap:8px; }
  .mobile-memo-form > div { display:grid; grid-template-columns:1fr 1fr; gap:8px; }
  .mobile-memo-form input { min-width:0; min-height:44px; }
  .mobile-memo-form button { width:100%; background:#2563eb; }
  .mobile-memo-list { margin-top:10px; padding-top:10px; border-top:1px solid #e2e8f0; }
  .mobile-memo-list a > span { min-width:0; display:flex; flex-direction:column; gap:2px; }
  .mobile-memo-list strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .mobile-memo-list small { color:#64748b; font-size:11px; }
  .mobile-memo-list em { padding:3px 7px; border-radius:999px; background:#fee2e2; color:#b91c1c; font-size:11px; font-style:normal; font-weight:800; }

  .product-list-searchbar .mobile-secondary-filter { display:none; }
  .product-list-searchbar.show-mobile-filters .mobile-secondary-filter { display:block; }
  .mobile-product-filter-toggle { display:flex; width:100%; }
  .pump-admin-card { display:none; }
  .pump-results-card { margin-top:0; }

  .calendar-page-layout { display:flex; flex-direction:column; }
  .calendar-page-layout > div { width:100%; }
  .calendar-create-card { order:-1; width:100%; }
  .desktop-calendar-card { display:none; }
  .mobile-calendar-overview { display:block; }
  .mobile-calendar-toolbar {
    display:grid;
    grid-template-columns:40px 1fr 40px;
    align-items:center;
    margin-bottom:11px;
    text-align:center;
  }
  .mobile-calendar-toolbar a {
    width:38px;
    height:38px;
    display:grid;
    place-items:center;
    border:1px solid #dbe5f0;
    border-radius:11px;
    background:#fff;
    color:#2563eb;
    font-size:19px;
  }
  .mobile-calendar-toolbar strong { font-size:18px; }
  .mobile-holiday-list { display:flex; flex-wrap:wrap; gap:7px; }
  .mobile-holiday-list span {
    display:flex;
    align-items:center;
    gap:6px;
    padding:7px 9px;
    border-radius:10px;
    background:#fef2f2;
    color:#b91c1c;
    font-size:12px;
  }
  .mobile-holiday-list span.workday { background:#fff7ed; color:#b45309; }
  .mobile-holiday-list b { font-variant-numeric:tabular-nums; }
  .holiday-sync-bar { align-items:stretch; flex-direction:column; }
  .holiday-sync-bar .btn { width:100%; }
  .shortcut-setting-row { grid-template-columns:28px minmax(130px,1fr) auto; }
  .shortcut-move-actions { grid-column:2 / -1; }
}
@media (max-width: 600px) {
  .calendar-create-grid { grid-template-columns:1fr; }
  .calendar-create-grid .span-2 { grid-column:auto; }
}

/* V4.9.3：出库材质选择、浏览器打印字重与紧凑待办 */
.out-inventory-results,
.document-material-results {
  top:68px;
  right:auto;
  width:min(620px,72vw);
  min-width:520px;
  max-height:360px;
  padding:7px;
}
.sales-product-field .document-material-results,
.transfer-inv-field .document-material-results { top:40px; }
.count-field .document-material-results { top:38px; }
.out-inventory-option,
.document-material-option {
  padding:9px 11px;
  border-bottom:1px solid #edf1f5;
}
.out-inventory-option:last-child,
.document-material-option:last-child { border-bottom:0; }
.out-option-top,
.document-material-top {
  display:grid;
  grid-template-columns:minmax(150px,1fr) minmax(100px,.8fr) auto;
  align-items:center;
  gap:10px;
}
.out-material-primary,
.document-material-primary {
  overflow:hidden;
  color:#0f766e;
  font-size:16px;
  font-weight:900;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.out-model-secondary,
.document-model-secondary {
  overflow:hidden;
  color:#1e293b !important;
  font-size:13px !important;
  font-weight:800;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.out-stock-pill,
.document-value-pill {
  padding:3px 7px;
  border-radius:999px;
  background:#dcfce7;
  color:#166534 !important;
  font-size:11px !important;
  font-weight:900;
  white-space:nowrap;
}
.out-option-meta,
.document-material-meta {
  display:block;
  margin-top:3px;
  overflow:hidden;
  color:#64748b !important;
  font-size:11px !important;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.delivery-edit-table .out-material-filter,
.delivery-edit-table .document-material-filter,
.sales-item-table .document-material-filter {
  background:#f0fdfa;
  color:#0f766e;
  font-weight:850;
}
.delivery-edit-table .out-material-filter:focus,
.delivery-edit-table .document-material-filter:focus,
.sales-item-table .document-material-filter:focus { background:#ecfeff; }

.todo-card-prominent {
  padding:14px;
  border-width:1px;
  box-shadow:0 7px 20px rgba(37,99,235,.09);
}
.todo-card-prominent .todo-headline { gap:12px; }
.todo-card-prominent .todo-headline h2 { font-size:20px; }
.todo-card-prominent .todo-kicker {
  margin-bottom:5px;
  padding:3px 8px;
  font-size:11px;
}
.todo-card-prominent .todo-count {
  margin-left:5px;
  padding:3px 7px;
  font-size:11px;
}
.todo-card-prominent .todo-add-form-large input {
  min-height:36px;
  border-width:1px;
  font-size:13px;
}
.todo-card-prominent .todo-add-form { min-width:360px; }
.todo-list-large {
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:8px;
  margin-top:10px;
}
.todo-list-large .todo-item {
  min-height:0;
  grid-template-columns:26px minmax(0,1fr) minmax(84px,auto) 48px;
  align-items:center;
  gap:7px;
  padding:7px 8px;
  border-radius:9px;
}
.todo-list-large .todo-item:not(.has-image) { grid-template-columns:26px minmax(0,1fr) minmax(84px,auto); }
.todo-list-large .todo-check {
  width:24px;
  height:24px;
  border-radius:7px;
  font-size:14px;
}
.todo-list-large .todo-title {
  display:-webkit-box;
  overflow:hidden;
  font-size:13px;
  line-height:1.35;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:2;
}
.todo-list-large .todo-time {
  margin-top:2px;
  font-size:10px;
}
.todo-row-actions {
  display:flex;
  align-items:center;
  justify-content:flex-end;
  flex-wrap:wrap;
  gap:3px;
}
.todo-row-actions form { margin:0; }
.todo-row-actions .btn {
  min-height:24px;
  padding:3px 6px;
  border-radius:6px;
  font-size:10px;
}
.todo-thumb-link {
  width:46px;
  height:46px;
  display:block;
  overflow:hidden;
  border:1px solid #dbe4ef;
  border-radius:7px;
  background:#fff;
}
.todo-thumb-link .todo-thumb {
  width:100%;
  height:100%;
  max-height:none;
  margin:0;
  border:0;
  border-radius:0;
  object-fit:cover;
}
.todo-edit-card { max-width:680px; margin:0 auto; }
.todo-edit-preview { display:flex; align-items:center; gap:12px; margin-bottom:16px; }
.todo-edit-preview > label:first-child { font-weight:800; }
.todo-edit-preview a {
  width:86px;
  height:64px;
  display:block;
  overflow:hidden;
  border:1px solid #dbe4ef;
  border-radius:9px;
  background:#f8fafc;
}
.todo-edit-preview img { width:100%; height:100%; object-fit:cover; }
.todo-remove-image { display:flex; align-items:center; gap:6px; color:#b42318; font-size:13px; }
.todo-remove-image input { width:auto; }

@media (max-width:1350px) and (min-width:981px) {
  .todo-list-large { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width:980px) {
  .todo-list-large { grid-template-columns:1fr; }
  .todo-list-large .todo-item { grid-template-columns:26px minmax(0,1fr) minmax(84px,auto) 48px !important; }
  .todo-list-large .todo-item:not(.has-image) { grid-template-columns:26px minmax(0,1fr) minmax(84px,auto) !important; }
}
@media (max-width:720px) {
  .out-inventory-results,
  .document-material-results { min-width:0; width:min(92vw,520px); }
  .out-option-top,
  .document-material-top { grid-template-columns:minmax(120px,1fr) auto; }
  .out-model-secondary,
  .document-model-secondary { grid-column:1 / -1; grid-row:2; }
  .todo-card-prominent .todo-add-form { min-width:0; }
  .todo-list-large .todo-item,
  .todo-list-large .todo-item:not(.has-image) {
    grid-template-columns:26px minmax(0,1fr) 46px !important;
  }
  .todo-list-large .todo-row-actions { grid-column:2 / -1; justify-content:flex-start; }
  .todo-list-large .todo-thumb-link { grid-column:3; grid-row:1; }
}

/* V4.9.3.1：打印正文恢复清晰字重，仅标题、表头和合计适度加粗 */
.document-print-preview, .document-print-preview *,
.delivery-print-sheet, .delivery-print-sheet *,
.contract-sheet, .contract-sheet *,
.payment-print-sheet, .payment-print-sheet *,
.print-sheet, .print-sheet * {
  font-weight:400 !important;
  font-synthesis:none;
  -webkit-text-stroke:0 !important;
}
.delivery-print-table th, .print-table th,
.contract-party-table th, .contract-items-table th,
.payment-print-sheet th,
.delivery-total-row td, .contract-total-row td,
.delivery-summary-edit strong, .print-summary strong,
.delivery-meta > div > span,
.document-print-preview strong, .payment-print-sheet strong,
.print-sheet strong, .contract-sheet strong {
  font-weight:600 !important;
  font-synthesis:weight;
}
.delivery-company, .delivery-doc-title,
.print-header h1, .contract-title {
  font-weight:700 !important;
  font-synthesis:weight;
}
@media print {
  body, body *,
  .document-print-preview, .document-print-preview *,
  .delivery-print-sheet, .delivery-print-sheet *,
  .contract-sheet, .contract-sheet *,
  .payment-print-sheet, .payment-print-sheet *,
  .print-sheet, .print-sheet * {
    font-family:"Microsoft YaHei","SimSun",Arial,sans-serif !important;
    font-weight:400 !important;
    font-synthesis:none;
    -webkit-text-stroke:0 !important;
    text-rendering:optimizeLegibility;
  }
  .delivery-print-table th, .print-table th,
  .contract-party-table th, .contract-items-table th,
  .payment-print-sheet th,
  .delivery-total-row td, .contract-total-row td,
  .delivery-summary-edit strong, .print-summary strong,
  .delivery-meta > div > span,
  .document-print-preview strong, .payment-print-sheet strong,
  .print-sheet strong, .contract-sheet strong {
    font-weight:600 !important;
    font-synthesis:weight;
  }
  .delivery-company, .delivery-doc-title,
  .print-header h1, .contract-title {
    font-weight:700 !important;
    font-synthesis:weight;
  }
}
/* V4.9.4 server security center */
.logout-form{margin:0}
.logout-form button{appearance:none;border:0;background:transparent;color:inherit;padding:0;cursor:pointer;font:inherit}
.security-status-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-bottom:16px}
.security-status-card{display:flex;gap:14px;align-items:flex-start;margin:0}
.security-status-card strong{display:inline-block;margin-right:8px}
.security-status-card p{margin:7px 0 0;color:var(--muted,#64748b);font-size:13px;line-height:1.55}
.security-status-icon,.security-shield{font-size:30px;line-height:1}
.security-shield{text-align:center;margin-bottom:12px}
.security-settings-grid{align-items:start;margin-bottom:16px}
.security-critical-card{border:2px solid #dc2626;background:#fff7f7;margin-bottom:16px}
.security-critical-card h3{color:#b91c1c}
.security-inline-form{display:grid;grid-template-columns:1fr 1.5fr auto;gap:12px;align-items:end}
.security-inline-form .form-field{margin:0}
.security-switch{display:flex;margin:10px 0;padding:10px 12px;border:1px solid #dbe4ee;border-radius:8px;background:#f8fafc}
.security-narrow-card{max-width:680px;margin:0 auto}
.security-card-heading{justify-content:space-between;align-items:center;margin-bottom:10px}
.security-card-heading h3{margin:0}
.security-list{display:flex;flex-direction:column;gap:8px}
.security-list-row{display:flex;justify-content:space-between;gap:14px;align-items:center;padding:11px 12px;border:1px solid #e2e8f0;border-radius:9px;background:#fff}
.security-list-row p{margin:4px 0 0;color:#64748b;font-size:12px;line-height:1.45;word-break:break-all}
.security-verify-box{max-width:430px}
.otp-input{font-size:24px!important;font-weight:700;letter-spacing:.32em;text-align:center;font-variant-numeric:tabular-nums}
@media(max-width:900px){
  .security-status-grid{grid-template-columns:1fr}
  .security-inline-form{grid-template-columns:1fr}
}
