:root{--bg: #eef2f8;--bg-accent: linear-gradient(135deg, #e8eef9 0%, #f5f7fb 45%, #eef2f8 100%);--card: #ffffff;--border: #e2e8f0;--border-focus: #6366f1;--text: #0f172a;--muted: #64748b;--primary: #4f46e5;--primary-hover: #4338ca;--primary-soft: #eef2ff;--danger: #dc2626;--danger-soft: #fef2f2;--success-soft: #ecfdf5;--sidebar: linear-gradient(180deg, #1e293b 0%, #0f172a 100%);--sidebar-text: #e2e8f0;--shadow-sm: 0 1px 2px rgba(15, 23, 42, .05);--shadow-md: 0 8px 24px rgba(15, 23, 42, .08);--shadow-lg: 0 16px 40px rgba(15, 23, 42, .1);--radius: 14px}*{box-sizing:border-box}body{margin:0;font-family:PingFang SC,Microsoft YaHei,Segoe UI,system-ui,sans-serif;background:var(--bg);background-image:var(--bg-accent);color:var(--text);-webkit-font-smoothing:antialiased}#root{min-height:100vh}.app-shell{display:flex;min-height:100vh}.sidebar{width:248px;background:var(--sidebar);color:var(--sidebar-text);padding:28px 18px;flex-shrink:0;box-shadow:4px 0 24px #0f172a1f;display:flex;flex-direction:column}.brand{padding:4px 8px 20px;border-bottom:1px solid rgba(255,255,255,.08);margin-bottom:20px}.brand-badge{display:inline-block;font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:#a5b4fc;background:#6366f133;padding:4px 10px;border-radius:999px;margin-bottom:10px}.sidebar h1{font-size:19px;margin:0 0 6px;line-height:1.35;font-weight:700;color:#f8fafc}.sidebar p{margin:0;font-size:12px;color:#94a3b8;line-height:1.5}.nav-link{display:flex;align-items:center;gap:10px;padding:11px 14px;border-radius:10px;color:#cbd5e1;text-decoration:none;margin-bottom:4px;font-size:14px;font-weight:500;transition:background .15s,color .15s,transform .1s}.nav-link .nav-icon{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;flex-shrink:0;opacity:.92}.nav-link .nav-icon svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}.nav-link:hover{background:#ffffff14;color:#f8fafc}.nav-link.active{background:linear-gradient(90deg,#6366f159,#6366f126);color:#fff;box-shadow:inset 0 0 0 1px #a5b4fc40}.sidebar-footer{margin-top:auto;padding:16px 12px 0;font-size:11px;color:#64748b;line-height:1.5}.sidebar-copyright{margin-top:auto;padding:16px 12px 12px;font-size:11px;color:#94a3b8;line-height:1.5;border-top:1px solid rgba(148,163,184,.15)}.sidebar-copyright-line{margin:0 0 8px;color:#cbd5e1;font-size:11px}.sidebar-copyright-custom{display:flex;flex-direction:column;align-items:flex-start;gap:6px}.sidebar-wechat-qr{width:72px;height:72px;border-radius:6px;background:#fff;padding:2px;object-fit:contain}.main{flex:1;padding:28px 36px 40px;overflow:auto;max-width:1280px}.page-header{margin-bottom:24px}.page-title{margin:0 0 6px;font-size:26px;font-weight:700;letter-spacing:-.02em;color:var(--text)}.page-subtitle{margin:0;font-size:14px;color:var(--muted)}.check-row-top{margin-top:14px;max-width:280px;background:#fff;border:1px solid var(--border);border-radius:12px;padding:12px 16px;box-shadow:var(--shadow-sm)}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:22px 24px;margin-bottom:18px;box-shadow:var(--shadow-sm);transition:box-shadow .2s}.card:hover{box-shadow:var(--shadow-md)}.card h3{margin:0 0 16px;font-size:16px;font-weight:600;color:var(--text);display:flex;align-items:center;gap:8px}.card h3:before{content:"";width:4px;height:18px;border-radius:2px;background:linear-gradient(180deg,var(--primary),#818cf8)}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}@media (max-width: 900px){.grid-2{grid-template-columns:1fr}.sidebar{width:200px}.main{padding:20px}}label{display:block;font-size:13px;font-weight:500;color:var(--muted);margin-bottom:6px}input,select,textarea{width:100%;box-sizing:border-box;padding:10px 12px;border:1px solid var(--border);border-radius:10px;font-size:14px;line-height:1.428571429;min-height:42px;background:#fafbfc;transition:border-color .15s,box-shadow .15s,background .15s}select{appearance:none;-webkit-appearance:none;-moz-appearance:none;cursor:pointer;padding-right:36px;background-color:#fafbfc;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;background-size:12px}select:hover{background-color:#fafbfc}select:focus{background-color:#fff}input:hover,select:hover,textarea:hover{border-color:#cbd5e1}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--border-focus);box-shadow:0 0 0 3px #6366f126;background:#fff}textarea{min-height:72px;resize:vertical}.btn{border:none;border-radius:10px;padding:10px 18px;font-size:14px;font-weight:600;cursor:pointer;transition:transform .1s,box-shadow .15s,background .15s}.btn:active{transform:scale(.98)}.btn-primary{background:linear-gradient(135deg,var(--primary) 0%,#6366f1 100%);color:#fff;box-shadow:0 4px 14px #4f46e559}.btn-primary:hover:not(:disabled){background:linear-gradient(135deg,var(--primary-hover) 0%,#4f46e5 100%);box-shadow:0 6px 18px #4f46e566}.btn-primary:disabled{color:#cbd5e1;background:#94a3b8;border-color:transparent;box-shadow:none;cursor:not-allowed;opacity:1}.btn-secondary{background:#f1f5f9;color:#334155;border:1px solid var(--border)}.btn-secondary:hover:not(:disabled){background:#e2e8f0}.btn-secondary:disabled{color:#94a3b8;background:#f1f5f9;border-color:#e2e8f0;cursor:not-allowed}.btn-danger{background:var(--danger-soft);color:var(--danger);border:1px solid #fecaca}.btn-danger:hover:not(:disabled){background:#fee2e2}.btn-danger:disabled{color:#94a3b8;background:#f8fafc;border-color:#e2e8f0;cursor:not-allowed}.btn+.btn{margin-left:8px}.btn-lg{padding:12px 28px;font-size:15px}.toolbar{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:16px;align-items:center}table.data{width:100%;border-collapse:separate;border-spacing:0;font-size:14px}table.data th,table.data td{border-bottom:1px solid var(--border);padding:12px 10px;text-align:left}table.data th{color:var(--muted);font-weight:600;font-size:12px;text-transform:none;background:#f8fafc}table.data tbody tr:hover td{background:#f8fafc}table.data tbody tr:last-child td{border-bottom:none}.hint{font-size:13px;color:var(--muted);margin-top:10px;line-height:1.6}.autocomplete{position:relative}.autocomplete-list{position:absolute;z-index:20;left:0;right:0;top:calc(100% + 6px);background:#fff;border:1px solid var(--border);border-radius:12px;max-height:240px;overflow:auto;box-shadow:var(--shadow-lg);list-style:none;margin:0;padding:6px}.autocomplete-list li{padding:10px 12px;cursor:pointer;border-radius:8px;font-size:14px}.autocomplete-list li:hover{background:var(--primary-soft);color:var(--primary)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a80;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:100;padding:20px}.modal{background:#fff;border-radius:16px;width:min(720px,92vw);max-height:85vh;overflow:auto;padding:24px;box-shadow:var(--shadow-lg)}.modal h3{margin-top:0;font-size:18px}.history-detail-modal{width:min(960px,96vw)}.modal-header-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:16px}.modal-header-row h3{margin:0;flex:1}.detail-meta{display:grid;grid-template-columns:repeat(3,1fr);gap:8px 16px;margin:0 0 16px;font-size:14px}.detail-meta-wide{grid-column:1 / -1}.detail-meta dt{color:var(--muted);font-size:12px;margin-bottom:2px}.detail-meta dd{margin:0}.empty{color:var(--muted);text-align:center;padding:40px}.alert{padding:12px 16px;border-radius:10px;margin-bottom:16px;font-size:14px;border:1px solid transparent}.alert-success{background:var(--success-soft);color:#065f46;border-color:#a7f3d0}.alert-error{background:var(--danger-soft);color:#991b1b;border-color:#fecaca}.check-row{display:flex;align-items:center;gap:10px;padding:14px 16px;background:#f8fafc;border:1px solid var(--border);border-radius:12px;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .15s,border-color .15s}.check-row:hover{background:var(--primary-soft);border-color:#c7d2fe}.check-row input[type=checkbox]{width:18px;height:18px;accent-color:var(--primary);cursor:pointer}.check-row span{font-size:15px;font-weight:500;color:var(--text)}.action-bar{display:flex;flex-wrap:wrap;align-items:center;gap:16px;margin-top:8px}.order-lines input{min-width:0;padding:8px 10px;font-size:13px}.order-lines .col-product{min-width:220px}.order-lines .col-qty{width:72px}.order-lines .qty-input{width:100%;text-align:center}.product-line{display:flex;align-items:center;gap:8px}.btn-icon-add{flex-shrink:0;width:32px;height:32px;border:1px solid var(--border);border-radius:8px;background:var(--primary-soft);color:var(--primary);font-size:20px;font-weight:700;line-height:1;cursor:pointer;padding:0}.btn-icon-add:hover{background:#e0e7ff;border-color:#c7d2fe}.input-with-picker{flex:1;position:relative;min-width:0}.input-with-picker input{width:100%;padding-right:42px}.btn-dots{position:absolute;right:4px;top:50%;transform:translateY(-50%);border:none;background:#e2e8f0;color:#475569;border-radius:6px;padding:4px 10px;font-size:12px;font-weight:700;letter-spacing:1px;cursor:pointer}.btn-dots:hover{background:#cbd5e1;color:var(--text)}.product-picker-modal input{margin-bottom:12px}.picker-list{list-style:none;margin:0 0 16px;padding:0;max-height:320px;overflow:auto;border:1px solid var(--border);border-radius:10px}.picker-list li{padding:10px 12px;cursor:pointer;border-bottom:1px solid var(--border);display:flex;flex-direction:column;gap:4px}.picker-list li:last-child{border-bottom:none}.picker-list li:hover{background:var(--primary-soft)}.picker-list li strong{font-size:14px}.picker-list li span{font-size:12px;color:var(--muted)}.picker-empty{color:var(--muted);text-align:center;cursor:default!important}.printer-type-grid{display:grid;grid-template-columns:repeat(2,minmax(200px,1fr));gap:14px;margin:16px 0 12px}@media (max-width: 640px){.printer-type-grid{grid-template-columns:1fr}}.printer-type-card{display:flex;flex-direction:column;gap:6px;padding:16px 18px;border:2px solid var(--border);border-radius:12px;cursor:pointer;background:#f8fafc;transition:border-color .15s,background .15s,box-shadow .15s}.printer-type-card input{position:absolute;opacity:0;width:0;height:0;pointer-events:none}.printer-type-card.active{border-color:var(--primary);background:var(--primary-soft);box-shadow:0 0 0 3px #6366f11f}.printer-type-title{font-size:15px;font-weight:600;color:var(--text)}.printer-type-desc{font-size:13px;color:var(--muted)}.products-table .col-drag{width:36px;text-align:center;color:var(--muted)}.drag-handle{cursor:grab;-webkit-user-select:none;user-select:none;font-size:14px;letter-spacing:-2px}.products-table tr.dragging{opacity:.55;background:var(--primary-soft)!important}.doc-title-block{margin-top:12px;padding:14px 18px;background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-sm)}.doc-title-text{text-align:center;font-size:20px;font-weight:700;letter-spacing:4px;margin-bottom:12px}.doc-title-options{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:20px 28px}.check-inline{display:inline-flex;align-items:center;gap:8px;cursor:pointer;-webkit-user-select:none;user-select:none;font-size:15px;font-weight:500}.check-inline input{width:16px;height:16px;min-height:0;min-width:0;padding:0;margin:0;flex-shrink:0;accent-color:var(--primary);cursor:pointer}.check-inline.check-disabled{opacity:.45;cursor:not-allowed}.check-inline.check-disabled input{cursor:not-allowed}.stamp-picker-grid,.stamp-admin-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:16px;margin:16px 0}.stamp-picker-item{border:2px solid var(--border);border-radius:12px;padding:10px;background:#f8fafc;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:8px;transition:border-color .15s,box-shadow .15s}.stamp-picker-item:hover{border-color:var(--primary);box-shadow:var(--shadow-md)}.stamp-picker-item img,.stamp-admin-item img{width:100px;height:100px;object-fit:contain;background:#fff;border:1px dashed var(--border);border-radius:8px}.stamp-admin-item{border:1px solid var(--border);border-radius:12px;padding:12px;text-align:center}.stamp-admin-meta{margin-top:8px;display:flex;flex-direction:column;gap:8px;align-items:center}.page-inventory .inv-page-header{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:20px;flex-wrap:wrap}.inv-stat-chips{display:flex;gap:10px;flex-wrap:wrap}.inv-chip{display:inline-flex;align-items:center;padding:6px 14px;border-radius:999px;font-size:13px;font-weight:600;background:#fff;border:1px solid var(--border);color:var(--muted);box-shadow:var(--shadow-sm)}.inv-chip-accent{background:var(--primary-soft);border-color:#c7d2fe;color:var(--primary)}.inv-toolbar-card{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:16px 20px;margin-bottom:16px}.inv-search-wrap{position:relative;flex:1;min-width:220px;max-width:420px}.inv-search-icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--muted);font-size:16px;pointer-events:none}.inv-search-input{width:100%;padding:10px 14px 10px 40px;border:1px solid var(--border);border-radius:12px;font-size:14px;background:#f8fafc;transition:border-color .15s,box-shadow .15s}.inv-search-input:focus{outline:none;border-color:var(--border-focus);box-shadow:0 0 0 3px #6366f126;background:#fff}.inv-toolbar-actions{display:flex;gap:10px;flex-wrap:wrap}.inv-table-card{padding:0;overflow:hidden}.inv-table-card .inventory-table{margin:0}.inv-table-card .inventory-table thead th{background:#f8fafc;font-size:13px;color:var(--muted);font-weight:600;padding:14px 12px;border-bottom:1px solid var(--border)}.inv-table-card .inventory-table tbody tr{transition:background .12s}.inv-table-card .inventory-table tbody tr:hover{background:#f8fafc}.inv-table-card .inventory-table tbody td{padding:14px 12px;vertical-align:middle}.inv-empty{padding:48px 24px;text-align:center;color:var(--muted);font-size:15px}.inv-thumb-wrap{display:flex;flex-direction:column;align-items:center;gap:8px}.inv-thumb-box{position:relative;width:72px;height:72px;border-radius:14px;overflow:hidden;box-shadow:0 4px 14px #0f172a1a;border:2px solid #fff;outline:1px solid var(--border);background:linear-gradient(145deg,#f1f5f9,#e2e8f0)}.inv-thumb{width:100%;height:100%;object-fit:cover;display:block}.inv-thumb-badge{position:absolute;bottom:4px;right:4px;font-size:10px;padding:2px 6px;border-radius:6px;background:#0f172a8c;color:#fff}.inv-img-btn{min-width:64px}.inv-qty{display:inline-flex;min-width:48px;justify-content:center;padding:4px 12px;border-radius:999px;font-weight:600;font-size:13px;background:#f1f5f9;color:var(--muted)}.inv-qty.has-stock{background:#ecfdf5;color:#047857}.inv-actions{min-width:200px}.inv-action-group{display:flex;flex-wrap:wrap;gap:6px}.btn-ghost{background:transparent;border:1px dashed var(--border);color:var(--muted)}.btn-ghost:hover{background:var(--primary-soft);border-color:#a5b4fc;color:var(--primary)}.modal-actions{display:flex;gap:10px;margin-top:20px;flex-wrap:wrap}.crop-modal h3{margin-bottom:6px}.crop-hint{margin:0 0 16px;font-size:13px;color:var(--muted)}.crop-upload-zone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:40px 24px;border:2px dashed #c7d2fe;border-radius:16px;background:linear-gradient(180deg,#fafbff,#f1f5f9);cursor:pointer;transition:border-color .15s,background .15s}.crop-upload-zone:hover{border-color:var(--primary);background:var(--primary-soft)}.crop-upload-icon{font-size:36px}.crop-upload-title{font-size:16px;font-weight:600;color:var(--text)}.crop-upload-sub{font-size:13px;color:var(--muted)}.crop-sliders{display:grid;gap:12px;margin-top:12px}.crop-sliders label{display:grid;gap:6px;font-size:13px;color:var(--muted)}.crop-sliders label span{font-weight:600}.modal-wide{max-width:520px}.crop-panel{margin-top:4px}.crop-preview-wrap{position:relative;width:280px;max-width:100%;aspect-ratio:1;margin:0 auto 12px;overflow:hidden;border-radius:16px;background:#0f172a;box-shadow:var(--shadow-md)}.crop-source{width:100%;height:100%;object-fit:contain;display:block}.crop-frame{position:absolute;border:2px solid #818cf8;box-shadow:0 0 0 999px #00000073;pointer-events:none;box-sizing:border-box;border-radius:4px}.warehouse-select{position:relative}.warehouse-dropdown{position:absolute;z-index:30;left:0;right:0;top:100%;background:#fff;border:1px solid var(--border);border-radius:10px;max-height:200px;overflow:auto;box-shadow:var(--shadow-md)}.warehouse-option{display:block;width:100%;text-align:left;padding:10px 12px;border:0;background:#fff;cursor:pointer}.warehouse-option:hover{background:var(--primary-soft)}.readonly-field{padding:10px 12px;background:#f8fafc;border:1px solid var(--border);border-radius:8px;min-height:42px;font-size:14px;box-sizing:border-box;line-height:1.428571429}.warn-text{color:#b45309;font-size:13px}.lot-select{width:100%;min-width:160px}.fifo-box{background:#fff7ed;border:1px solid #fdba74;border-radius:10px;padding:12px;margin:12px 0;font-size:14px}.fifo-list{margin:8px 0 0 20px;color:var(--muted);font-size:13px}.page-home{max-width:1100px}.dash-side-pair{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:20px}.dash-side-pair .dash-express3,.dash-side-pair .dash-stock-alert{margin-bottom:0;min-width:0;padding:18px 16px}.dash-side-pair .dash-express3-quota-row{margin-top:4px}.dash-side-pair .dash-express3-remaining,.dash-side-pair .dash-express3-total{font-size:2rem}.dash-side-pair .dash-express3-slash{font-size:1.35rem}.dash-side-pair .dash-express3-footer{margin-top:12px;padding-top:10px}.dash-side-pair .dash-alert-list-wrap{max-height:200px}@media (max-width: 720px){.dash-side-pair{grid-template-columns:1fr}}.dash-home-strip{padding:12px 18px;margin-bottom:20px}.dash-home-strip-row{display:flex;align-items:center;gap:10px 14px;min-height:36px;flex-wrap:nowrap}.dash-home-strip-row+.dash-home-strip-row{margin-top:10px;padding-top:10px;border-top:1px solid #e2e8f0}.dash-home-strip-label{flex:0 0 auto;font-size:13px;font-weight:700;color:var(--text);white-space:nowrap;display:inline-flex;align-items:center;gap:6px}.dash-home-strip-muted{font-size:13px;color:var(--muted)}.dash-home-strip-quota{display:inline-flex;align-items:baseline;gap:2px;flex:0 0 auto}.dash-home-num{font-size:1.25rem;font-weight:800;line-height:1.2}.dash-home-strip-spacer{flex:1 1 auto;min-width:8px}.dash-home-strip-tag{font-size:11px;padding:2px 8px;border-radius:999px;white-space:nowrap}.dash-home-strip-tag-ok{background:#ecfdf5;color:#059669}.dash-home-strip-tag-warn{background:#fff7ed;color:#b45309}.dash-home-strip-alerts{margin:0;flex:1 1 auto;min-width:0;font-size:13px;color:#7f1d1d;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dash-home-strip-alerts strong{color:#991b1b;font-weight:700}.dash-home-strip .dash-express3-detail-btn{flex:0 0 auto;white-space:nowrap}.dash-home-strip .dash-express3-remaining.dash-home-num,.dash-home-strip .dash-express3-total.dash-home-num{font-size:1.25rem}.dash-home-strip .dash-express3-slash{font-size:1rem}.dash-express3{padding:24px;margin-bottom:20px;position:relative}.dash-express3-quota-row{display:flex;align-items:baseline;gap:4px;margin-top:8px}.dash-express3-remaining{font-size:2.5rem;font-weight:700;color:#dc2626;line-height:1.1}.dash-express3-slash{font-size:1.75rem;font-weight:500;color:#64748b}.dash-express3-total{font-size:2.5rem;font-weight:700;color:#0f172a;line-height:1.1}.dash-express3-validity{margin:6px 0 0;font-size:13px;color:#475569}.dash-express3-caption{margin:8px 0 0;font-size:.875rem;color:#64748b}.dash-express3-caption-warn{color:#b45309}.dash-express3-caption-ok{color:#059669}.dash-express3-meta{margin:4px 0 0;font-size:.75rem;color:#94a3b8}.dash-express3-hint{padding:12px 0}.dash-express3-footer{display:flex;justify-content:flex-end;margin-top:16px;padding-top:12px;border-top:1px solid #e2e8f0}.dash-express3-detail-btn{background:none;border:none;color:#4f46e5;font-size:.875rem;cursor:pointer;padding:4px 0;text-decoration:underline;text-underline-offset:3px}.dash-express3-detail-btn:hover{color:#4338ca}.home-header{margin-bottom:20px}.dash-compass{padding:24px;margin-bottom:20px}.dash-compass-title{font-size:15px;font-weight:700;color:var(--text);margin-bottom:18px;letter-spacing:.02em}.dash-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.dash-card{border-radius:16px;padding:20px 18px;text-align:left;border:1px solid transparent;transition:transform .15s ease,box-shadow .15s ease}.dash-card-clickable{cursor:pointer;width:100%;font:inherit;-webkit-appearance:none;-moz-appearance:none;appearance:none}.dash-card-clickable:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.dash-card-primary{background:linear-gradient(145deg,#eef2ff,#e0e7ff);border-color:#c7d2fe}.dash-card-danger{background:linear-gradient(145deg,#fef2f2,#fee2e2);border-color:#fecaca}.dash-card-warning{background:linear-gradient(145deg,#fff7ed,#ffedd5);border-color:#fdba74}.dash-card-info{background:linear-gradient(145deg,#eff6ff,#dbeafe);border-color:#bfdbfe}.dash-card-label{font-size:13px;color:var(--muted);margin-bottom:8px}.dash-card-value{font-size:36px;font-weight:800;line-height:1.1;color:var(--text);font-variant-numeric:tabular-nums}.dash-days-danger{color:#dc2626}.dash-days-warning{color:#ea580c}.dash-days-info{color:#2563eb}.dash-card-sub{font-size:12px;color:var(--muted);margin-top:10px}.home-quick{padding:20px 24px}.home-quick-links{display:flex;flex-wrap:wrap;gap:10px}.dash-detail-wrap{max-height:55vh;overflow:auto;margin-top:12px;border:1px solid var(--border);border-radius:12px}.dash-detail-table{margin:0}.expiry-tag,.days-left{display:inline-block;padding:2px 8px;border-radius:6px;font-size:12px;font-weight:600}.expiry-tag-danger,.days-left-danger{background:#fef2f2;color:#dc2626}.expiry-tag-warning,.days-left-warning{background:#fff7ed;color:#ea580c}.expiry-tag-info,.days-left-info{background:#eff6ff;color:#2563eb}.product-edit-image-row{display:flex;align-items:flex-start;gap:16px;margin-top:8px}.inv-thumb-readonly .inv-thumb-box{cursor:default}.page-products .page-subtitle{margin-top:-8px;margin-bottom:16px;color:var(--muted)}.nav-link{position:relative}.nav-drag-handle{margin-right:6px;opacity:.45;cursor:grab;font-size:11px;letter-spacing:-2px;-webkit-user-select:none;user-select:none}.nav-link:hover .nav-drag-handle{opacity:.85}.nav-link-dragging{opacity:.55}.product-edit-image-top{margin-top:0;margin-bottom:4px}.dash-stock-alert{padding:20px 24px;margin-bottom:20px}.dash-alert-badge{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 7px;margin-left:10px;border-radius:999px;background:#dc2626;color:#fff;font-size:12px;font-weight:700}.dash-alert-ok{color:var(--muted)}.dash-alert-list-wrap{overflow:auto}.dash-alert-modal-list-wrap{max-height:min(60vh,520px)}.dash-alert-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.dash-alert-item{padding:6px 0}.dash-alert-item-text{margin:0;font-size:13px;line-height:1.5;font-weight:600}.dash-alert-product-name{font-weight:700}.dash-alert-item-meta{font-size:inherit;font-weight:500;opacity:.9}.dash-alert-item-spec{margin:4px 0 0;font-size:11px}.dash-alert-item-rank-1 .dash-alert-item-text,.dash-alert-item-rank-1 .dash-alert-product-name,.dash-alert-item-rank-1 .dash-alert-item-meta{color:#dc2626}.dash-alert-item-rank-2 .dash-alert-item-text,.dash-alert-item-rank-2 .dash-alert-product-name,.dash-alert-item-rank-2 .dash-alert-item-meta{color:#ea580c}.dash-alert-item-rank-n .dash-alert-item-text,.dash-alert-item-rank-n .dash-alert-product-name,.dash-alert-item-rank-n .dash-alert-item-meta{color:#111827}.dash-alert-more-btn{display:block;width:100%;margin-top:10px;padding:8px 0;border:none;background:none;color:#dc2626;font-size:12px;font-weight:600;cursor:pointer;text-align:center}.dash-alert-more-btn:hover{text-decoration:underline}.inv-batch-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;min-width:140px;max-width:280px}.inv-batch-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:5px 10px;border-radius:8px;background:#f8fafc;border:1px solid var(--border);font-size:13px}.inv-batch-no{font-weight:600;color:var(--text);word-break:break-all}.inv-batch-qty{flex-shrink:0;font-weight:700;color:#0d9488;font-variant-numeric:tabular-nums}.inv-batch-empty{color:var(--muted);font-size:13px}.inv-qty-btn{display:inline-flex;align-items:center;gap:6px;border:none;background:transparent;font:inherit;font-weight:600;color:var(--muted);cursor:pointer;padding:4px 8px;border-radius:8px}.inv-qty-btn.has-stock{color:#0f766e}.inv-qty-btn:hover:not(:disabled){background:#f0fdf4}.inv-qty-btn:disabled{cursor:default;opacity:.7}.inv-qty-chevron{font-size:11px;opacity:.75}.inv-stock-detail-row td{background:#f8fafc;border-bottom:1px solid #e2e8f0}.inv-stock-detail-row .inv-stock-detail-spacer{padding:0!important;border-bottom:1px solid #e2e8f0}.inv-stock-detail-row .inv-stock-detail-cell{padding:10px 12px 12px!important;vertical-align:top;text-align:left}.inv-stock-detail{padding:0;text-align:left}.inv-wh-block+.inv-wh-block{margin-top:12px;padding-top:12px;border-top:1px dashed #e2e8f0}.inv-wh-head{display:flex;align-items:center;justify-content:space-between;gap:12px;font-weight:600;color:#334155;margin-bottom:6px}.inv-wh-subtotal{font-size:13px;color:#64748b;font-weight:500}.inv-wh-lines{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.inv-wh-line{display:flex;flex-wrap:wrap;gap:8px 16px;font-size:13px;color:#475569;padding:4px 0}.inv-wh-batch{min-width:120px}.inv-wh-expiry{min-width:140px}.inv-wh-line-qty{font-weight:600;color:#0f766e;margin-left:auto}.inventory-table td{vertical-align:middle}.batch-stock-modal{max-width:960px}.batch-lines-wrap{margin-top:16px;max-height:50vh;overflow:auto;border:1px solid var(--border);border-radius:12px}.batch-lines-table{margin:0;min-width:720px}.batch-lines-table input[type=number],.batch-lines-table input[type=date]{width:100%;min-width:88px}.batch-field-cell .required-option-field label{display:none}.batch-product-btn{max-width:160px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}input[type=number]::-webkit-outer-spin-button,input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number],.qty-input,.inv-op-input-num{-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}.inv-op-backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.inv-op-modal{max-width:980px;width:min(96vw,980px);padding:0;overflow:hidden;border-radius:16px}.inv-op-modal-in{border-top:4px solid #0d9488}.inv-op-modal-transfer{border-top:4px solid #6366f1}.inv-op-header{display:flex;align-items:flex-start;gap:14px;padding:20px 22px 16px;background:linear-gradient(180deg,#f8fafc,#fff);border-bottom:1px solid var(--border)}.inv-op-header h3{margin:0 0 4px;font-size:18px}.inv-op-header .hint{margin:0;font-size:13px}.inv-op-icon{width:44px;height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:18px;flex-shrink:0}.inv-op-icon-in{background:#ccfbf1;color:#0f766e}.inv-op-icon-transfer{background:#e0e7ff;color:#4338ca}.inv-op-meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;padding:16px 22px;background:#fafbfc;border-bottom:1px solid var(--border)}.inv-op-meta-item label{display:block;font-size:12px;color:var(--muted);margin-bottom:6px;font-weight:600}.inv-op-meta-stat{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;padding:8px 14px;background:#fff;border:1px solid var(--border);border-radius:10px}.inv-op-stat-label{font-size:12px;color:var(--muted)}.inv-op-stat-value{font-size:22px;font-weight:800;color:var(--text)}.inv-op-lines{padding:12px 22px 8px}.inv-op-lines-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;font-weight:700;font-size:14px}.inv-op-table-wrap{max-height:48vh;overflow:auto;border:1px solid var(--border);border-radius:12px;background:#fff}.inv-op-table{margin:0;min-width:760px}.inv-op-table th{position:sticky;top:0;z-index:1;background:#f1f5f9;font-size:12px}.inv-op-table td{vertical-align:middle;padding:10px 8px}.inv-op-product-pick{width:100%;min-width:120px;max-width:180px;text-align:left;padding:8px 10px;border:1px dashed #cbd5e1;border-radius:8px;background:#f8fafc;cursor:pointer;font-size:13px;color:var(--text)}.inv-op-product-pick:hover{border-color:#6366f1;background:#eef2ff}.inv-op-product-pick .muted{color:var(--muted)}.inv-op-input-num{width:88px}.inv-op-lot-select{width:100%;min-width:140px;max-width:200px}.inv-op-readonly{min-height:36px;display:flex;align-items:center;font-size:13px;background:#f1f5f9}.inv-op-readonly-qty{font-weight:700;color:#0d9488;justify-content:center}.inv-op-field-compact label{font-size:11px;margin-bottom:4px}.inv-op-row-del{width:40px;text-align:center}.inv-op-footer{display:flex;gap:10px;padding:16px 22px 20px;border-top:1px solid var(--border);background:#fafbfc}.inv-op-modal-import{border-top:4px solid #2563eb;max-width:640px}.inv-op-icon-import{background:#dbeafe;color:#1d4ed8}.product-import-body{padding:16px 22px 8px}.product-import-steps{display:grid;gap:18px}.product-import-step{display:flex;gap:14px;align-items:flex-start}.product-import-step .step-num{width:28px;height:28px;border-radius:50%;background:#e0e7ff;color:#4338ca;font-weight:800;font-size:13px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.product-import-dl{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.product-import-drop{margin-top:10px;padding:24px 16px;border:2px dashed #cbd5e1;border-radius:12px;text-align:center;cursor:pointer;background:#f8fafc;transition:border-color .15s,background .15s}.product-import-drop:hover{border-color:#6366f1;background:#eef2ff}.product-import-drop.has-file{border-color:#0d9488;background:#f0fdfa}.product-import-drop-icon{font-size:28px;display:block;margin-bottom:6px}.product-import-filename{font-weight:600;color:var(--text);display:block}.product-import-result{margin-top:16px;padding:12px 14px;border-radius:10px;font-size:14px}.product-import-result.success{background:#ecfdf5;border:1px solid #6ee7b7}.product-import-result.has-error{background:#fff7ed;border:1px solid #fdba74}.product-import-errors{margin:8px 0 0;padding-left:20px;font-size:13px;color:#7c2d12;max-height:120px;overflow:auto}.text-danger{color:#dc2626}.page-products .toolbar{flex-wrap:wrap;gap:8px}.optional-date-field .optional-date-picker-row{position:relative;margin-top:8px}.optional-date-input-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.optional-date-chosen{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.shelf-life-select{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}.shelf-life-chip{padding:6px 14px;border-radius:8px;border:1px solid var(--border);background:#fff;font-size:13px;color:#475569;cursor:pointer}.shelf-life-chip:hover{border-color:#94a3b8;background:#f8fafc}.shelf-life-chip--active{border-color:#4f46e5;background:#eef2ff;color:#4338ca;font-weight:600}.expiry-auto-display{min-height:40px;display:flex;align-items:center;padding:8px 12px;background:#f1f5f9;border-radius:10px;font-size:14px}.inv-op-expiry-auto-label{display:block;font-size:11px;color:var(--muted);margin-bottom:4px}.optional-date-display{font-size:14px;color:var(--text, #1a1a1a)}.history-actions{display:flex;flex-wrap:wrap;gap:6px}.btn-warning{background:#f59e0b;color:#fff;border-color:#d97706}.btn-warning:hover:not(:disabled){background:#d97706}.btn-warning:disabled{opacity:.5;cursor:not-allowed}.tag-warn{display:inline-block;padding:2px 8px;border-radius:4px;font-size:12px;background:#fef3c7;color:#92400e}.data tr.row-inactive td,.data tr.row-inactive td strong{color:#94a3b8}.autocomplete-list li{line-height:1.4;padding:8px 12px}.history-edit-wrap{position:relative;display:inline-block}.history-edit-wrap[data-tip]:after{content:attr(data-tip);position:absolute;z-index:80;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);width:max-content;max-width:240px;padding:6px 10px;font-size:12px;font-weight:500;line-height:1.35;color:#fff;background:#334155;border-radius:6px;box-shadow:0 4px 12px #0f172a2e;white-space:normal;text-align:center;pointer-events:none;opacity:0;visibility:hidden}.history-edit-wrap[data-tip]:hover:after,.history-edit-wrap[data-tip]:focus-within:after{opacity:1;visibility:visible}.history-page .history-edit-wrap{margin-left:6px}.stock-in-records-table .history-actions-row{gap:12px}.stock-in-records-table .history-actions{max-width:220px}.history-edit-wrap--disabled{cursor:not-allowed;display:inline-block}.history-actions .btn-history-edit:disabled{opacity:1;cursor:not-allowed}.customer-orders-modal{max-width:960px;width:min(96vw,960px);max-height:90vh;overflow:auto}.customer-orders-toolbar{flex-wrap:wrap;gap:10px;margin-bottom:8px}.customer-orders-toolbar label{display:inline-flex;align-items:center;gap:6px;font-size:14px}.history-actions .btn-sm,.customer-order-row .btn-sm{padding:4px 10px;font-size:13px}.inv-tabs{display:flex;gap:8px;margin-bottom:16px}.inv-tab{padding:8px 18px;border-radius:999px;border:1px solid var(--border);background:var(--card);color:var(--text-muted);cursor:pointer;font-size:14px}.inv-tab--active{background:#38bdf81f;border-color:#38bdf873;color:#38bdf8;font-weight:600}.damage-records-filters{display:flex;flex-wrap:wrap;gap:12px 16px;align-items:flex-end}.damage-filter{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--text-muted)}.damage-filter input,.damage-filter select{min-width:140px}.damage-filter--grow{flex:1;min-width:200px}.damage-filter--grow input{width:100%;min-width:220px}.damage-note-cell{max-width:280px;white-space:pre-wrap;word-break:break-word}.modal textarea{width:100%;resize:vertical;min-height:72px}.tag-ok{background:#ecfdf5;color:#047857;border:1px solid #a7f3d0}.muted{color:#64748b;font-size:.9rem}.field-label{display:inline;white-space:nowrap}.field-label .req,.req{color:#dc2626;font-weight:600}.hint-line{font-size:.85rem;color:#64748b;margin:8px 0 0}.logistics-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 16px}.logistics-form-grid .span-2{grid-column:span 2}.logistics-form-grid label{display:flex;flex-direction:column;gap:4px;font-size:.9rem;color:var(--muted);font-weight:500}.logistics-form-grid label>.field-label{margin-bottom:0}.logistics-form-grid select,.logistics-form-grid input,.logistics-form-grid textarea{border:1px solid #cbd5e1;border-radius:8px}.logistics-detail-block{margin:12px 0 16px;padding:12px 14px;background:#f8fafc;border-radius:10px;border:1px solid #e2e8f0}.logistics-detail-block h4{margin:0 0 8px;font-size:.95rem}.track-entry-card{margin-bottom:16px}.track-entry-card h3{margin-top:0}.track-entry-url{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:10px}.track-entry-url code{flex:1;min-width:200px;padding:8px 10px;background:#f1f5f9;border-radius:8px;word-break:break-all;font-size:.85rem}.track-page{min-height:100vh;max-width:480px;margin:0 auto;padding:20px 16px 36px;background:linear-gradient(165deg,#0f172a,#1e3a5f 22%,#f0f4f8 22%);box-sizing:border-box}.track-header{color:#f8fafc;text-align:center;margin-bottom:18px;padding-top:4px}.track-brand{display:inline-block;padding:4px 14px;font-size:.72rem;letter-spacing:.14em;border:1px solid rgba(248,250,252,.25);border-radius:999px;margin-bottom:10px}.track-header h1{margin:0 0 8px;font-size:1.5rem;font-weight:700;letter-spacing:.02em}.track-header p{margin:0;font-size:.92rem;color:#cbd5e1}.track-page .card{border:none;border-radius:14px;box-shadow:0 8px 24px #0f172a14}.track-search{padding:18px 16px;margin-bottom:16px}.track-search-label{display:block;margin-bottom:12px}.track-search-label>span{display:block;font-size:.88rem;font-weight:600;color:#334155;margin-bottom:8px}.track-search input{width:100%;box-sizing:border-box;padding:14px 16px;border:2px solid #e2e8f0;border-radius:12px;font-size:1.1rem;letter-spacing:.06em;transition:border-color .15s,box-shadow .15s}.track-search input:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 3px #2563eb26}.track-search-btn{width:100%;margin-top:4px;padding:14px;font-size:1.05rem;font-weight:600;border-radius:12px}.track-error{color:#dc2626;font-size:.88rem;margin:12px 0 0;text-align:center}.track-empty{text-align:center;color:#64748b;padding:28px 16px;font-size:.92rem;line-height:1.55}.track-results-wrap{position:relative;margin-bottom:8px}.track-results{display:flex;flex-direction:column;gap:14px}.track-card{padding:16px;overflow:hidden}.track-card-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px;padding-bottom:10px;border-bottom:1px solid #f1f5f9}.track-card-head strong{font-size:.95rem;color:#64748b;font-weight:600}.track-card-head span{font-size:.82rem;color:#94a3b8}.track-card-sub{margin:10px 0 0;font-weight:700;font-size:1.02rem;color:#0f172a}.track-card-addr{margin:4px 0 14px;font-size:.84rem;color:#64748b;line-height:1.45}.track-logistics-panel{display:flex;flex-direction:column;gap:10px}.track-log-block{display:flex;flex-direction:column;gap:6px;padding:12px 14px;border-radius:12px;background:#f8fafc;border:1px solid #e2e8f0}.track-log-carrier{background:linear-gradient(135deg,#eff6ff,#f0fdf4);border-color:#bfdbfe}.track-log-tracking{background:#fff;border-color:#dbeafe}.track-log-label{font-size:.72rem;font-weight:600;color:#64748b;text-transform:none;letter-spacing:.04em}.track-log-value{line-height:1.35}.track-log-carrier-name{font-size:1.22rem;font-weight:800;color:#0c4a6e;letter-spacing:.02em}.track-log-no-btn,.track-log-no-text{font-size:1.08rem;font-weight:700;color:#1d4ed8;word-break:break-all}.track-log-no-btn{background:none;border:none;padding:0;text-align:left;cursor:pointer;text-decoration:underline;text-underline-offset:3px}.track-log-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.track-metric{display:flex;flex-direction:column;gap:4px;padding:10px 12px;border-radius:10px;background:#fff;border:1px solid #e2e8f0}.track-metric-label{font-size:.7rem;font-weight:600;color:#94a3b8}.track-metric-value{font-size:1.05rem;font-weight:800;color:#0f766e}.track-log-remark{background:#fffbeb;border-color:#fde68a}.track-log-remark-text{font-size:.9rem;color:#78350f;line-height:1.45}.track-hint-under-no{margin:8px 0 0;padding-top:6px;border-top:1px dashed #e2e8f0}.track-hint{font-size:.75rem;color:#94a3b8;margin:12px 0 0;line-height:1.4}.track-hint-ziti{color:#b45309}.track-more-btn{display:block;margin:10px 0 0 auto;padding:8px 14px;font-size:.82rem;font-weight:600;color:#2563eb;background:#eff6ff;border:1px solid #bfdbfe;border-radius:999px;cursor:pointer;box-shadow:0 2px 8px #2563eb1f}.track-more-btn:active{background:#dbeafe}.track-more-note{margin:8px 0 0;text-align:right;font-size:.75rem;color:#94a3b8}.track-footer{margin-top:32px;padding-top:20px;text-align:center;border-top:1px solid #e2e8f0}.track-copyright{margin:0 0 18px;font-size:.82rem;font-weight:600;color:#475569;letter-spacing:.02em}.track-footer-contact{display:flex;flex-direction:column;align-items:center;gap:10px;padding:16px;background:#fff;border-radius:14px;box-shadow:0 4px 16px #0f172a0f}.track-footer-qr{width:120px;height:120px;border-radius:10px;object-fit:cover;border:1px solid #e2e8f0}.track-footer-contact-text{margin:0;max-width:260px;font-size:.8rem;line-height:1.5;color:#64748b}.logistics-edit-hint{margin:0 0 12px;padding:10px 12px;background:#eff6ff;border:1px solid #bfdbfe;border-radius:8px;font-size:.88rem;color:#1e40af}.logistics-detail-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}.logistics-detail-head h4{margin:0}.logistics-updated-at{margin:0 0 8px;font-size:.82rem}.btn-sm{padding:4px 10px;font-size:.82rem}.track-share-card{margin-bottom:20px}.track-share-card h3{margin-top:0}.track-qr-wrap{margin-top:16px;text-align:center}.track-qr-img{border-radius:12px;border:1px solid #e2e8f0;background:#fff}.track-share-compact{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.track-share-in-detail{margin-top:12px;padding-top:12px;border-top:1px dashed #cbd5e1}.track-dl-wide{grid-column:span 2}.track-no-list{display:flex;flex-direction:column;gap:8px;width:100%}.track-no-row{display:flex;align-items:flex-start;gap:8px}.track-no-idx{flex-shrink:0;width:1.4rem;height:1.4rem;line-height:1.4rem;text-align:center;font-size:.72rem;font-weight:700;color:#fff;background:#2563eb;border-radius:50%}.track-copy-all-btn{align-self:flex-start;margin-top:2px;padding:6px 12px;font-size:.78rem;font-weight:600;color:#0f766e;background:#ecfdf5;border:1px solid #a7f3d0;border-radius:8px;cursor:pointer}.track-copy-all-btn:active{background:#d1fae5}.logistics-form-grid textarea{min-height:72px;resize:vertical;font-family:inherit}.tracking-no-list .track-no-row{margin-bottom:4px}.tracking-no-btn{background:none;border:none;padding:0;color:#2563eb;font-weight:600;cursor:pointer;text-decoration:underline;word-break:break-all;text-align:left}.tracking-no-hint{margin:6px 0 0;font-size:.78rem;color:#94a3b8;line-height:1.4}.track-batch-query-btn{width:100%;margin-bottom:4px;padding:12px 14px;font-size:.92rem;font-weight:700;color:#fff;background:linear-gradient(135deg,#2563eb,#1d4ed8);border:none;border-radius:10px;cursor:pointer;box-shadow:0 4px 12px #2563eb59}.track-batch-query-btn:active{transform:scale(.98)}.logistics-form-grid .field-hint{display:block;margin-top:6px;font-size:.78rem;color:#64748b;line-height:1.4}.history-page .history-toolbar .btn-export{background:#fff;color:#4338ca;border:1px solid #c7d2fe;box-shadow:none;text-decoration:none;display:inline-flex;align-items:center}.history-page .history-toolbar .btn-export:hover{background:#eef2ff;color:#3730a3;border-color:#a5b4fc}.history-page .tag{display:inline-block;padding:3px 10px;border-radius:6px;font-size:12px;font-weight:500;line-height:1.3}.history-page .tag-neutral{background:#f1f5f9;color:#475569;border:1px solid #e2e8f0}.history-page .tag-logistics{background:#eef2ff;color:#4338ca;border:1px solid #e0e7ff}.history-page .tag-warn{background:#fffbeb;color:#a16207;border:1px solid #fde68a}.history-page .history-actions{display:flex;flex-direction:column;gap:5px;align-items:flex-start;max-width:420px}.history-page .history-actions-row{display:flex;flex-wrap:wrap;gap:5px;align-items:center}.history-page .history-actions .btn{margin-left:0;box-shadow:none!important;font-weight:500}.history-page .history-actions .btn-secondary{background:#fff;color:#475569;border:1px solid #e2e8f0}.history-page .history-actions .btn-secondary:hover:not(:disabled){background:#f8fafc;border-color:#cbd5e1;color:#334155}.history-page .history-actions .btn-reprint{background:#4f46e5;color:#fff;border:none}.history-page .history-actions .btn-reprint:hover:not(:disabled){background:#4338ca}.history-page .history-actions .btn-revoke{background:#fff;color:#78716c;border:1px solid #e7e5e4}.history-page .history-actions .btn-revoke:hover:not(:disabled){background:#fafaf9;color:#b45309;border-color:#fde68a}.history-page .history-actions .btn-delete{background:transparent;color:#94a3b8;border:1px solid transparent}.history-page .history-actions .btn-delete:hover:not(:disabled){color:#b91c1c;background:#fef2f2;border-color:#fecaca}.history-page .history-actions .btn:disabled:not(.btn-history-edit){opacity:.5}.history-page .history-edit-wrap--disabled .btn-history-edit:disabled{opacity:1!important;color:#64748b!important;background:#f8fafc!important;border:1px dashed #cbd5e1!important;cursor:not-allowed}.history-page .history-actions .btn-history-edit:not(:disabled){color:#4338ca;background:#eef2ff;border:1px solid #c7d2fe;font-weight:600}.history-page .history-actions .btn-history-edit:not(:disabled):hover{background:#e0e7ff;border-color:#a5b4fc;color:#3730a3}.track-trace-block{margin-top:14px;padding-top:14px;border-top:1px solid #e2e8f0}.track-trace-title{margin:0 0 12px;font-size:.92rem;font-weight:700;color:#334155}.track-trace-package+.track-trace-package{margin-top:16px;padding-top:14px;border-top:1px dashed #e2e8f0}.track-trace-no-label{margin:0 0 8px;font-size:.82rem;color:#64748b}.track-trace-no-label strong{color:#1e293b;font-weight:700}.track-trace-status{display:inline-block;margin-left:8px;padding:2px 8px;font-size:.72rem;font-weight:600;color:#047857;background:#ecfdf5;border-radius:4px}.track-trace-summary{margin:0 0 8px;font-size:.85rem;color:#475569}.track-trace-take{color:#94a3b8;font-weight:400}.track-trace-latest{margin:0 0 10px;font-size:.85rem;color:#64748b}.track-trace-error{margin:0;font-size:.85rem;color:#b45309}.track-trace-hint{margin:12px 0 0;font-size:.8rem}.track-trace-timeline{list-style:none;margin:0;padding:0 0 0 8px;border-left:2px solid #e2e8f0}.track-trace-timeline li{position:relative;padding:0 0 14px 16px}.track-trace-timeline li:before{content:"";position:absolute;left:-5px;top:6px;width:8px;height:8px;border-radius:50%;background:#cbd5e1;border:2px solid #fff;box-shadow:0 0 0 1px #e2e8f0}.track-trace-timeline li.is-latest:before{background:#4f46e5;box-shadow:0 0 0 2px #e0e7ff}.track-trace-timeline li.is-latest .track-trace-desc{color:#1e293b;font-weight:600}.track-trace-timeline time{display:block;font-size:.75rem;color:#94a3b8;margin-bottom:2px}.track-trace-desc{margin:0;font-size:.88rem;color:#475569;line-height:1.45}.track-trace-area{margin:2px 0 0;font-size:.78rem;color:#94a3b8}.express3-query-stats-modal{width:min(1280px,98vw);max-width:min(1280px,98vw)}.express3-query-stats-modal .dash-detail-wrap{max-height:min(70vh,720px)}.express3-query-stats-modal .dash-query-log-table th,.express3-query-stats-modal .dash-query-log-table td{font-size:13px;white-space:normal;word-break:break-word;vertical-align:top;line-height:1.4}.express3-query-stats-modal .dash-query-log-table td:nth-child(1),.express3-query-stats-modal .dash-query-log-table th:nth-child(1){white-space:nowrap}.express3-query-stats-modal .dash-query-log-table td:nth-child(5){max-width:none;overflow:visible;text-overflow:unset;min-width:88px}.express3-query-stats-modal .dash-query-log-table td:nth-child(6){min-width:100px;font-family:ui-monospace,monospace;font-size:12px}.history-trace-modal{width:min(960px,96vw);max-width:min(960px,96vw)}.history-trace-modal .track-trace-block{margin-top:0;max-height:min(72vh,640px);overflow-y:auto;padding-right:4px}.history-trace-modal .modal h3,.history-trace-modal h3{margin-bottom:8px}.history-trace-modal .track-trace-desc,.history-trace-modal .track-trace-latest{word-break:break-word}.logistics-detail-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.logistics-detail-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.stock-in-records-modal{max-width:1100px;width:min(96vw,1100px)}.stock-in-records-table{font-size:13px}.stock-in-records-table .history-actions{max-width:160px}.stock-in-edit-panel{margin-top:20px;padding-top:16px;border-top:1px solid var(--border)}.stock-in-edit-panel h4{margin:0 0 8px;font-size:1rem}.data tr.row-revoked td{color:#94a3b8}.tag-partial{display:inline-block;padding:2px 8px;border-radius:4px;font-size:12px;background:#fff7ed;color:#c2410c}.tag-muted{display:inline-block;padding:2px 8px;border-radius:4px;font-size:12px;background:#f1f5f9;color:#64748b}.stock-state-sub{display:block;font-size:11px;margin-top:2px}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:var(--bg, #f1f5f9)}.auth-card{width:100%;max-width:400px;display:flex;flex-direction:column;gap:12px}.auth-card label{display:flex;flex-direction:column;gap:6px;font-size:14px}.sidebar-user{margin-top:auto;padding:16px 12px 0;border-top:1px solid rgba(255,255,255,.12);display:flex;flex-direction:column;gap:8px}.sidebar-user-name{font-size:13px;color:#ffffffd9}.btn-sm{padding:6px 12px;font-size:12px}.perm-matrix-scroll{max-height:50vh;overflow:auto;margin:12px 0;border:1px solid var(--border, #e5e7eb);border-radius:8px;padding:12px}.perm-group{margin-bottom:14px}.perm-group-title{font-weight:700;margin-bottom:8px;font-size:13px}.perm-group-items{display:flex;flex-wrap:wrap;gap:8px 16px}.perm-check{font-size:12px;display:inline-flex;align-items:center;gap:6px}.perm-matrix-wh{display:flex;flex-wrap:wrap;gap:8px 16px;margin-bottom:12px}.auth-reset-link-box{margin-top:12px;padding:12px;background:#f0f9ff;border-radius:8px}.auth-reset-link{font-weight:600;color:#0369a1;word-break:break-all}.nav-group{margin:0 0 4px}.nav-group-head{cursor:pointer;margin-bottom:2px}.nav-group-head .nav-drag-handle{cursor:grab}.nav-group-head .nav-drag-handle:active{cursor:grabbing}.nav-group-label{flex:1}.nav-group-chevron{flex-shrink:0;font-size:11px;opacity:.65;margin-left:4px}.nav-group-children{display:flex;flex-direction:column;gap:2px;padding:0;margin:0}.nav-sublink{padding:10px 14px!important;font-size:13px;font-weight:400;color:#94a3b8;display:flex!important;align-items:center;gap:10px}.nav-sublink:hover{color:#cbd5e1}.nav-sublink.active{color:#f1f5f9}.nav-sublink-icon-slot{width:22px;height:22px;flex-shrink:0}.nav-sublink-label{flex:1}.nav-sublink .nav-drag-handle{margin-right:0;flex-shrink:0;opacity:.45}.nav-sublink:hover .nav-drag-handle{opacity:.75}.auth-admin-split{display:grid;grid-template-columns:minmax(220px,280px) minmax(0,1fr);gap:20px;align-items:start;margin-top:8px}@media (max-width: 960px){.auth-admin-split{grid-template-columns:1fr}}.auth-role-sidebar{background:#fff;border:1px solid var(--border, #e2e8f0);border-radius:12px;padding:12px;box-shadow:0 1px 3px #0f172a0f;max-height:calc(100vh - 180px);overflow:auto;position:sticky;top:16px}.auth-role-sidebar-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px;padding-bottom:10px;border-bottom:1px solid var(--border, #e2e8f0)}.auth-role-sidebar-title{font-weight:700;font-size:14px;color:#0f172a}.auth-role-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.auth-role-list-item{width:100%;text-align:left;border:1px solid transparent;background:#f8fafc;border-radius:10px;padding:10px 12px;cursor:pointer;transition:border-color .15s,background .15s,box-shadow .15s}.auth-role-list-item:hover{background:#f1f5f9;border-color:#cbd5e1}.auth-role-list-item.active{background:#eff6ff;border-color:#3b82f6;box-shadow:0 0 0 1px #3b82f640}.auth-role-list-name{display:block;font-weight:600;font-size:14px;color:#0f172a}.auth-role-list-meta{display:block;margin-top:4px;font-size:12px;color:#64748b}.auth-role-editor{min-width:0;display:flex;flex-direction:column;gap:16px}.auth-role-empty{padding:48px 24px;text-align:center;background:#f8fafc;border-radius:12px;border:1px dashed #cbd5e1}.card-panel{background:#fff;border:1px solid var(--border, #e2e8f0);border-radius:12px;padding:16px 18px;box-shadow:0 1px 3px #0f172a0d}.auth-role-meta-title{margin:0 0 14px;font-size:15px;font-weight:700;color:#0f172a}.auth-role-meta-body{display:flex;flex-direction:column;gap:14px;width:100%}.auth-role-meta-row2{display:grid;grid-template-columns:1fr 1fr;gap:14px 16px;width:100%}@media (max-width: 720px){.auth-role-meta-row2{grid-template-columns:1fr}}.auth-role-meta .auth-field{display:flex;flex-direction:column;gap:6px;margin:0;min-width:0}.auth-field-label{font-size:13px;font-weight:600;color:#334155}.auth-field input,.auth-field select{width:100%;max-width:100%;box-sizing:border-box;border:1px solid #cbd5e1;border-radius:8px;background:#fff;margin:0}.auth-role-meta-foot{display:flex;flex-wrap:wrap;align-items:center;gap:12px 24px;padding-top:14px;border-top:1px solid #e2e8f0;width:100%}.auth-inherit-row{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:#475569;white-space:nowrap}.auth-inherit-row input[type=checkbox]{width:16px;height:16px;margin:0;flex-shrink:0}.auth-inherit-row label{margin:0;font-size:13px;font-weight:500;color:#475569;cursor:pointer;white-space:normal}.auth-copy-row{display:inline-flex;flex-wrap:wrap;align-items:center;gap:8px 10px}.auth-copy-label{font-size:13px;color:#64748b;white-space:nowrap}.auth-copy-row select{min-width:180px;border-radius:8px;border:1px solid #cbd5e1}.auth-role-actions{display:flex;gap:10px;flex-wrap:wrap;padding-bottom:24px}.auth-users-page .toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.auth-users-page .toolbar .btn{display:inline-flex;align-items:center;justify-content:center;margin:0;min-height:42px;box-sizing:border-box}.auth-users-page .table-wrap{overflow-x:auto}.auth-perm-matrix-title{margin:0 0 6px;font-size:16px;font-weight:700;color:#0f172a}.auth-perm-matrix-hint{margin:0 0 12px}.auth-perm-matrix-wrap{overflow-x:auto;border:1px solid #e2e8f0;border-radius:10px}.auth-perm-matrix{width:100%;min-width:640px;margin:0;border-collapse:collapse}.auth-perm-matrix thead th{background:#f1f5f9;font-size:13px;font-weight:700;color:#334155;padding:10px 14px;text-align:left;border-bottom:1px solid #e2e8f0}.auth-perm-matrix tbody tr{border-bottom:1px solid #e2e8f0}.auth-perm-matrix tbody tr:last-child{border-bottom:none}.auth-perm-matrix tbody tr:hover{background:#fafafa}.auth-perm-section-row td{background:#f1f5f9;color:#334155;font-size:13px;font-weight:700;padding:10px 14px;letter-spacing:.02em}.auth-perm-section-row:hover td{background:#f1f5f9}.auth-perm-col-module{width:140px;min-width:120px;max-width:160px;vertical-align:top;padding:12px 14px!important;background:#f8fafc;font-weight:600;color:#0f172a}.auth-perm-module-name{font-size:14px;line-height:1.4}.auth-perm-module-meta{font-size:12px;color:#64748b;margin-top:4px;font-weight:500}.auth-perm-module-all{font-size:12px;margin-top:6px;display:inline-block}.auth-perm-checks{display:flex;flex-wrap:wrap;gap:10px 20px;padding:12px 14px;align-items:center}.auth-perm-check{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:#334155;cursor:pointer;white-space:nowrap}.auth-perm-check input{width:16px;height:16px;margin:0;flex-shrink:0}.auth-super-hint{margin:8px 0 12px;padding:10px 12px;background:#eff6ff;border-radius:8px;border:1px solid #bfdbfe}.page-smtp-settings .span-2{grid-column:1 / -1}.page-smtp-settings code{font-size:.88em;background:#f1f5f9;padding:2px 6px;border-radius:4px}.alert-warn{background:#fffbeb;border:1px solid #fcd34d;color:#92400e;padding:12px 16px;border-radius:10px;margin-bottom:16px}.page-wechat-oa-settings .wechat-push-card{background:var(--bg-muted, #f8faf9);margin-top:0}.page-wechat-oa-settings .input-with-action{display:flex;gap:8px;align-items:stretch;margin-bottom:12px}.page-wechat-oa-settings .input-with-action input{flex:1;min-width:0;margin-bottom:0}.page-wechat-oa-settings .input-with-action .btn{flex-shrink:0;white-space:nowrap}.page-wechat-oa-settings .input-with-action input.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:13px}
