:root{--blue:#285ee8;--blue-light:#eef3ff;--ink:#202c43;--muted:#8691a3;--line:#e9edf3;--background:#f5f7fb;--green:#199774;--red:#d45151;--shadow:0 8px 30px #2537590a}*{box-sizing:border-box}body{margin:0;font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI","Microsoft YaHei",sans-serif;color:var(--ink);font-size:14px;line-height:1.6;background:var(--background)}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:wait;opacity:.5}button:focus-visible,a:focus-visible{outline:3px solid #a9bfff;outline-offset:3px}a{color:var(--blue);text-decoration:none}button{border:0}input,select,textarea{border:1px solid #dfe5ee;border-radius:8px;padding:10px 12px;background:white;color:var(--ink);outline:none;min-width:0}input:focus,select:focus,textarea:focus{border-color:#7a9df5;box-shadow:0 0 0 3px #285ee80b}textarea{resize:vertical;min-height:100px}input[type=checkbox]{accent-color:var(--blue);width:16px;height:16px;cursor:pointer}label{display:block;color:#526078;font-size:13px}label input:not([type=checkbox]),label select,label textarea{display:block;width:100%;margin-top:8px}h1,h2,h3,p{margin:0}h1{font-size:27px;letter-spacing:-.8px;font-weight:650}h2{font-size:18px;font-weight:650}h3{font-size:15px;font-weight:600}small{font-size:12px}svg{vertical-align:middle}.muted{color:var(--muted)}.small{font-size:12px}.brand-symbol{display:grid;place-items:center;background:var(--blue);color:white;width:40px;height:40px;border-radius:11px;font-size:30px;line-height:1}.boot{display:grid;place-content:center;text-align:center;height:100vh;gap:16px}.boot .brand-symbol{margin:auto}.sidebar{position:fixed;left:0;top:0;bottom:0;width:232px;background:white;border-right:1px solid var(--line);padding:32px 18px 0;display:flex;flex-direction:column;z-index:10}.brand{display:flex;gap:12px;align-items:center;color:var(--ink);padding:0 10px;font-size:18px;font-weight:650}.brand small{display:block;font-size:8px;letter-spacing:1.6px;color:#97a1b1;font-weight:500;margin-top:2px}.sidebar-label{font-size:11px;color:#a3adbb;letter-spacing:1px;margin:42px 16px 14px}.nav-item{display:flex;align-items:center;gap:13px;padding:13px 16px;border-radius:9px;margin:5px 0;color:#69778c}.nav-item.active{color:var(--blue);background:var(--blue-light);font-weight:600}.nav-item:hover{background:#f5f7fb}.nav-item.active:after{content:"";width:5px;height:5px;background:var(--blue);border-radius:50%;margin-left:auto}.sidebar-note{margin:auto 6px 32px;border:1px solid var(--line);border-radius:11px;padding:18px 14px;font-size:11px;color:#5a6b81}.sidebar-note p{color:#9aa5b5;font-size:11px;line-height:1.9;margin-top:8px}.status-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--green);margin-right:7px}.sidebar-bottom{display:flex;align-items:center;gap:10px;padding:22px 6px;border-top:1px solid var(--line)}.admin-avatar{display:grid;place-items:center;width:35px;height:35px;background:#eaf0fd;color:#3566dc;border-radius:10px}.sidebar-bottom b{font-size:12px}.sidebar-bottom small{display:block;color:var(--muted);font-size:10px}.icon-button{background:transparent;color:#8691a3;padding:6px;border-radius:5px}.sidebar-bottom .icon-button{margin-left:auto;font-size:20px}.workspace{margin-left:232px;min-height:100vh;display:flex;flex-direction:column}.topbar{height:76px;display:flex;align-items:center;justify-content:space-between;padding:0 38px;background:#ffffffd9;border-bottom:1px solid var(--line);font-size:12px}.topbar b{font-weight:500}.slash{margin:0 14px;color:#c6cedb}.topbar-right{display:flex;align-items:center;gap:18px}.header-divider{height:15px;width:1px;background:var(--line)}.environment{font-size:11px;color:#977448;background:#fff5e7;border-radius:5px;padding:3px 9px}main{padding:34px 38px;flex:1;max-width:1680px;width:100%;margin:0 auto}.app-footer{padding:20px 38px;color:#a5adbb;font-size:11px;display:flex;justify-content:space-between}.page-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:28px;gap:20px}.page-heading p{color:var(--muted);font-size:13px;margin-top:7px}.eyebrow{font-size:10px;letter-spacing:2px;color:#93a1b5;margin-bottom:6px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:8px;min-height:39px;padding:9px 17px;font-size:12px;font-weight:500;white-space:nowrap;background:white;color:#53627b;border:1px solid #e1e6ee}.btn:hover{border-color:#9bb4ed;color:var(--blue)}.btn.primary{color:white;background:var(--blue);border-color:var(--blue);box-shadow:0 3px 6px #285ee81a}.btn.primary:hover{background:#194ed0}.btn.danger{color:var(--red);border-color:#edcccc}.btn.ghost{background:transparent;border:0;padding-left:0}.btn.small{padding:5px 10px;min-height:30px;font-size:11px}.button-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-bottom:26px}.stat{background:white;border:1px solid var(--line);border-radius:12px;padding:21px 22px;box-shadow:var(--shadow);display:flex;align-items:flex-start;justify-content:space-between}.stat-label{font-size:12px;color:#8390a3}.stat-value{font-size:29px;line-height:1.3;margin:11px 0 8px;font-weight:650;letter-spacing:-1px}.stat-sub{font-size:10px;color:#a1abba}.stat-icon{width:38px;height:38px;display:grid;place-items:center;border-radius:10px;background:#eef3ff;color:#6284e7}.stat:nth-child(2) .stat-icon{background:#edf7f3;color:#55a88c}.stat:nth-child(3) .stat-icon{background:#f5f1fe;color:#9b82c9}.stat:nth-child(4) .stat-icon{background:#fff6e9;color:#c6a168}.panel{background:white;border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);overflow:hidden}.panel-top{padding:23px 25px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);gap:16px}.panel-top h2{font-size:15px}.panel-top small{color:var(--muted);font-weight:400;margin-left:10px}.filters{display:flex;align-items:center;gap:12px;padding:21px 25px;flex-wrap:wrap}.search{position:relative;flex:1;max-width:350px;min-width:180px}.search input{width:100%;padding-left:36px;font-size:12px;height:38px}.search svg{position:absolute;left:12px;top:11px;color:#99a5b7}.filters select{font-size:12px;min-width:150px;height:38px;padding:7px 10px}.filter-reset{font-size:12px;color:#8390a3;background:none;padding:6px 8px}.filter-tail{margin-left:auto;font-size:11px;color:#9aa4b4}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;white-space:nowrap}th{background:#f8f9fc;color:#8b96a7;font-size:11px;font-weight:500;text-align:left;padding:13px 18px;border-top:1px solid #f0f2f6;border-bottom:1px solid var(--line)}td{padding:18px;font-size:12px;border-bottom:1px solid #f0f2f6;vertical-align:middle}th:first-child,td:first-child{padding-left:25px}th:last-child,td:last-child{padding-right:25px}tbody tr:hover{background:#fbfcff}.product-cell{display:flex;align-items:center;gap:12px}.product-thumb{width:42px;height:42px;display:grid;place-items:center;border:1px solid #e5ecf8;background:#f3f6fc;color:#7e9acb;border-radius:9px}.product-name{font-weight:550;color:#32415a;max-width:250px;overflow:hidden;text-overflow:ellipsis}.product-code{font-size:10px;color:#9ba6b7;margin-top:4px;max-width:210px;overflow:hidden;text-overflow:ellipsis}.model{font-size:12px;color:#66758b}.subline{font-size:10px;color:#9ca7b7;margin-top:4px;max-width:200px;overflow:hidden;text-overflow:ellipsis}.tags{display:flex;flex-wrap:wrap;gap:4px;max-width:240px}.tag{display:inline-block;padding:3px 7px;border-radius:4px;background:#f0f4fc;color:#7790ba;font-size:10px;line-height:1.5}.tag.green{color:#399779;background:#edf7f2}.tag.amber{color:#b58b4a;background:#fff7e9}.tag.gray{color:#929aaa;background:#f1f3f7}.row-actions{display:flex;align-items:center;gap:13px}.link-button{color:var(--blue);border:0;background:none;font-size:12px;padding:3px 0}.link-button.danger{color:#cc8585}.row-actions .sep{height:12px;width:1px;background:#e7ebf2}.pagination{padding:18px 25px;display:flex;align-items:center;justify-content:space-between;font-size:11px;color:#99a4b5}.page-controls{display:flex;gap:7px;align-items:center}.page-number{width:29px;height:29px;border-radius:6px;background:var(--blue);color:white;display:grid;place-items:center}.pager{height:29px;border:1px solid var(--line);border-radius:6px;background:white;color:#75839b;padding:0 10px}.tips{display:flex;align-items:flex-start;gap:10px;padding:18px 22px;border-radius:9px;border:1px solid #e5ebf7;background:#f0f4fd;color:#7890b5;font-size:11px;margin-top:22px}.tips svg{flex-shrink:0;margin-top:1px}.empty{padding:62px 20px;text-align:center}.empty svg{color:#a4b9df;margin-bottom:16px}.empty h3{font-size:16px;margin-bottom:6px}.empty p{color:#9aa6b7;font-size:12px;margin-bottom:20px}.loading{padding:80px;text-align:center;color:#8794a7}.error-panel{background:#fff1ee;border:1px solid #f1d9d3;border-radius:10px;padding:24px;color:#a66252}.error-panel button{margin-top:16px}.batch-bar{display:flex;align-items:center;gap:14px;padding:13px 25px;background:#f0f4ff;border-bottom:1px solid #e3eafd;font-size:12px;color:#5276c5}.dept-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.dept-card{background:white;border:1px solid var(--line);border-radius:12px;padding:25px}.dept-head{display:flex;gap:13px;align-items:center;margin-bottom:18px}.dept-avatar{width:43px;height:43px;background:var(--blue-light);color:var(--blue);border-radius:10px;display:grid;place-items:center;font-size:18px}.dept-counts{display:flex;gap:30px;border-top:1px solid var(--line);padding-top:18px;margin-top:18px}.dept-counts strong{font-size:20px;font-weight:600;margin-right:6px}.dept-counts span{font-size:11px;color:var(--muted)}.dept-card .row-actions{border-top:1px solid var(--line);margin-top:18px;padding-top:16px}.dept-remark{color:#94a0b2;font-size:12px;min-height:38px;white-space:pre-wrap;overflow-wrap:anywhere}.editor-layout{display:grid;grid-template-columns:minmax(0,1fr) 264px;gap:22px;align-items:start}.editor-stack{display:grid;gap:22px}.form-panel{background:white;border:1px solid var(--line);border-radius:12px;padding:26px}.form-heading{display:flex;align-items:center;gap:10px;margin-bottom:24px}.step-dot{background:#edf2fe;color:#597cce;border-radius:6px;width:25px;height:25px;display:grid;place-items:center;font-size:11px}.form-heading p{color:#9ba5b6;font-size:11px;margin-left:auto}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.span-two{grid-column:1/-1}.required{color:#dc8282;margin-left:3px}.form-hint{color:#9aa6b7;font-size:11px;margin-top:6px}.dept-tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);overflow:auto;margin-bottom:25px}.dept-tab{padding:12px 15px;white-space:nowrap;color:#8793a6;background:transparent;border-bottom:2px solid transparent;font-size:12px}.dept-tab.active{color:var(--blue);border-bottom-color:var(--blue);font-weight:600}.dept-tab.has-data:after{content:"";display:inline-block;margin-left:5px;background:#62b099;width:4px;height:4px;border-radius:50%;vertical-align:middle}.material-caption{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;font-size:13px}.upload-section{margin-top:26px;padding-top:23px;border-top:1px solid var(--line)}.upload-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.upload-heading small{color:#9ba6b7}.upload-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.image-tile{border:1px solid var(--line);border-radius:8px;overflow:hidden;position:relative}.image-tile img{width:100%;height:115px;object-fit:contain;background:#f5f7fa;display:block;cursor:zoom-in}.image-tile p{font-size:10px;color:#8d9aaf;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:8px}.image-controls{display:flex;justify-content:space-between;padding:0 8px 8px}.image-controls button{font-size:10px}.upload-box{background:#fafbfe;border:1px dashed #cbd7eb;border-radius:8px;min-height:161px;display:grid;place-content:center;text-align:center;gap:8px;color:#859bc0;font-size:11px;cursor:pointer}.upload-box svg{margin:auto}.file-row{display:flex;align-items:center;gap:12px;border:1px solid var(--line);border-radius:8px;padding:13px;margin-bottom:10px}.file-label{background:#fff0eb;color:#cf937f;border-radius:6px;font-size:10px;font-weight:600;min-width:36px;height:42px;display:grid;place-items:center}.file-label.doc{background:#edf2ff;color:#7e9ed4}.file-meta{min-width:0;flex:1}.file-meta a{font-size:12px;overflow-wrap:anywhere}.file-meta small{display:block;color:#9aa6b7}.editor-aside{position:sticky;top:24px}.aside-card{background:white;border:1px solid var(--line);border-radius:12px;padding:22px;margin-bottom:18px}.aside-card h3{font-size:13px;margin-bottom:15px}.check-row{display:flex;justify-content:space-between;font-size:11px;color:#8b99ae;padding:10px 0;border-bottom:1px solid #f0f3f7}.check-row:last-child{border:0}.check-done{color:#349e7f}.aside-card p{color:#93a0b3;font-size:11px;line-height:1.9}.form-error{margin:16px 0;padding:11px 14px;background:#fff0ed;color:#b96d5e;font-size:12px;border-radius:6px}.save-status{font-size:11px;color:#9aa5b7}.editor-footer{display:flex;justify-content:space-between;align-items:center;margin-top:24px}.login-page{min-height:100vh;display:grid;grid-template-columns:1.1fr 1fr}.login-visual{background:linear-gradient(150deg,#152f68,#2455bf);color:white;padding:70px;display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden}.login-visual .brand{color:white;padding:0}.login-visual .brand small{color:#9fb5df}.login-copy{position:relative;z-index:1}.login-copy .eyebrow{color:#8ba8e2}.login-copy h1{font-size:43px;line-height:1.5;letter-spacing:-1.5px;margin:16px 0}.login-copy p{color:#a9bde4;font-size:14px;line-height:2}.login-art{position:absolute;width:420px;height:420px;border:1px solid #ffffff12;border-radius:50%;right:-160px;bottom:130px}.login-art:before{content:"";position:absolute;inset:55px;border:1px solid #ffffff1a;border-radius:50%}.login-art:after{content:"▦";font-size:200px;color:#ffffff0d;position:absolute;top:40px;left:80px;transform:rotate(-15deg)}.login-foot{font-size:11px;color:#8ca9dc;letter-spacing:1px}.login-form-wrap{display:grid;place-items:center;padding:50px}.login-form{width:100%;max-width:340px}.login-form h2{font-size:28px;margin-bottom:8px}.login-form>p{font-size:13px;color:var(--muted);margin-bottom:32px}.login-form label{margin-top:22px}.login-form input{padding:13px;font-size:14px}.login-form .btn{width:100%;margin-top:28px;height:45px;font-size:14px}.login-demo{font-size:11px;color:#a18c64;background:#faf3e7;border-radius:7px;padding:12px 14px;margin-top:22px}.login-caption{text-align:center;font-size:11px;color:#a5afbd;margin-top:25px}dialog{padding:0;border:0;border-radius:14px;box-shadow:0 24px 100px #0a234a33;color:var(--ink);width:min(520px,calc(100vw - 32px));max-height:90vh}dialog::backdrop{background:#14213d66;backdrop-filter:blur(3px)}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:22px 26px;border-bottom:1px solid var(--line)}.modal-head h2{font-size:17px}.modal-body{padding:24px 26px}.modal-body label{margin-bottom:20px}.modal-foot{padding:18px 26px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:10px}.modal-description{font-size:13px;line-height:1.8;color:#8190a6;white-space:pre-wrap}.qr-preview{text-align:center}.qr-preview img{width:230px;height:230px;display:block;margin:0 auto 14px}.qr-preview h3{margin-bottom:3px}.qr-preview p{font-size:12px;color:#96a1b2;margin-bottom:16px}.qr-preview code{font-size:11px;color:#9ca8b9}.qr-modal{width:min(750px,calc(100vw - 32px))}.qr-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.qr-grid .qr-preview img{width:150px;height:150px}.qr-grid .qr-preview h3{font-size:12px}.qr-grid .qr-preview p{font-size:10px}.image-modal{width:min(850px,calc(100vw - 32px))}.image-modal img{width:100%;max-height:70vh;object-fit:contain}.toast{background:#243552;color:white;padding:13px 20px;border-radius:9px;box-shadow:0 10px 30px #192b4826;font-size:13px;margin-top:10px;max-width:450px}.toast.error{background:#ab5c50}#toasts{position:fixed;bottom:28px;left:50%;transform:translateX(-50%);z-index:100}#print-area{display:none}[hidden]{display:none!important}.upload-busy{font-size:12px;color:#7791c4;margin:15px 0}.mobile-nav-label{display:none}@media(min-width:1650px){main{padding-top:44px}}@media(max-width:1200px){.sidebar{width:200px;padding-left:12px;padding-right:12px}.workspace{margin-left:200px}main{padding:26px}.topbar{padding:0 26px}.stat{padding:18px 16px}.stat-icon{display:none}.editor-layout{grid-template-columns:minmax(0,1fr)}.editor-aside{display:none}.dept-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:760px){.sidebar{width:68px;padding:20px 8px}.brand{padding:0;justify-content:center}.brand>span:last-child,.sidebar-label,.nav-item span,.sidebar-note,.sidebar-bottom{display:none}.nav-item{padding:15px;justify-content:center}.nav-item.active:after{display:none}#nav{margin-top:30px}.workspace{margin-left:68px}.topbar{padding:0 18px;height:60px}.topbar-right{display:none}main{padding:22px 16px}.page-heading{align-items:flex-start}h1{font-size:23px}.page-heading p{font-size:11px}.stats{grid-template-columns:repeat(2,1fr);gap:10px}.stat{padding:14px}.stat-value{font-size:25px}.panel-top,.filters,.pagination{padding:16px}.panel-top small{display:none}.filters{gap:8px}.filter-tail{display:none}.filters select{min-width:120px}.dept-grid{grid-template-columns:1fr}.form-panel{padding:18px}.form-grid{grid-template-columns:1fr}.span-two{grid-column:auto}.form-heading p{display:none}.upload-grid{grid-template-columns:repeat(2,1fr)}.login-page{grid-template-columns:1fr}.login-visual{display:none}.login-form-wrap{padding:30px}.app-footer{padding:16px;font-size:10px}.app-footer span{display:none}.qr-grid{grid-template-columns:repeat(2,1fr)}.editor-footer{gap:12px}.editor-footer .save-status{display:none}}@media print{body>*{display:none!important}#print-area{display:grid!important;grid-template-columns:repeat(3,1fr);gap:7mm;background:white;padding:5mm}.print-label{border:1px solid #ddd;padding:5mm;text-align:center;break-inside:avoid;overflow-wrap:anywhere}.print-label img{width:42mm;height:42mm;display:block;margin:auto}.print-label h3{font-size:11pt;margin:2mm 0}.print-label p{font-size:9pt}.print-label small{font-size:7pt;color:#555}@page{size:A4;margin:10mm}}
.dept-grid-space{height:20px}
#toasts{width:max-content;max-width:calc(100vw - 32px);pointer-events:none}.toast{max-width:100%}@media(max-width:760px){.panel-top{flex-wrap:wrap}.panel-top .button-row{gap:6px}}
@media(max-width:760px){table{min-width:920px}}@media print{body{background:#fff}}
