:root{
  --blue:#5b9bd5; --blue-deep:#318db9; --blue-light:#e8f2fb;
  --orange:#ff6b4a; --bg:#f0f4f8; --card:#ffffff;
  --text:#28485f; --text-2:#708895; --text-3:#9aa7af;
  --border:#e3edf4; --red:#e24b4a; --green:#3b8c5f;
}
*{margin:0;padding:0;box-sizing:border-box}
body{font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;background:var(--bg);color:var(--text);font-size:14px}
.hidden{display:none!important}
button{cursor:pointer;font-family:inherit}

/* 登录 */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#f0f4f8 0%,#dcebf7 100%)}
.login-card{width:360px;background:var(--card);border-radius:16px;padding:40px 36px;box-shadow:0 10px 40px rgba(49,141,185,.12)}
.login-logo{display:flex;align-items:center;gap:12px;margin-bottom:28px}
.logo-mark{width:44px;height:44px;border-radius:12px;background:linear-gradient(135deg,var(--blue),#7db8e8);color:#fff;font-size:22px;font-weight:700;display:flex;align-items:center;justify-content:center}
.logo-text b{display:block;font-size:17px;color:var(--text);letter-spacing:1px}
.logo-text span{display:block;font-size:12px;color:var(--text-3);margin-top:2px}
.login-form input{width:100%;height:44px;border:1px solid var(--border);border-radius:10px;padding:0 14px;font-size:14px;margin-bottom:14px;outline:none;background:#fafcfe}
.login-form input:focus{border-color:var(--blue);background:#fff}
.btn-primary{width:100%;height:46px;border:0;border-radius:23px;background:linear-gradient(90deg,var(--blue),#7db8e8);color:#fff;font-size:15px;font-weight:600;letter-spacing:6px}
.btn-primary:active{opacity:.9}
.login-msg{color:var(--red);font-size:12px;margin-top:10px;text-align:center;min-height:16px}

/* 布局 */
.main-wrap{display:flex;min-height:100vh}
.sidebar{width:216px;background:var(--card);border-right:1px solid var(--border);display:flex;flex-direction:column;position:sticky;top:0;height:100vh}
.side-logo{display:flex;align-items:center;gap:10px;padding:22px 20px;border-bottom:1px solid var(--border)}
.side-logo .logo-mark{width:38px;height:38px;font-size:19px;border-radius:10px}
.side-logo .logo-text b{font-size:15px}
.side-logo .logo-text span{font-size:11px}
.side-nav{flex:1;padding:14px 0}
.side-nav a{display:block;padding:13px 24px;color:var(--text-2);font-size:14px;text-decoration:none;border-left:3px solid transparent;cursor:pointer}
.side-nav a.active{color:var(--blue-deep);background:var(--blue-light);border-left-color:var(--blue);font-weight:600}
.side-nav a:hover{color:var(--blue-deep)}
.side-user{padding:16px 20px;border-top:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;font-size:13px;color:var(--text-2)}
.side-user a{color:var(--blue);text-decoration:none;cursor:pointer;font-size:13px}
.content{flex:1;padding:30px 34px;max-width:1080px}
.content h1{font-size:20px;font-weight:700;margin-bottom:20px}

/* 概览 */
.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}
.stat-card{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:22px}
.stat-num{font-size:30px;font-weight:700;color:var(--blue-deep)}
.stat-card.warn .stat-num{color:var(--orange)}
.stat-label{color:var(--text-2);font-size:13px;margin-top:6px}
.card{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:20px}
.card-title{font-size:15px;font-weight:600;margin-bottom:14px}
.card-title .hint{font-size:12px;color:var(--text-3);font-weight:400;margin-left:8px}
.low-stock-list{display:flex;flex-direction:column;gap:8px}
.low-stock-item{display:flex;justify-content:space-between;align-items:center;background:#fff8f0;border:1px solid #ffe4cc;border-radius:8px;padding:10px 14px}
.low-stock-item .name{font-weight:600;color:#a35a1e}
.low-stock-item .stock{color:var(--red);font-size:13px}
.empty-tip{color:var(--text-3);text-align:center;padding:26px 0}

/* 订单 */
.order-toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;flex-wrap:wrap;gap:10px}
.tabs{display:flex;background:var(--card);border:1px solid var(--border);border-radius:10px;padding:4px}
.tabs a{padding:7px 16px;font-size:13px;color:var(--text-2);text-decoration:none;border-radius:7px;cursor:pointer}
.tabs a.active{background:var(--blue);color:#fff;font-weight:600}
.search-box{display:flex;gap:8px}
.search-box input{height:38px;width:220px;border:1px solid var(--border);border-radius:8px;padding:0 12px;font-size:13px;outline:none}
.btn-ghost{height:38px;padding:0 18px;border:1px solid var(--border);background:#fff;border-radius:8px;color:var(--text);font-size:13px}
.btn-ghost:hover{border-color:var(--blue);color:var(--blue-deep)}
.order-list{display:flex;flex-direction:column;gap:12px}
.order-card{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:16px 20px}
.order-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
.order-no{font-weight:600;color:var(--text)}
.order-no .badge{display:inline-block;margin-left:8px;padding:2px 10px;border-radius:10px;font-size:12px;font-weight:500}
.badge-status{background:var(--blue-light);color:var(--blue-deep)}
.badge-paid{background:#fff1e6;color:#c06a1e}
.badge-shipped{background:#e6f4ee;color:var(--green)}
.badge-pending{background:#fdeaea;color:var(--red)}
.order-time{color:var(--text-3);font-size:12px}
.order-body{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}
.order-goods{flex:1}
.goods-line{display:flex;justify-content:space-between;padding:4px 0;color:var(--text);font-size:13px}
.goods-line .g-sub{color:var(--text-3)}
.order-meta{flex:1;font-size:13px;line-height:1.8;color:var(--text-2)}
.order-meta b{color:var(--text);font-weight:600}
.track-no{color:var(--blue-deep);font-weight:600;letter-spacing:.5px}
.order-actions{display:flex;gap:8px;align-items:center}
.order-amount{text-align:right;font-size:16px;font-weight:700;color:var(--orange);margin-bottom:8px}
.order-actions .btn-ghost{height:34px;font-size:13px}

/* 分页 */
.pager{display:flex;justify-content:center;gap:8px;margin-top:18px}
.pager a{width:32px;height:32px;border:1px solid var(--border);background:#fff;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:13px;color:var(--text-2);text-decoration:none;cursor:pointer}
.pager a.active{background:var(--blue);color:#fff;border-color:var(--blue)}

/* 库存 */
.stock-list table{width:100%;border-collapse:collapse}
.stock-list th{text-align:left;color:var(--text-2);font-size:13px;font-weight:500;padding:10px 12px;border-bottom:1px solid var(--border)}
.stock-list td{padding:12px;border-bottom:1px solid #f2f7fb;font-size:13px}
.stock-list tr:hover td{background:#fafdff}
.stock-num{font-weight:700;font-size:15px}
.stock-num.low{color:var(--red)}
.stock-num.ok{color:var(--green)}
.stock-price{color:var(--orange);font-weight:600}
.stock-status-offline{color:var(--text-3)}
.pill{display:inline-block;padding:2px 10px;border-radius:10px;font-size:12px;background:var(--blue-light);color:var(--blue-deep)}
.pill.off{background:#f1f4f6;color:var(--text-3)}

/* 弹窗 */
.modal-mask{position:fixed;inset:0;background:rgba(20,35,48,.45);display:flex;align-items:center;justify-content:center;z-index:50}
.modal{width:420px;background:#fff;border-radius:14px;padding:24px}
.modal-title{font-size:16px;font-weight:700;margin-bottom:18px}
.modal-body{display:flex;flex-direction:column;gap:14px}
.field label{display:block;font-size:12px;color:var(--text-2);margin-bottom:6px}
.field-value{font-size:14px;color:var(--text);font-weight:600}
.field input,.field select{width:100%;height:40px;border:1px solid var(--border);border-radius:8px;padding:0 12px;font-size:14px;outline:none;background:#fafcfe}
.field select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,#9aa7af 50%),linear-gradient(135deg,#9aa7af 50%,transparent 50%);background-position:calc(100% - 18px) 18px,calc(100% - 13px) 18px;background-size:5px 5px;background-repeat:no-repeat}
.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:22px}
.modal-actions .btn-primary{width:auto;padding:0 26px;letter-spacing:2px;height:40px;border-radius:20px;font-size:14px}
.toast{position:fixed;top:60px;left:50%;transform:translateX(-50%);background:rgba(20,35,48,.9);color:#fff;padding:10px 22px;border-radius:20px;font-size:13px;z-index:99}
@media (max-width:768px){
  .stat-grid{grid-template-columns:repeat(2,1fr)}
  .sidebar{width:160px}
  .content{padding:20px}
}

/* 物流轨迹弹窗 */
.track-modal{width:520px;max-width:92vw}
.track-modal .badge{display:inline-block;padding:2px 10px;border-radius:10px;font-size:12px;font-weight:500}
.track-head{display:flex;justify-content:space-between;align-items:flex-start;padding-bottom:14px;border-bottom:1px solid var(--border)}
.track-company{display:flex;align-items:center;gap:10px;font-size:16px;font-weight:700}
.track-open{font-size:13px;color:var(--blue);text-decoration:none;white-space:nowrap}
.track-open:hover{text-decoration:underline}
.track-body{max-height:52vh;overflow-y:auto;margin-top:14px;padding-right:4px}
.track-loading{color:var(--text-2);font-size:13px;padding:24px 0;text-align:center}
.track-error{color:var(--text-2);font-size:13px;line-height:1.8;padding:18px;background:#f7fafc;border-radius:10px}
.track-timeline{position:relative;padding-left:0}
.track-timeline .item{position:relative;padding:0 0 18px 26px;border-left:2px solid #dfe9f2;margin-left:6px}
.track-timeline .item:last-child{border-left-color:transparent;padding-bottom:4px}
.track-timeline .item .dot{position:absolute;left:-7px;top:3px;width:12px;height:12px;border-radius:50%;background:#c3d5e4;border:2px solid #fff;box-shadow:0 0 0 1px #c3d5e4}
.track-timeline .item.current .dot{background:var(--blue);box-shadow:0 0 0 1px var(--blue)}
.track-timeline .ctx{font-size:13.5px;color:var(--text);line-height:1.6}
.track-timeline .ctx .loc{color:var(--text-3);font-size:12px}
.track-timeline .time{font-size:12px;color:var(--text-3);margin-top:4px}
.track-timeline .item.current .ctx{font-weight:600;color:var(--blue-deep)}
