/* VIP 内部系统样式 - 榔世子风格 v2 */
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
:root{
  --bg:#F4F2ED;--bg2:#EAE6DC;--bg3:#F9F8F6;
  --text:#1A1A2E;--text2:#3D3D56;--text3:#8A8A9C;
  --green:#0C1B33;--green2:#1B3A5C;--green3:#243F5E;
  --gold:#D4AF62;--gold2:#B8963E;--gold-light:rgba(212,175,98,.12);
  --cream:#FAFAF8;
  --red:#c0392b;--red-bg:#fff0ee;--red-light:rgba(192,57,43,.08);
  --border:rgba(12,27,51,.09);--border2:rgba(12,27,51,.05);
  --shadow:0 2px 12px rgba(12,27,51,.07);
  --shadow2:0 4px 24px rgba(12,27,51,.10);
  --serif:'Noto Serif SC',serif;
  --sans:'Noto Sans SC',sans-serif;
  --ease:all .25s cubic-bezier(.25,.46,.45,.94);
  --radius:6px;--radius2:10px;
}
body{background:var(--bg);color:var(--text);font-family:var(--sans);min-height:100vh;font-size:14px;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}

/* ── 顶栏 ── */
.topbar{
  background:linear-gradient(90deg,var(--green) 0%,var(--green2) 100%);
  color:var(--cream);padding:.7rem 2rem;
  display:flex;align-items:center;justify-content:space-between;
  border-bottom:2px solid rgba(212,175,98,.25);
  box-shadow:0 2px 10px rgba(12,27,51,.18);
  position:sticky;top:0;z-index:100;
}
.topbar .logo{font-family:var(--serif);font-size:1rem;color:var(--gold);letter-spacing:.12em}
.topbar .user-info{font-size:.78rem;color:rgba(255,255,255,.55);display:flex;align-items:center;gap:1rem}
.topbar .user-info span{color:rgba(255,255,255,.88);font-weight:500}
.topbar .logout-btn{
  font-size:.74rem;color:rgba(255,255,255,.45);cursor:pointer;
  border:1px solid rgba(255,255,255,.18);padding:.22rem .75rem;
  border-radius:2rem;background:none;transition:var(--ease);
}
.topbar .logout-btn:hover{color:#fff;border-color:rgba(255,255,255,.5);background:rgba(255,255,255,.08)}

/* ── 主容器 ── */
.main{max-width:980px;margin:2.2rem auto;padding:0 1.5rem}
.page-title{
  font-family:var(--serif);font-size:1.3rem;color:var(--green);
  margin-bottom:1.8rem;padding-bottom:.9rem;
  border-bottom:2px solid var(--border);
  display:flex;align-items:baseline;gap:.8rem;
}
.page-title span{font-size:.75rem;color:var(--text3);font-family:var(--sans);font-weight:300}

/* ── 卡片 ── */
.card{
  background:#fff;border:1px solid var(--border);
  padding:1.8rem 2rem;margin-bottom:1.6rem;
  border-radius:var(--radius2);
  box-shadow:var(--shadow);
  transition:box-shadow .2s;
}
.card:hover{box-shadow:var(--shadow2)}
.card-title{
  font-size:.7rem;letter-spacing:.12em;color:var(--text3);
  margin-bottom:1.4rem;text-transform:uppercase;font-weight:500;
  display:flex;align-items:center;gap:.5rem;
}
.card-title::before{content:'';display:inline-block;width:3px;height:12px;background:var(--gold);border-radius:2px}

/* ── Section 分隔 ── */
.form-section{
  background:var(--bg3);border:1px solid var(--border2);
  border-radius:var(--radius);padding:1.2rem 1.4rem;margin-bottom:1.2rem;
}
.form-section-title{
  font-size:.72rem;letter-spacing:.1em;color:var(--text3);font-weight:600;
  text-transform:uppercase;margin-bottom:1rem;
  display:flex;align-items:center;gap:.45rem;
}
.form-section-title::before{content:'';width:14px;height:2px;background:var(--gold);border-radius:1px}

/* ── 表单 ── */
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem 1.2rem}
.form-grid.full{grid-template-columns:1fr}
.form-group{display:flex;flex-direction:column;gap:.4rem}
.form-group.span2{grid-column:span 2}
label{font-size:.78rem;color:var(--text2);font-weight:500;letter-spacing:.02em}
label .req{color:var(--red);margin-left:.1rem}
input,select,textarea{
  width:100%;padding:.65rem .9rem;
  border:1.5px solid var(--border);
  border-radius:var(--radius);
  font-size:.85rem;font-family:var(--sans);
  color:var(--text);background:#fff;
  transition:border-color .2s,box-shadow .2s;
  outline:none;
}
input:focus,select:focus,textarea:focus{
  border-color:var(--gold);
  box-shadow:0 0 0 3px rgba(212,175,98,.13);
}
input::placeholder,textarea::placeholder{color:var(--text3);font-size:.82rem}
textarea{resize:vertical;min-height:64px;line-height:1.65}
select{cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%238A8A9C' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .8rem center;padding-right:2rem}

/* ── 按钮 ── */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.4rem;
  padding:.62rem 1.5rem;border:none;border-radius:var(--radius);
  font-size:.82rem;font-family:var(--sans);cursor:pointer;
  letter-spacing:.04em;transition:var(--ease);font-weight:500;
  white-space:nowrap;
}
.btn-primary{background:var(--green);color:var(--cream);box-shadow:0 2px 8px rgba(12,27,51,.2)}
.btn-primary:hover{background:var(--green2);box-shadow:0 4px 14px rgba(12,27,51,.28);transform:translateY(-1px)}
.btn-primary:active{transform:translateY(0)}
.btn-gold{background:var(--gold);color:var(--green);box-shadow:0 2px 8px rgba(212,175,98,.25)}
.btn-gold:hover{background:var(--gold2);color:#fff;box-shadow:0 4px 14px rgba(212,175,98,.35);transform:translateY(-1px)}
.btn-ghost{background:transparent;color:var(--text2);border:1.5px solid var(--border)}
.btn-ghost:hover{border-color:var(--gold);color:var(--gold);background:var(--gold-light)}
.btn-sm{padding:.38rem .95rem;font-size:.77rem}
.btn-danger{background:var(--red);color:#fff;box-shadow:0 2px 8px rgba(192,57,43,.2)}
.btn-danger:hover{background:#a93226;box-shadow:0 4px 12px rgba(192,57,43,.3);transform:translateY(-1px)}
.btn-outline{background:transparent;color:var(--green);border:1.5px solid var(--green)}
.btn-outline:hover{background:var(--green);color:#fff}
.btn:disabled{opacity:.48;cursor:not-allowed;transform:none !important;box-shadow:none !important}

/* ── 表格 ── */
.table-wrap{overflow-x:auto;border-radius:var(--radius);border:1px solid var(--border)}
table{width:100%;border-collapse:collapse}
thead{background:linear-gradient(180deg,var(--bg3) 0%,var(--bg2) 100%)}
th{
  font-size:.7rem;letter-spacing:.09em;color:var(--text3);
  font-weight:600;padding:.7rem .9rem;
  border-bottom:2px solid var(--border);text-align:left;white-space:nowrap;
}
td{padding:.8rem .9rem;border-bottom:1px solid var(--border2);font-size:.83rem;color:var(--text);vertical-align:middle}
tbody tr:last-child td{border-bottom:none}
tbody tr{transition:background .15s}
tbody tr:hover td{background:rgba(212,175,98,.045)}

/* ── 状态标签 ── */
.badge{display:inline-block;padding:.22rem .75rem;border-radius:2rem;font-size:.69rem;font-weight:600;letter-spacing:.06em;line-height:1.4}
.badge-pending{background:#fff8e1;color:#8B6914;border:1px solid rgba(212,175,98,.3)}
.badge-paid{background:#e3f2fd;color:#0d5fa0;border:1px solid rgba(13,95,160,.2)}
.badge-shipping{background:#e8f5e9;color:#2e7d32;border:1px solid rgba(46,125,50,.2)}
.badge-done{background:var(--bg2);color:var(--text3);border:1px solid var(--border)}
.badge-rejected{background:#fdecea;color:#c0392b;border:1px solid rgba(192,57,43,.2)}
.badge-cancelled{background:#f0f0f0;color:#666;border:1px solid #ddd}

/* ── 消息提示 ── */
.msg{
  padding:.75rem 1.1rem;border-radius:var(--radius);
  font-size:.83rem;margin-bottom:1.2rem;display:none;
  display:none;border-left:4px solid transparent;
}
.msg.show{display:flex;align-items:center;gap:.5rem}
.msg-success{background:#e8f5e9;color:#2e7d32;border-left-color:#4caf50}
.msg-error{background:var(--red-bg);color:var(--red);border-left-color:var(--red)}

/* ── Tab ── */
.tabs{
  display:flex;gap:0;margin-bottom:1.6rem;
  border-bottom:2px solid var(--border);
}
.tab{
  padding:.65rem 1.6rem;font-size:.83rem;cursor:pointer;
  color:var(--text3);border-bottom:2.5px solid transparent;
  margin-bottom:-2px;transition:var(--ease);letter-spacing:.02em;
  border-radius:var(--radius) var(--radius) 0 0;
}
.tab:hover{color:var(--green);background:rgba(12,27,51,.03)}
.tab.active{color:var(--green);border-bottom-color:var(--gold);font-weight:600;background:rgba(212,175,98,.05)}

/* ── 搜索栏 ── */
.search-bar{
  display:flex;gap:.6rem;align-items:center;
  margin-bottom:1.1rem;flex-wrap:wrap;
  padding:.8rem 1rem;background:var(--bg3);
  border-radius:var(--radius);border:1px solid var(--border2);
}
.search-bar input,.search-bar select{
  width:auto;padding:.4rem .75rem;font-size:.81rem;
  border:1.5px solid var(--border);border-radius:var(--radius);
  background:#fff;
}
.search-bar input{width:148px}
.search-bar select{min-width:110px}
.search-bar input:focus,.search-bar select:focus{border-color:var(--gold);box-shadow:0 0 0 2px rgba(212,175,98,.12)}

/* ── 分页 ── */
.pagination{display:flex;gap:.35rem;align-items:center;justify-content:center;padding:.9rem 0 .3rem;flex-wrap:wrap}
.pg-btn{
  padding:.35rem .85rem;border:1.5px solid var(--border);
  background:#fff;border-radius:var(--radius);
  font-size:.77rem;cursor:pointer;color:var(--text2);
  transition:var(--ease);font-family:var(--sans);
}
.pg-btn:hover{border-color:var(--gold);color:var(--gold);background:var(--gold-light)}
.pg-btn.active{background:var(--green);color:#fff;border-color:var(--green)}
.pg-btn:disabled{opacity:.38;cursor:not-allowed}
.pg-info{font-size:.74rem;color:var(--text3);padding:0 .4rem}

/* ── 空状态 ── */
.empty-state{text-align:center;padding:3rem;color:var(--text3);font-size:.85rem}

/* ── 详情弹窗（operator modal）── */
.modal-mask{display:none;position:fixed;inset:0;background:rgba(12,27,51,.45);backdrop-filter:blur(2px);z-index:200;align-items:center;justify-content:center}
.modal-mask.show{display:flex}
.modal-box{background:#fff;border-radius:var(--radius2);width:92%;max-width:560px;max-height:90vh;overflow-y:auto;box-shadow:0 12px 48px rgba(12,27,51,.22)}
.modal-head{display:flex;justify-content:space-between;align-items:center;padding:1.1rem 1.5rem;border-bottom:1px solid var(--border);background:var(--bg3);border-radius:var(--radius2) var(--radius2) 0 0}
.modal-head h3{font-size:.98rem;font-weight:600;color:var(--green);font-family:var(--serif)}
.modal-head .modal-close{background:none;border:none;font-size:1.4rem;cursor:pointer;color:var(--text3);line-height:1;padding:0 .2rem;transition:var(--ease)}
.modal-head .modal-close:hover{color:var(--red)}
.modal-body{padding:1.3rem 1.5rem}
.modal-body .view-row{display:flex;gap:.6rem;padding:.5rem 0;border-bottom:1px solid var(--border2);font-size:.85rem}
.modal-body .view-row:last-child{border-bottom:none}
.modal-body .vr-label{color:var(--text3);width:90px;flex-shrink:0;font-size:.78rem}
.modal-body .vr-val{color:var(--text);word-break:break-all}
.modal-body .vr-val.red{color:#c0392b;font-weight:700;font-family:monospace;font-size:.9rem}
.modal-foot{padding:1rem 1.5rem;border-top:1px solid var(--border);display:flex;gap:.7rem;justify-content:flex-end;background:var(--bg3);border-radius:0 0 var(--radius2) var(--radius2)}

/* ── 详情弹窗（通用 detail-modal）── */
.detail-modal{display:none;position:fixed;inset:0;background:rgba(12,27,51,.45);backdrop-filter:blur(2px);z-index:999;align-items:center;justify-content:center}
.detail-modal.show{display:flex}
.detail-box{background:#fff;width:500px;max-width:95vw;max-height:86vh;overflow-y:auto;padding:0;box-shadow:0 12px 48px rgba(12,27,51,.22);border-radius:var(--radius2)}
.detail-box-head{padding:1.1rem 1.5rem;border-bottom:1px solid var(--border);background:var(--bg3);border-radius:var(--radius2) var(--radius2) 0 0;font-family:var(--serif);font-size:.98rem;color:var(--green)}
.detail-box-body{padding:1.3rem 1.5rem}
.detail-box-foot{padding:.9rem 1.5rem;border-top:1px solid var(--border);background:var(--bg3);border-radius:0 0 var(--radius2) var(--radius2);text-align:right}
.detail-row{display:grid;grid-template-columns:84px 1fr;gap:.4rem .8rem;font-size:.84rem;padding:.42rem 0;border-bottom:1px solid var(--border2);color:var(--text2);align-items:start}
.detail-row:last-child{border:none}
.detail-label{color:var(--text3);font-size:.76rem;padding-top:.1rem}

/* ── 登录页 ── */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(160deg,#0C1B33 0%,#1B3A5C 60%,#2E6B8A 100%)}
.login-box{background:#fff;width:360px;padding:2.5rem;box-shadow:0 20px 60px rgba(0,0,0,.25);border-radius:var(--radius2)}
.login-logo{text-align:center;margin-bottom:2rem}
.login-logo .name{font-family:var(--serif);font-size:1.4rem;color:var(--green);letter-spacing:.1em}
.login-logo .sub{font-size:.7rem;color:var(--text3);letter-spacing:.15em;margin-top:.3rem}
.login-logo .divider{width:40px;height:2px;background:var(--gold);margin:.8rem auto;border-radius:1px}

/* ── 客户查询 ── */
.track-wrap{min-height:100vh;background:var(--bg);padding:3rem 1.5rem}
.track-inner{max-width:600px;margin:0 auto}
.track-header{text-align:center;margin-bottom:2.5rem}
.track-header .logo{font-family:var(--serif);font-size:1.6rem;color:var(--green);letter-spacing:.1em;margin-bottom:.3rem}
.track-header .logo em{color:var(--gold);font-style:normal}
.track-header p{font-size:.82rem;color:var(--text3)}
.search-box{display:flex;gap:.8rem;margin-bottom:2rem}
.search-box input{flex:1}
.order-card{background:#fff;border:1px solid var(--border);padding:1.2rem 1.5rem;margin-bottom:1rem;box-shadow:var(--shadow);border-radius:var(--radius)}
.order-card .no{font-size:.7rem;color:var(--text3);margin-bottom:.5rem;letter-spacing:.05em}
.order-card .product{font-size:.95rem;color:var(--green);font-weight:500;margin-bottom:.5rem}
.order-card .meta{font-size:.78rem;color:var(--text2);display:flex;gap:1.5rem;flex-wrap:wrap;margin-bottom:.8rem}
.order-card .express{background:var(--bg2);padding:.6rem .8rem;font-size:.78rem;color:var(--text2);margin-top:.5rem;border-radius:var(--radius)}
.order-card .express strong{color:var(--green)}
.empty{text-align:center;color:var(--text3);font-size:.85rem;padding:3rem;background:#fff;border:1px solid var(--border);border-radius:var(--radius)}

/* ── 进度弹窗（shipper batch）── */
.progress-modal{display:none;position:fixed;inset:0;background:rgba(12,27,51,.48);backdrop-filter:blur(2px);z-index:999;align-items:center;justify-content:center}
.progress-modal.show{display:flex}
.progress-box{background:#fff;width:500px;max-height:80vh;overflow-y:auto;padding:2rem;box-shadow:var(--shadow2);border-radius:var(--radius2)}
.progress-title{font-family:var(--serif);font-size:1rem;color:var(--green);margin-bottom:1rem}
.progress-bar-wrap{background:#eee;border-radius:4px;height:8px;margin-bottom:1rem;overflow:hidden}
.progress-bar{height:100%;background:linear-gradient(90deg,var(--green) 0%,var(--green2) 100%);border-radius:4px;transition:width .3s}
.result-item{display:flex;gap:.5rem;align-items:flex-start;padding:.4rem 0;border-bottom:1px solid var(--border2);font-size:.8rem}
.result-item:last-child{border:none}
.ri-ok{color:#2e7d32}.ri-fail{color:#c62828}
.print-section{margin-top:1rem;padding-top:1rem;border-top:1px solid var(--border2)}

@media(max-width:600px){
  .form-grid{grid-template-columns:1fr}
  .form-group.span2{grid-column:span 1}
  .main{padding:0 1rem;margin:1.2rem auto}
  .card{padding:1.2rem 1.1rem}
  .topbar{padding:.6rem 1rem}
}
