:root{--bg:#f3f5f7;--panel:#fff;--panel-soft:#f8fafc;--line:#d9e0e7;--line-strong:#cbd5e1;--text:#172033;--muted:#64748b;--blue:#2563eb;--blue-soft:#eef4ff;--green:#0f8f62;--green-soft:#eaf8f1;--amber:#b7791f;--amber-soft:#fff6df;--red:#dc2626;--red-soft:#fff1f2;--shadow:0 18px 60px #0f172a1f}*{box-sizing:border-box}html,body,#app{width:100%;min-width:0;max-width:100%;min-height:100%}html{background:var(--bg);overscroll-behavior-x:none}html,body{overflow-x:hidden}body{background:var(--bg);width:100%;max-width:100%;min-height:100dvh;color:var(--text);-webkit-text-size-adjust:100%;overscroll-behavior-x:none;margin:0;font-family:Microsoft YaHei,PingFang SC,Arial,sans-serif;position:relative}#app{overflow-x:clip}@supports not (overflow:clip){#app{overflow-x:hidden}}button,input,select,textarea{font:inherit;touch-action:manipulation}button{cursor:pointer}button:disabled,input:disabled,select:disabled,textarea:disabled{cursor:not-allowed;opacity:.62}.app-shell{flex-direction:column;width:100%;max-width:100%;min-height:100dvh;display:flex;overflow-x:clip}.app-header{z-index:20;min-height:calc(68px + env(safe-area-inset-top));padding:env(safe-area-inset-top) max(22px, env(safe-area-inset-right)) 0 max(22px, env(safe-area-inset-left));border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#fffffff5;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:16px;display:grid;position:sticky;top:0}.brand,.login-title{align-items:center;gap:12px;min-width:0;display:flex}.brand>div,.login-title>div{min-width:0}.brand strong{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.brand small,.login-title p,.page-heading p{color:var(--muted);margin:4px 0 0;font-size:13px;display:block}.brand-mark{color:#fff;background:#111827;border-radius:8px;flex:0 0 42px;justify-content:center;align-items:center;width:42px;height:42px;font-weight:800;display:inline-flex}.desktop-main-menu{justify-content:center;align-items:center;gap:2px;min-width:0;display:flex;overflow:hidden}.nav-link,.admin-menu-button,.mobile-tabbar button,.mobile-more-grid button{min-width:0;color:var(--text);background:0 0;border:0;justify-content:center;align-items:center;gap:6px;text-decoration:none;display:inline-flex}.nav-link{color:#334155;white-space:nowrap;border-bottom:2px solid #0000;height:68px;padding:0 12px}.nav-link.active{border-bottom-color:var(--blue);color:var(--blue);font-weight:700}.nav-icon{color:#334155;background:#edf2f7;border-radius:6px;flex:0 0 20px;justify-content:center;align-items:center;width:20px;height:20px;font-size:12px;font-weight:800;display:inline-flex}.nav-icon svg{display:block}.active .nav-icon{background:var(--blue-soft);color:var(--blue)}.header-admin{justify-content:flex-end;min-width:0;display:flex;position:relative}.admin-menu{z-index:35;border:1px solid var(--line);width:168px;box-shadow:var(--shadow);background:#fff;border-radius:8px;gap:8px;padding:8px;display:grid;position:absolute;top:calc(100% + 8px);right:0}.admin-menu button{justify-content:flex-start;width:100%;min-height:42px;padding:0 12px}.content{min-width:0;padding:28px max(28px, env(safe-area-inset-right)) 28px max(28px, env(safe-area-inset-left));flex:1}.mobile-tabbar{display:none}.login-page{min-height:100dvh;padding:max(24px, env(safe-area-inset-top)) max(24px, env(safe-area-inset-right)) max(24px, env(safe-area-inset-bottom)) max(24px, env(safe-area-inset-left));background:#eef2f7;place-items:center;display:grid}@supports (-webkit-touch-callout:none){html,body,#app,.app-shell,.login-page{min-height:-webkit-fill-available}}.login-panel{border:1px solid var(--line);background:var(--panel);width:min(420px,100%);box-shadow:var(--shadow);border-radius:8px;padding:30px}.login-title{margin-bottom:26px}.login-title h1,.page-heading h1{letter-spacing:0;margin:0;font-size:24px}.page{flex-direction:column;gap:18px;min-width:0;display:flex}.scan-flow-page{gap:14px}.page-heading,.toolbar,.heading-actions{align-items:center;gap:12px;min-width:0;display:flex}.page-heading{justify-content:space-between}.toolbar{flex-wrap:wrap}.toolbar .input-control{max-width:360px}.heading-actions .input-control{width:132px}.surface,.scanner-panel{border:1px solid var(--line);background:var(--panel);border-radius:8px;min-width:0;padding:18px}.surface h2{margin:0 0 14px;font-size:17px}.compact-heading{margin-bottom:16px}.compact-heading h2{margin:0;font-size:20px}.metric-grid{grid-template-columns:repeat(5,minmax(140px,1fr));gap:12px;display:grid}.metric-card{border:1px solid var(--line);background:var(--panel);border-radius:8px;min-width:0;padding:24px}.metric-card span{color:var(--muted);font-size:13px}.metric-card strong{letter-spacing:0;margin-top:8px;font-size:30px;display:block}.split-grid,.barcode-layout{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;display:grid}.detail-page-grid{grid-template-columns:minmax(0,2fr) minmax(260px,1fr) minmax(260px,1fr);gap:16px;display:grid}.button{border:1px solid var(--line-strong);min-height:40px;color:var(--text);white-space:nowrap;background:#fff;border-radius:8px;justify-content:center;align-items:center;gap:6px;padding:0 14px;display:inline-flex}.button.primary{border-color:var(--blue);background:var(--blue);color:#fff}.button.success{border-color:var(--green);background:var(--green);color:#fff}.button.warning{border-color:var(--amber);background:var(--amber);color:#fff}.button.danger{border-color:var(--red);background:var(--red);color:#fff}.button.ghost{background:#fff}.button.inverse{color:#fff;background:#0f172a73;border-color:#ffffff59}.button.small{min-height:32px;padding:0 10px;font-size:13px}.icon-button{border:1px solid var(--line);width:36px;height:36px;color:var(--text);background:#fff;border-radius:8px;flex:0 0 36px;justify-content:center;align-items:center;display:inline-flex}.full-button,.full-width{width:100%}.field{flex-direction:column;gap:7px;min-width:0;margin:0 0 16px;display:flex}.field label,.field-label{color:#334155;font-size:14px;font-weight:700}.input-control{border:1px solid var(--line-strong);width:100%;min-height:40px;color:var(--text);background:#fff;border-radius:8px;padding:8px 11px}textarea.input-control{resize:vertical;min-height:88px}.input-group{grid-template-columns:minmax(0,1fr) auto;gap:8px;display:grid}.segmented{border:1px solid var(--line);background:var(--panel-soft);border-radius:8px;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;padding:4px;display:grid}.segmented button{min-height:34px;color:var(--muted);background:0 0;border:0;border-radius:7px}.segmented button.active{color:var(--blue);background:#fff;font-weight:700;box-shadow:0 2px 10px #2563eb1f}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 14px;display:grid}.form-grid-wide{grid-column:1/-1}.quick-buttons,.submit-row,.mobile-actions,.upload-row,.chip-row{flex-wrap:wrap;gap:8px;display:flex}.submit-row{justify-content:flex-end;margin-top:12px}.file-field{gap:7px;display:grid}.file-field input{max-width:100%}.file-name{color:var(--muted);overflow-wrap:anywhere;font-size:12px}.scanner-video-wrap{background:#111827;border-radius:8px;position:relative;overflow:hidden}.scan-stage{gap:12px;display:grid}.scan-video-full{min-height:min(640px,100dvh - 260px)}.scanner-panel video{object-fit:cover;width:100%;min-height:360px;display:block}.scan-video-full video{height:min(640px,100dvh - 260px);min-height:min(640px,100dvh - 260px)}.scanner-frame{pointer-events:none;border:2px solid #ffffffe0;border-radius:8px;width:min(78%,520px);height:min(34%,180px);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 999px #0f172a38}.scanner-frame:before{content:"";background:#2563ebeb;height:2px;position:absolute;top:50%;left:12px;right:12px;transform:translateY(-50%)}.scanner-status{flex-wrap:wrap;align-items:center;gap:8px;margin-top:10px;display:flex}.scanner-hint{color:var(--muted);font-size:13px}.scan-bottom-actions{gap:10px;display:grid}.waiting-panel{text-align:center;align-content:center;place-items:center;gap:10px;min-height:220px;display:grid}.waiting-panel strong{font-size:22px}.waiting-panel span,.empty-text{color:var(--muted)}.stock-focus-panel{gap:16px;display:grid}.quantity-editor{gap:12px;display:grid}.quantity-input{text-align:center;min-height:58px;font-size:26px;font-weight:800}.tag{border:1px solid var(--line);background:var(--panel-soft);color:#334155;white-space:nowrap;border-radius:999px;align-items:center;min-height:26px;padding:2px 9px;font-size:13px;display:inline-flex}.tag.success{background:var(--green-soft);color:var(--green);border-color:#b8ead2}.tag.warning{background:var(--amber-soft);color:var(--amber);border-color:#f5da96}.tag.danger{background:var(--red-soft);color:var(--red);border-color:#fecdd3}.chip{border:1px solid var(--line);background:var(--blue-soft);color:var(--blue);border-radius:999px;align-items:center;gap:6px;padding:4px 8px;font-size:13px;display:inline-flex}.chip button{width:18px;height:18px;color:var(--blue);background:#fff;border:0;border-radius:50%}.check-line{color:#334155;align-items:center;gap:7px;display:inline-flex}.check-line input{width:16px;height:16px}.table-scroll{-webkit-overflow-scrolling:touch;width:100%;overflow-x:auto}.data-table{border-collapse:collapse;width:100%;min-width:760px}.data-table th,.data-table td{border-bottom:1px solid var(--line);text-align:left;vertical-align:middle;white-space:nowrap;padding:12px 10px}.data-table th{color:var(--muted);font-size:13px;font-weight:700}.data-table td.wrap{white-space:normal;overflow-wrap:anywhere;max-width:260px}.table-empty{color:var(--muted);text-align:center;padding:20px 0}.thumb,.mobile-thumb{object-fit:cover;background:#edf2f7;border-radius:6px;display:block}.thumb{width:52px;height:52px}.image-button{background:0 0;border:0;padding:0;display:inline-flex}.table-actions{flex-wrap:wrap;gap:6px;display:flex}.mobile-list{display:none}.mobile-card{border:1px solid var(--line);background:#fff;border-radius:8px;grid-template-columns:88px minmax(0,1fr);gap:12px;min-width:0;padding:12px;display:grid}.mobile-thumb{width:88px;height:88px}.mobile-card-body{flex-direction:column;gap:8px;min-width:0;display:flex}.mobile-card-body span{color:var(--muted);overflow-wrap:anywhere;font-size:13px}.log-mobile-card{grid-template-columns:1fr}.detail-section{flex-direction:column;gap:12px;margin-bottom:20px;display:flex}.detail-section h2{letter-spacing:0;margin:0;font-size:17px}.detail-list{border:1px solid var(--line);border-radius:8px;grid-template-columns:96px minmax(0,1fr);display:grid;overflow:hidden}.detail-list dt,.detail-list dd{border-bottom:1px solid var(--line);margin:0;padding:10px}.detail-list dt{background:var(--panel-soft);color:var(--muted)}.detail-list dd{overflow-wrap:anywhere}.detail-list dt:last-of-type,.detail-list dd:last-of-type{border-bottom:0}.mini-list{gap:8px;display:grid}.mini-row{border:1px solid var(--line);border-radius:8px;justify-content:space-between;align-items:center;gap:10px;min-width:0;padding:10px 12px;display:flex}.mini-row span{overflow-wrap:anywhere;min-width:0}.mini-row strong{color:var(--text);text-align:right;font-size:13px}.detail-image-grid,.code-preview-grid{gap:12px;display:grid}.detail-image-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.code-preview-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.detail-image-grid button,.code-preview-grid button{border:1px solid var(--line);min-width:0;color:var(--text);background:#fff;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:8px;display:flex}.detail-image-grid img{aspect-ratio:1;object-fit:cover;background:#edf2f7;border-radius:6px;width:100%}.code-preview-grid button{min-height:160px;padding:12px}.code-preview-grid img{object-fit:contain;max-width:100%;max-height:116px}.detail-image-grid span,.code-preview-grid span{max-width:100%;color:var(--muted);overflow-wrap:anywhere;font-size:12px}.pagination-bar{flex-wrap:wrap;align-items:center;gap:8px;margin-top:16px;display:flex}.page-button{border:1px solid var(--line);min-width:36px;height:36px;color:var(--text);background:#fff;border-radius:8px}.page-button.active{border-color:var(--blue);background:var(--blue);color:#fff}.pagination-total{color:var(--muted);font-size:13px}.modal-mask{z-index:80;background:#0f172a6b;justify-content:flex-end;display:flex;position:fixed;inset:0}.modal-panel{width:min(var(--panel-width), 100%);max-height:100%;box-shadow:var(--shadow);background:#fff;flex-direction:column;display:flex}.modal-dialog{width:min(var(--panel-width), calc(100% - 28px));border-radius:8px;max-height:calc(100dvh - 28px);margin:auto}.modal-sheet{width:100%;max-height:78vh;max-height:min(78vh, calc(100dvh - env(safe-area-inset-top) - 10px));padding-bottom:env(safe-area-inset-bottom);border-radius:12px 12px 0 0;align-self:flex-end}.modal-header,.modal-footer{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;display:flex}.modal-header h2{margin:0;font-size:18px}.modal-body{min-height:0;padding:16px;overflow:auto}.modal-footer{border-top:1px solid var(--line);border-bottom:0;justify-content:flex-end}.mobile-more-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}.mobile-more-grid button{border:1px solid var(--line);background:#fff;border-radius:8px;flex-direction:column;gap:6px;min-height:74px}.toast-stack{top:max(18px, env(safe-area-inset-top));right:max(18px, env(safe-area-inset-right));z-index:120;gap:10px;width:min(360px,100vw - 28px);display:grid;position:fixed}.toast{border:1px solid var(--line);box-shadow:var(--shadow);color:var(--text);background:#fff;border-left-width:4px;border-radius:8px;padding:12px 14px;transition:opacity .18s,transform .18s}.toast.leaving{opacity:0;transform:translateY(-4px)}.toast-success{border-left-color:var(--green)}.toast-error{border-left-color:var(--red)}.toast-warning{border-left-color:var(--amber)}.toast-info{border-left-color:var(--blue)}.image-preview-mask{z-index:100;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);background:#030712eb;grid-template-rows:auto minmax(0,1fr);display:grid;position:fixed;inset:0}.image-preview-toolbar{color:#fff;justify-content:center;align-items:center;gap:8px;padding:12px;display:flex}.image-preview-stage{place-items:center;min-width:0;min-height:0;padding:20px;display:grid;overflow:auto}.image-preview-stage img{transform-origin:50%;max-width:92vw;max-height:82dvh}.preview-nav{z-index:101;color:#fff;background:#ffffff2e;border:0;border-radius:8px;width:42px;height:54px;font-size:34px;position:fixed;top:50%}.preview-prev{left:max(12px, env(safe-area-inset-left))}.preview-next{right:max(12px, env(safe-area-inset-right))}.qr-page{align-items:center}.qr-page .page-heading{width:100%}.qr-empty{text-align:center;align-content:center;place-items:center;gap:18px;width:min(420px,100%);min-height:360px;display:grid}.qr-empty h1{margin:0;font-size:28px}.qr-sheet{color:#111827;page-break-after:always;background:#fff;grid-template-columns:repeat(6,1fr);gap:4mm;width:210mm;min-height:297mm;padding:10mm;display:grid}.qr-cell{break-inside:avoid;flex-direction:column;justify-content:center;align-items:center;gap:2mm;min-width:0;display:flex}.qr-cell img{width:26mm;height:26mm}.qr-cell strong,.qr-cell span{text-align:center;overflow-wrap:anywhere;width:100%;line-height:1.2}.qr-cell strong{font-size:7px;font-weight:700}.qr-cell span{color:var(--muted);font-size:6px}@media (width<=980px){html,body{touch-action:pan-y}.app-shell,.content{overflow-x:clip}.app-header{min-height:calc(58px + env(safe-area-inset-top));padding:env(safe-area-inset-top) max(14px, env(safe-area-inset-right)) 0 max(14px, env(safe-area-inset-left));grid-template-columns:minmax(0,1fr) auto;gap:10px}.desktop-main-menu{display:none}.brand{overflow:hidden}.mobile-tabbar{z-index:30;width:100%;max-width:100vw;min-height:calc(66px + env(safe-area-inset-bottom));padding:6px max(8px, env(safe-area-inset-left)) max(6px, env(safe-area-inset-bottom)) max(8px, env(safe-area-inset-right));border-top:1px solid var(--line);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#fffffffa;grid-template-columns:repeat(5,minmax(0,1fr));display:grid;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -8px 24px #0f172a14}.mobile-tabbar button{color:var(--muted);border-radius:8px;flex-direction:column;gap:3px;font-size:12px}.mobile-tabbar button.active{background:var(--blue-soft);color:var(--blue);font-weight:700}.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.split-grid,.barcode-layout,.detail-page-grid{grid-template-columns:1fr}}@media (width<=760px){input,select,textarea{font-size:16px}.app-header{min-height:calc(54px + env(safe-area-inset-top));padding:env(safe-area-inset-top) max(10px, env(safe-area-inset-right)) 0 max(10px, env(safe-area-inset-left))}.content{padding:14px max(12px, env(safe-area-inset-right)) calc(88px + env(safe-area-inset-bottom)) max(12px, env(safe-area-inset-left))}.brand{gap:8px}.brand-mark{flex-basis:34px;width:34px;height:34px}.brand strong{font-size:14px}.brand small{display:none}.page-heading{flex-direction:column;align-items:flex-start}.heading-actions,.toolbar,.heading-actions .button,.toolbar .button,.toolbar .input-control{width:100%}.metric-grid,.form-grid{grid-template-columns:1fr}.metric-card{padding:20px}.desktop-table{display:none}.mobile-list{gap:12px;display:grid}.form-grid-wide{grid-column:auto}.submit-row{flex-direction:column}.submit-row .button{width:100%}.scanner-panel video{min-height:260px}.scan-video-full,.scan-video-full video{height:calc(100dvh - 230px - env(safe-area-inset-bottom));min-height:320px}.mobile-more-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.detail-image-grid,.code-preview-grid{grid-template-columns:1fr}.modal-mask{justify-content:center}.modal-drawer,.modal-dialog{border-radius:12px 12px 0 0;align-self:flex-end;width:100%;max-height:92dvh}.toast-stack{top:10px;right:10px}}@media (width<=420px){.app-header{padding:env(safe-area-inset-top) max(8px, env(safe-area-inset-right)) 0 max(8px, env(safe-area-inset-left));gap:6px}.admin-entry-text{display:none}.admin-menu-button{width:40px;padding:0}.mobile-more-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media print{body{background:#fff}.no-print,.app-header,.mobile-tabbar,.toast-stack{display:none!important}.app-shell,.content,.page,.qr-page{background:#fff;min-height:auto;margin:0;padding:0;display:block}.qr-sheet{width:210mm;height:297mm;box-shadow:none;padding:10mm}}
