:root{font-family:"Microsoft YaHei",Arial,sans-serif;color:#102a43;background:#f5f8fb}*{box-sizing:border-box}body{margin:0}.shell{min-height:100vh;display:flex}.side{width:220px;background:#102a43;color:#d9e2ec;padding:22px 14px;display:flex;flex-direction:column}.brand{font-size:18px;font-weight:800;color:#fff;margin:4px 10px 28px}.brand small{display:block;color:#9fb3c8;font-size:10px;letter-spacing:.1em;margin-top:4px}.nav{display:grid;gap:6px}.nav button{border:0;background:transparent;color:#bcccdc;text-align:left;padding:11px 12px;border-radius:6px;font:inherit;cursor:pointer}.nav button.active,.nav button:hover{background:#1b496e;color:#fff}.userbox{margin-top:auto;border-top:1px solid #ffffff22;padding:14px 10px;color:#9fb3c8;font-size:12px}.main{flex:1;min-width:0;padding:28px 34px}.top{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:22px}.top h1{margin:0;font-size:26px}.top p{margin:5px 0 0;color:#627d98;font-size:12px}.btn{border:1px solid #cbd5e1;background:#fff;color:#102a43;border-radius:5px;padding:9px 13px;font:inherit;cursor:pointer}.btn.primary{background:#1976d2;color:#fff;border-color:#1976d2;font-weight:700}.btn.danger{color:#c23b4a;border-color:#e5b9bf}.panel{background:#fff;border:1px solid #d9e2ec;border-radius:8px;padding:20px;margin-bottom:16px}.grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.field{display:grid;gap:6px}.field label{font-size:12px;color:#627d98;font-weight:700}.field input,.field select{width:100%;border:1px solid #bcccdc;border-radius:5px;padding:9px;font:inherit}.wide{grid-column:span 2}.actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px;padding-top:14px;border-top:1px solid #d9e2ec}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}.metric{background:#fff;border:1px solid #d9e2ec;border-radius:8px;padding:16px}.metric small{display:block;color:#627d98;font-size:11px}.metric strong{display:block;font-size:24px;margin-top:8px}.table-wrap{overflow:auto}.table{width:100%;border-collapse:collapse;min-width:680px}.table th,.table td{text-align:left;padding:10px;border-bottom:1px solid #edf2f7;white-space:nowrap}.table th{background:#f4f7fa;color:#627d98;font-size:11px}.num{text-align:right!important}.empty{padding:30px;text-align:center;color:#8aa0b5}.search{position:relative}.results{display:none;position:absolute;z-index:3;left:0;right:0;top:42px;background:#fff;border:1px solid #d9e2ec;box-shadow:0 10px 24px #102a4320;max-height:220px;overflow:auto}.results.open{display:block}.results button{display:flex;justify-content:space-between;width:100%;border:0;border-bottom:1px solid #edf2f7;background:#fff;padding:10px;text-align:left;cursor:pointer;font:inherit}.results button:hover{background:#e8f1fb}.batch{display:grid;gap:8px;margin-top:14px}.batch-row{display:grid;grid-template-columns:1.5fr .7fr 1fr .7fr auto auto;gap:10px;align-items:center;border:1px solid #d9e2ec;border-radius:5px;padding:10px;background:#fbfdff}.batch-row small{display:block;color:#627d98;font-size:11px}.batch-row input{width:100%;padding:8px;border:1px solid #bcccdc;border-radius:5px}.modal{display:none;position:fixed;inset:0;background:#102a4366;align-items:center;justify-content:center;padding:16px}.modal.open{display:flex}.dialog{background:#fff;width:min(420px,100%);border-radius:8px;padding:20px}.dialog-head{display:flex;justify-content:space-between}.dialog h2{margin:0 0 14px}.dialog .close{border:0;background:none;font-size:24px;cursor:pointer}.calc{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:12px}.calc div{background:#f4f7fa;border-radius:5px;padding:10px}.calc small{display:block;color:#627d98;font-size:11px}.notice{margin-top:12px;padding:10px;border-left:3px solid #c23b4a;background:#fff4f4;color:#c23b4a;font-size:12px}.login{max-width:400px;margin:12vh auto}.login h1{margin-top:0}.toast{position:fixed;right:20px;bottom:20px;background:#102a43;color:#fff;padding:11px 14px;border-radius:5px;display:none}.toast.show{display:block}@media(max-width:800px){.side{width:180px}.main{padding:20px}.metrics{grid-template-columns:repeat(2,1fr)}.grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:560px){.shell{display:block}.side{width:100%;padding:12px}.nav{display:flex;overflow:auto}.nav button{white-space:nowrap}.userbox{display:none}.main{padding:14px}.grid{grid-template-columns:1fr}.wide{grid-column:auto}.batch-row{grid-template-columns:1fr 1fr}.batch-row .sub{grid-column:span 2}}
.inventory-table tbody tr[data-inventory-detail]{cursor:pointer}
.inventory-table tbody tr[data-inventory-detail]:hover{background:#edf6ff}
.qty-modal{display:none;position:fixed;inset:0;background:#102a4366;z-index:20;align-items:center;justify-content:center;padding:16px}
.qty-modal.open{display:flex}
.qty-dialog{background:#fff;width:min(760px,100%);max-height:90vh;overflow:auto;border-radius:8px;padding:20px}
.notice.warning{background:#fff7df;color:#8a5700;border:1px solid #f1c75b}
.batch-row.inline-qty-row{grid-template-columns:minmax(180px,1.5fr) minmax(130px,.7fr) minmax(100px,1fr) auto}
.batch-qty-input{width:100%;padding:8px;border:1px solid #bcccdc;border-radius:5px;font:inherit;font-weight:700}
.batch-qty-input.invalid-input{border:2px solid #d64545;background:#fff4f4}
.inline-qty-error{display:block;min-height:16px;color:#c53030;font-size:11px;margin-top:3px}
@media(max-width:560px){.batch-row.inline-qty-row{grid-template-columns:1fr 1fr}.batch-row.inline-qty-row .sku-main{grid-column:1/-1}}
.list-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;color:#486581}
.list-toolbar label{display:flex;align-items:center;gap:7px;font-size:13px}
.list-toolbar select{padding:7px 28px 7px 9px;border:1px solid #bcccdc;border-radius:5px;background:#fff;font:inherit}
.pagination{display:flex;justify-content:center;align-items:center;gap:12px;margin-top:14px;color:#486581;font-size:13px}
.btn:disabled{opacity:.5;cursor:not-allowed}
@media(max-width:560px){.list-toolbar{align-items:flex-start;flex-direction:column}.pagination{justify-content:space-between;gap:6px}.pagination span{text-align:center;font-size:12px}}
