
:root{
  --bg:#f5f7fb;
  --panel:#ffffff;
  --panel-soft:#f8fafc;
  --line:#e3e7ef;
  --line-strong:#d2d8e4;
  --text:#1f2937;
  --muted:#667085;
  --muted-2:#98a2b3;
  --primary:#4f5fd5;
  --primary-dark:#3f4ec0;
  --primary-soft:#eef1ff;
  --calc:#f3f6fb;
  --profit:#217a4a;
  --loss:#c9362b;
  --warning:#a15c00;
  --danger:#d92d20;
  --danger-soft:#fff1f0;
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;background:var(--bg)}
body{font-family:Inter,"PingFang SC","Microsoft YaHei",Arial,sans-serif;color:var(--text);font-size:13px}
button,input,select{font:inherit}
button{cursor:pointer}
.app{min-height:100vh}
.topbar{
  height:58px;background:#fff;border-bottom:1px solid var(--line);
  display:flex;align-items:center;justify-content:space-between;padding:0 18px;
  position:sticky;top:0;z-index:50;
}
.brand{display:flex;align-items:center;gap:10px}
.brand-mark{width:28px;height:28px;border-radius:8px;background:var(--primary);color:#fff;display:grid;place-items:center;font-weight:800}
.brand-title{font-weight:750}
.brand-subtitle{font-size:11px;color:var(--muted)}
.top-actions{display:flex;align-items:center;gap:8px}
.save-state{font-size:12px;color:var(--warning);min-width:84px;text-align:right}
.btn{
  border:1px solid var(--line-strong);background:#fff;color:var(--text);
  padding:8px 12px;border-radius:7px;line-height:1.15;
}
.btn:hover{background:#f7f8fb}
.btn.primary{background:var(--primary);border-color:var(--primary);color:#fff}
.btn.primary:hover{background:var(--primary-dark)}
.btn.ghost{color:var(--muted)}
.btn.danger-light{color:var(--danger);border-color:#f0cbc7}
.content{padding:12px 15px 30px;min-width:980px}
.page-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.title-row{display:flex;align-items:center;gap:14px}
h1{font-size:18px;margin:0}
.tabs{display:flex;gap:4px;background:#e9edf4;padding:4px;border-radius:9px}
.tab{border:0;background:transparent;color:var(--muted);padding:8px 14px;border-radius:7px;font-weight:650}
.tab.active{background:#fff;color:var(--text);box-shadow:0 1px 4px rgba(16,24,40,.08)}
.legend,.block-note,.toolbar-help{font-size:12px;color:var(--muted)}
.view{display:none}
.view.active{display:block}
.toolbar{
  background:#fff;border:1px solid var(--line);border-radius:10px;padding:10px 12px;
  display:flex;justify-content:space-between;align-items:center;gap:10px;
}
.toolbar-left{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.inline-field{display:flex;align-items:center;gap:7px;color:var(--muted)}
input,select{
  min-height:32px;border:1px solid var(--line-strong);border-radius:6px;background:#fff;
  color:var(--text);padding:5px 8px;outline:none;
}
input:focus,select:focus{border-color:#9aa5ef;box-shadow:0 0 0 3px rgba(79,95,213,.10)}
.package-select{min-width:180px;font-weight:650}
.worksheet{display:grid;grid-template-rows:650px 360px 460px;gap:12px;margin-top:10px}
.block{
  background:#fff;border:1px solid var(--line);border-radius:10px;overflow:hidden;
  display:flex;flex-direction:column;min-height:0;box-shadow:0 2px 8px rgba(16,24,40,.025);
}
.block-head{height:42px;flex:none;display:flex;align-items:center;justify-content:space-between;padding:0 12px;border-bottom:1px solid var(--line)}
.block-title{display:flex;align-items:center;gap:8px;font-weight:750}
.step{width:21px;height:21px;border-radius:6px;background:var(--primary-soft);color:var(--primary);display:grid;place-items:center;font-size:11px;font-weight:800}
.table-scroll,.summary-scroll{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain}
table{border-collapse:separate;border-spacing:0;width:max-content;min-width:100%}
th,td{
  height:36px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);
  padding:0;white-space:nowrap;background:#fff;
}
th{
  position:sticky;top:0;z-index:6;background:#f8fafc;color:#475467;
  font-weight:700;text-align:center;padding:0 8px;
}
.cell-input,.cell-select{width:100%;height:35px;border:0;border-radius:0;background:transparent;padding:0 8px}
.cell-input:focus,.cell-select:focus{box-shadow:inset 0 0 0 2px #9aa5ef}
.cell{
  height:35px;display:flex;align-items:center;justify-content:flex-end;
  padding:0 9px;font-variant-numeric:tabular-nums;
}
.center{justify-content:center}
.auto{background:var(--calc)}
.pos{color:var(--profit);font-weight:650}
.neg{color:var(--loss);font-weight:650}
.row-actions{height:38px;flex:none;display:flex;align-items:center;padding:0 10px;border-top:1px solid var(--line)}
.inline-add{border:0;background:transparent;color:var(--primary);font-weight:650;padding:6px 8px;border-radius:6px}
.inline-add:hover{background:var(--primary-soft)}
.delete-icon{
  border:0;background:transparent;color:var(--muted-2);
  width:26px;height:26px;border-radius:5px;font-size:18px;line-height:1;
}
.delete-icon:hover{color:var(--danger);background:var(--danger-soft)}

.rank{width:46px;min-width:46px}
.product-col{width:150px;min-width:150px}
.qty-col{width:72px;min-width:72px}
.money-col{width:108px;min-width:108px}
.profit-col{width:118px;min-width:118px}
.compact-action{width:42px;min-width:42px}
.discount-group{background:#f2f4ff!important;color:#3f4ec0}
.discount-sub{background:#f7f8ff!important}
.rate-editor{display:flex;align-items:center;justify-content:center;gap:4px}
.rate-editor input{width:54px;height:26px;text-align:center;padding:2px 4px}
.sticky{position:sticky;z-index:4}
th.sticky{z-index:9}
.s0{left:0}.s1{left:46px}.s2{left:196px}.s3{left:268px}.s4{left:376px}.s5{left:484px}.s6{left:592px}.s7{left:700px}.s8{left:808px;box-shadow:5px 0 10px -8px rgba(16,24,40,.45)}

.fee-table{width:100%;min-width:820px}
.fee-name{width:270px}.fee-type{width:190px}.fee-value{width:190px}.fee-result{width:210px}
.inline-value{height:35px;display:flex;align-items:center}
.inline-value span{color:var(--muted);padding:0 7px}
.inline-value input{flex:1;min-width:0}

.summary-table{min-width:100%}
.summary-label{min-width:190px;text-align:left;padding-left:14px;font-weight:650;background:#fbfcfd}
.summary-value{min-width:150px;text-align:right;padding:0 12px;font-variant-numeric:tabular-nums}
.summary-original{background:#f4f6f9!important}
.summary-discount{background:#f2f4ff!important;color:#3f4ec0}
.summary-highlight td{background:#f7f8ff;font-weight:700}
.summary-profit td{font-size:14px;font-weight:800}
.summary-note{padding:8px 12px;border-top:1px solid var(--line);background:#fbfcfd;color:var(--muted);font-size:12px}

.cost-manager{height:680px;margin-top:10px}
.cost-table{width:100%;min-width:900px}
.cost-name{width:220px}.cost-spec{width:250px}.cost-value{width:160px}.cost-status{width:120px}

.empty-cell{padding:28px!important;text-align:center;color:var(--muted)}
.toast{
  position:fixed;right:18px;bottom:18px;background:#182230;color:#fff;
  padding:10px 14px;border-radius:8px;box-shadow:0 8px 28px rgba(25,33,61,.16);
  opacity:0;transform:translateY(8px);pointer-events:none;transition:.18s ease;z-index:100;
}
.toast.show{opacity:1;transform:translateY(0)}
@media(max-width:1100px){
  .content{padding:10px 10px 28px}
  .worksheet{grid-template-rows:620px 340px 440px}
}
