:root{--bg:#0f1110;--panel:#191c1a;--panel2:#222623;--line:#343a36;--text:#f5f7f5;--muted:#9eaaa3;--green:#38c982;--blue:#7dbbfa;--red:#ff6b64;--amber:#f4b64d}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:"Microsoft YaHei",system-ui,sans-serif}button,input,select,textarea{font:inherit}button{cursor:pointer}.shell{display:grid;grid-template-columns:248px 1fr;height:100vh}.side{background:#171a18;border-right:1px solid var(--line);padding:22px 16px 80px 16px;position:sticky;top:0;height:100vh;overflow-y:auto;overflow-x:hidden}.identity{display:flex;gap:12px;align-items:center;margin:0 8px 26px}.icon{width:46px;height:46px;border-radius:13px;background:var(--blue);color:#08203c;display:grid;place-items:center;font-size:22px;font-weight:900}.identity strong{display:block;font-size:18px}.identity small,.muted{color:var(--muted)}.nav{display:grid;gap:6px}.nav button,.nav a{border:0;background:transparent;color:#aeb8b2;text-align:left;padding:12px 14px;border-radius:10px;text-decoration:none}.nav button.active,.nav a.active{background:var(--blue);color:#0b1a25;font-weight:800}.side-foot{position:sticky;bottom:0;left:0;right:0;padding:14px 4px;background:#171a18;border-top:1px solid var(--line);z-index:1;flex-shrink:0}main{padding:28px 34px 60px;min-width:0}.top{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;margin-bottom:25px}.top h1{font-size:32px;margin:0 0 6px}.actions{display:flex;gap:10px;flex-wrap:wrap}.btn{border:1px solid var(--line);background:#292e2b;color:#fff;border-radius:10px;padding:10px 15px}.btn.primary{background:#f4f6f5;color:#111;border-color:#f4f6f5;font-weight:800}.btn.blue{background:var(--blue);color:#0a1720;border:0;font-weight:800}.btn.danger{color:#ffc2be;border-color:#663d3b}.grid{display:grid;gap:18px}.cards{grid-template-columns:repeat(4,minmax(150px,1fr));margin-bottom:20px}.card,.panel{background:var(--panel);border:1px solid var(--line);border-radius:18px}.card{padding:20px}.card b{display:block;font-size:29px;margin:9px 0 4px}.panel{padding:20px;margin-bottom:18px}.panel h2{margin:0;font-size:20px}.panel-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;gap:16px}.view{display:none}.view.active{display:block}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;min-width:760px}th,td{text-align:left;padding:12px 10px;border-bottom:1px solid #2d322f;vertical-align:top}th{color:#aeb8b2;font-size:13px}td{font-size:14px}.pill{display:inline-block;padding:4px 9px;border-radius:999px;background:#173d59;color:#9cd2ff;font-size:12px}.pill.ok{background:#123b2b;color:#80e1b4}.pill.warn{background:#49391b;color:#ffd37b}.pill.bad{background:#4b2725;color:#ffaaa5}.empty{padding:38px;text-align:center;color:var(--muted)}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(180px,1fr));gap:14px}.field{display:grid;gap:7px;color:#cfd6d2}.field.wide{grid-column:1/-1}input,select,textarea{width:100%;background:#292e2b;border:1px solid #3a413d;color:#fff;border-radius:9px;padding:10px}textarea{resize:vertical}dialog{width:min(960px,calc(100% - 30px));border:1px solid var(--line);background:#151816;color:#fff;border-radius:18px;padding:0}dialog::backdrop{background:rgba(0,0,0,.72)}.dialog-body{padding:24px}.dialog-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.dialog-head h2{margin:0}.line-row{display:grid;grid-template-columns:1.25fr 1fr 1.7fr .75fr auto;gap:8px;margin:8px 0;align-items:end}.money{font-variant-numeric:tabular-nums}.split{display:grid;grid-template-columns:340px 1fr;gap:18px}.list button{width:100%;text-align:left;background:transparent;color:#fff;border:0;border-bottom:1px solid var(--line);padding:14px 8px}.list button.active{background:#242a26}.address{padding:14px 0;border-bottom:1px solid var(--line)}.address b{display:block;margin-bottom:7px}.print-only{display:none}.notice{padding:12px 14px;border-radius:10px;background:#263229;color:#bce9ce;margin-bottom:15px}.login-wrap{min-height:100vh;display:grid;place-items:center;background:#101312}.login-card{width:min(430px,calc(100% - 30px));background:#1b1f1c;border:1px solid #343a36;border-radius:20px;padding:34px}.login-card h1{margin:0 0 8px}.login-card .field{margin-top:15px}.login-card .btn{width:100%;margin-top:20px}.login-error{display:none;color:#ffaaa5;margin-top:14px}@media(max-width:900px){.shell{grid-template-columns:1fr}/* removed: .side{position:relative;height:auto} */.side-foot{position:static;margin-top:20px}.nav{grid-template-columns:repeat(2,1fr)}main{padding:22px 16px}.cards{grid-template-columns:repeat(2,1fr)}.split{grid-template-columns:1fr}.line-row{grid-template-columns:1fr 1fr}.line-row>*:nth-child(3){grid-column:1/-1}}@media print{body{background:#fff;color:#000}.side,.top,.no-print,.btn{display:none!important}main{padding:0}.shell{display:block}.view{display:none!important}.print-only{display:block!important}.panel{border:0;background:#fff;padding:0}.print-sheet{font-family:"SimSun",serif;width:190mm;margin:auto}.print-sheet h1{text-align:center}.print-sheet table{min-width:0}.print-sheet th,.print-sheet td{border:1px solid #333;color:#000}.print-sheet .sign{display:flex;justify-content:space-between;margin-top:28px}}
:root{}
.brand-logo{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;background:#e5252a;color:#fff;font-weight:900;font-size:16px;letter-spacing:-2px;box-shadow:0 0 0 2px rgba(255,255,255,.08)}
.delivery-item-row{display:grid;grid-template-columns:minmax(260px,1fr) 180px auto;gap:10px;margin:9px 0;align-items:end;padding:12px;background:#202421;border:1px solid #343a36;border-radius:12px}
@media(max-width:700px){.delivery-item-row{grid-template-columns:1fr}.delivery-item-row .btn{width:100%}}
.delivery-item-row{grid-template-columns:minmax(210px,1.4fr) minmax(95px,.65fr) minmax(75px,.5fr) minmax(95px,.65fr) minmax(180px,1fr) auto}
@media print{.delivery-print{font-family:"SimSun","宋体",serif}.delivery-print h1{font-size:24px;margin:10mm 0 7mm}.delivery-info,.delivery-products{width:100%;table-layout:fixed;border-collapse:collapse}.delivery-info{margin-bottom:5mm}.delivery-info th{width:12%;font-weight:700;text-align:center}.delivery-info td{height:12mm;text-align:center}.delivery-info th,.delivery-info td,.delivery-products th,.delivery-products td{border:1px solid #000;padding:2.5mm 2mm;color:#000}.delivery-products th{text-align:center;font-weight:400;height:18mm}.delivery-products td{text-align:center;height:18mm}.delivery-products th:nth-child(1){width:8%}.delivery-products th:nth-child(2){width:7%}.delivery-products th:nth-child(3){width:14%}.delivery-products th:nth-child(4){width:22%}.delivery-products th:nth-child(5){width:14%}.delivery-products th:nth-child(6){width:8%}.delivery-products th:nth-child(7){width:9%}.delivery-products th:nth-child(8){width:18%}.product-image-cell{min-height:18mm}.delivery-note{margin-top:5mm}}
@media(max-width:700px){.delivery-item-row{grid-template-columns:1fr}}
.two{grid-template-columns:1.15fr .85fr}.three{grid-template-columns:repeat(3,minmax(260px,1fr))}.compact{grid-template-columns:repeat(4,minmax(140px,1fr))}.compact .card{padding:14px}.compact .card b{font-size:23px}.filterbar,.account-tabs{display:flex;gap:10px;flex-wrap:wrap;margin:0 0 16px}.filterbar input{max-width:340px}.filterbar select{max-width:190px}.btn.mini{padding:5px 8px;border-radius:7px;font-size:12px;margin:2px}.btn:disabled{opacity:.35;cursor:not-allowed}.section-head{margin-top:22px}.actions.end{justify-content:flex-end;margin-top:22px}.address .btn{float:right;margin-top:-24px}.settle-row{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-top:8px;padding:8px;background:#222824;border-radius:8px}.settle-row .btn{float:none;margin:0}.line-row{grid-template-columns:1.2fr .9fr 1.6fr .7fr auto}.line-row .invoice-picker{grid-column:1/-1;background:#202421;border:1px solid var(--line);border-radius:10px;padding:10px}.invoice-picker summary{cursor:pointer;color:#cfe1d7}.invoice-options{display:grid;gap:6px;max-height:190px;overflow:auto;margin-top:10px}.invoice-option{display:flex;gap:8px;align-items:center;padding:8px;border-radius:8px;background:#292e2b}.invoice-option input{width:auto}.order-item-row{display:grid;grid-template-columns:1.5fr .6fr .8fr auto;gap:10px;align-items:end;margin:8px 0;padding:10px;background:#202421;border:1px solid var(--line);border-radius:10px}.print-fields{display:grid;grid-template-columns:1.3fr 1fr .9fr;gap:3mm 6mm;margin:6mm 0 3mm}.print-fields .span2{grid-column:span 2}.print-meta{text-align:right}.contract-no{text-align:right}.print-sheet small{display:block}.total-row td{font-weight:700}.screen-note{color:inherit}@media(max-width:1100px){.three{grid-template-columns:1fr}.two{grid-template-columns:1fr}}@media(max-width:700px){.order-item-row,.line-row{grid-template-columns:1fr}.line-row .invoice-picker{grid-column:auto}.print-fields{grid-template-columns:1fr}}

@page{size:A4 portrait;margin:12mm 12mm 12mm} @page delivery{size:A4 portrait;margin:10mm}
@media print{
  html,body{width:auto!important;height:auto!important;min-height:0!important;margin:0!important;padding:0!important;overflow:visible!important;background:#fff!important;color:#000!important}
  body *{visibility:hidden!important}.shell,main,#printArea,#printArea *{visibility:visible!important}
  .side,.top,.view,dialog,.no-print,.btn{display:none!important}
  .shell{display:block!important;width:auto!important;height:auto!important;min-height:0!important;margin:0!important;padding:0!important}
  main{display:block!important;width:auto!important;height:auto!important;min-height:0!important;margin:0!important;padding:0!important;overflow:visible!important}
  #printArea{display:block!important;position:static!important;width:auto!important;height:auto!important;min-height:0!important;margin:0!important;padding:0!important;overflow:visible!important}
  .print-sheet{display:block!important;box-sizing:border-box!important;width:100%!important;max-width:186mm!important;height:auto!important;min-height:0!important;margin:0 auto!important;padding:0!important;background:#fff!important;color:#000!important;font-family:"SimSun","宋体",serif;font-size:11pt;page-break-after:auto!important;break-after:auto!important}
  .print-sheet h1{font-size:22pt;margin:5mm 0;text-align:center}.print-sheet table{width:100%!important;min-width:0!important;border-collapse:collapse;table-layout:fixed;page-break-inside:auto}.print-sheet thead{display:table-header-group}.print-sheet tr{break-inside:avoid;page-break-inside:avoid}.print-sheet th,.print-sheet td{border:1px solid #858b92!important;color:#000!important;padding:2.5mm 2mm;background:#fff!important}.print-sheet th{background:#f3f4f5!important;text-align:center}.print-sheet .money{text-align:right}.print-sheet .sign{display:grid;grid-template-columns:repeat(4,1fr);gap:7mm;margin-top:4mm;break-inside:avoid;page-break-inside:avoid}.print-sheet .sign span{text-align:center}.print-meta{font-size:10pt;margin-bottom:2mm}.print-fields{font-size:10.5pt}.reimbursement{font-family:"Microsoft YaHei","SimSun",sans-serif}.reimbursement .total-row td:first-child{text-align:right}.delivery-print{page:delivery;max-width:186mm!important}.delivery-print h1{margin:2mm 0 4mm}.delivery-info{margin-bottom:4mm}.contract-total td{font-size:12pt;background:#fff!important;border-top:2px solid #333!important}.screen-note{display:none!important}
}
.delivery-check-cell{width:34px!important;min-width:34px!important;text-align:center!important}.delivery-check-cell input,.delivery-row-check{width:16px!important;height:16px!important;margin:0!important;accent-color:var(--blue)}#batchPrintDeliveries{white-space:nowrap}

/* v3.9.3：表单内联操作与产品图片。 */
.field-with-action{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:stretch}.field-with-action .btn{white-space:nowrap}.image-editor{display:grid;grid-template-columns:minmax(0,1fr) auto 84px;gap:8px;align-items:center}.product-image-preview{display:none;width:84px;height:64px;object-fit:contain;border:1px solid var(--line);border-radius:8px;background:#fff}.compact-dialog{max-width:720px}.product-thumb{width:42px;height:42px;object-fit:cover;border-radius:6px;border:1px solid var(--line)}.product-name-cell{display:flex;align-items:center;gap:8px;min-width:150px}
@media(max-width:700px){.field-with-action,.image-editor{grid-template-columns:1fr}.product-image-preview{width:100%;height:140px}}

/* 费用单的财务科目只在逐条明细中选择，避免上下重复。 */
#paymentForm label:has(>select[name="financeCategory"]){display:none}

.collection-line{grid-template-columns:minmax(260px,1fr) minmax(150px,.45fr) auto}
@media print{
  .reimbursement{max-width:186mm!important;font-size:10.5pt!important}
  .reimbursement table{table-layout:fixed!important;border-spacing:0!important}
  .reimbursement th,.reimbursement td{box-sizing:border-box!important;border:1px solid #6f7780!important;padding:2.2mm 2mm!important;line-height:1.45!important;white-space:normal!important;overflow-wrap:anywhere!important;word-break:break-word!important}
  .reimbursement th{font-weight:700!important;background:#f4f5f6!important;text-align:center!important}
  .reimbursement td.serial{text-align:center!important}
  .reimbursement td.summary{text-align:left!important}
  .reimbursement td.money{text-align:right!important;white-space:nowrap!important}
  .reimbursement .total-row td{padding-top:2mm!important;padding-bottom:2mm!important}
}

/* v3.7 基础资料卡：操作按钮独立右栏，避免覆盖主体/账户说明文字 */
.address{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:12px;align-items:start}
.address>b,.address>span{grid-column:1}
.address>.actions{grid-column:2;grid-row:1/span 2;justify-content:flex-end;align-self:center}
.address .btn{float:none;margin:2px}
.bank-total-card{grid-column:span 2}.account-balance-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 16px;margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}.account-balance-line{display:flex;justify-content:space-between;gap:8px;font-size:13px}.account-balance-line em{font-style:normal;color:var(--muted)}.account-balance-line strong{font-variant-numeric:tabular-nums}
@media(max-width:700px){.bank-total-card{grid-column:1/-1}.account-balance-list{grid-template-columns:1fr}}

/* v3.8 桌面紧凑模式：等同浏览器约 80% 的信息密度，打印不受影响 */
@media screen and (min-width:901px){
  body{font-size:13px}.shell{grid-template-columns:210px 1fr}.side{padding:16px 12px 64px}.identity{margin:0 5px 18px;gap:9px}.brand-logo,.icon{width:39px;height:39px;font-size:14px}.identity strong{font-size:16px}.nav{gap:4px}.nav button,.nav a{padding:9px 11px}.side-foot{padding:10px 2px}main{padding:20px 25px 44px}.top{margin-bottom:18px}.top h1{font-size:27px}.btn{padding:7px 11px;border-radius:8px}.btn.mini{padding:4px 7px;font-size:11px}.grid{gap:13px}.cards{margin-bottom:15px}.card{padding:15px}.card b{font-size:24px;margin:6px 0 2px}.panel{padding:15px;margin-bottom:14px;border-radius:14px}.panel h2{font-size:18px}.panel-head{margin-bottom:12px}.form-grid{gap:10px}.field{gap:5px}input,select,textarea{padding:8px;border-radius:7px}th,td{padding:9px 8px}th{font-size:12px}td{font-size:13px}.dialog-body{padding:18px}.dialog-head{margin-bottom:14px}.line-row{gap:6px;margin:6px 0}.delivery-item-row{padding:9px;gap:7px}.split{grid-template-columns:290px 1fr;gap:14px}.list button{padding:10px 7px}.address{padding:10px 0}.empty{padding:26px}}
@media print{
  .delivery-products th:nth-child(1){width:6%!important}.delivery-products th:nth-child(2){width:14%!important}.delivery-products th:nth-child(3){width:26%!important}.delivery-products th:nth-child(4){width:7%!important}.delivery-products th:nth-child(5){width:12%!important}.delivery-products th:nth-child(6){width:7%!important}.delivery-products th:nth-child(7){width:9%!important}.delivery-products th:nth-child(8){width:19%!important}.delivery-products td{overflow-wrap:anywhere!important;word-break:break-word!important;font-size:10pt!important}
}

.link-button{appearance:none;border:0;background:transparent;color:inherit;padding:0;cursor:pointer;text-align:left;text-decoration:underline;text-decoration-color:var(--blue);text-underline-offset:3px}.detail-section{margin-top:18px}.detail-section h3{margin:0 0 8px}
.stat-button{width:100%;color:inherit;text-align:left;cursor:pointer;font:inherit}.stat-button:hover{border-color:var(--blue);transform:translateY(-1px)}.stat-button:focus-visible{outline:2px solid var(--blue);outline-offset:2px}.delivery-receipt-actions{min-width:150px}.delivery-receipt-actions .btn{white-space:nowrap}
@page delivery{size:A4 portrait;margin:12mm 18mm}
@media print{
  .delivery-page{page:delivery;max-width:174mm!important;font-size:8.7pt!important;break-after:page!important;page-break-after:always!important}
  .delivery-page:last-child{break-after:auto!important;page-break-after:auto!important}
  .delivery-print h1{font-size:18pt!important;line-height:1.1!important;margin:0 0 1.5mm!important}
  .delivery-print .contract-no{font-size:8.5pt!important;line-height:1.1!important;margin:0 0 1.5mm!important}
  .delivery-info{margin-bottom:2mm!important}.delivery-info th,.delivery-info td{height:auto!important;min-height:0!important;padding:.8mm 1mm!important;line-height:1.1!important;vertical-align:middle!important;font-size:8.3pt!important}.delivery-info th{width:9%!important;white-space:nowrap!important}.delivery-info td{overflow-wrap:anywhere!important}
  .delivery-products th,.delivery-products td{height:auto!important;min-height:0!important;padding:.8mm 1mm!important;line-height:1.12!important;vertical-align:middle!important;text-align:center!important;font-size:8.5pt!important}
  .delivery-products tbody tr{height:6.4mm!important}.delivery-products tbody tr.blank-row{height:6mm!important}.delivery-products th{height:5.6mm!important;font-weight:700!important}
  .delivery-products th:nth-child(1){width:5%!important}.delivery-products th:nth-child(2){width:14%!important}.delivery-products th:nth-child(3){width:27%!important}.delivery-products th:nth-child(4){width:6%!important}.delivery-products th:nth-child(5){width:11%!important}.delivery-products th:nth-child(6){width:7%!important}.delivery-products th:nth-child(7){width:9%!important}.delivery-products th:nth-child(8){width:21%!important}
  .delivery-print .sign{grid-template-columns:repeat(3,1fr)!important;font-size:9pt!important;margin-top:10.5mm!important}.delivery-note{font-size:8.5pt!important;margin:1.5mm 0!important}
}

/* v3.9.7 发货单：长地址自动换行，单元格随内容增高；文字统一上下左右居中 */
@media print{
  .delivery-page{width:100%!important;max-width:174mm!important;margin:0 auto!important;padding:0!important}
  .delivery-info,.delivery-products{width:100%!important;table-layout:fixed!important;border-collapse:collapse!important}
  .delivery-info th,.delivery-info td{
    height:auto!important;min-height:0!important;padding:1.1mm 1.2mm!important;
    line-height:1.35!important;text-align:center!important;vertical-align:middle!important;
    white-space:normal!important;overflow-wrap:anywhere!important;word-break:break-word!important
  }
  .delivery-products th,.delivery-products td{
    height:auto!important;min-height:0!important;padding:1mm!important;
    line-height:1.35!important;text-align:center!important;vertical-align:middle!important;
    white-space:normal!important;overflow-wrap:anywhere!important;word-break:break-word!important
  }
  .delivery-products tbody tr,.delivery-products tbody tr.blank-row{height:6.8mm!important}
}
.delivery-item-row{grid-template-columns:minmax(240px,1.6fr) minmax(95px,.65fr) minmax(75px,.5fr) minmax(95px,.65fr) auto}.delivery-tracking-cell{min-width:170px}.delivery-tracking-cell input{min-width:150px;padding:6px 8px}
.report-category-table .category-amount{text-align:right;font-variant-numeric:tabular-nums}.report-reconciled{border-color:#286d4c!important;color:#9de1ba}.report-unreconciled{border-color:#8b413d!important;color:#ffaaa5}
.project-finance-link,.report-detail-link{cursor:pointer;text-decoration:underline;text-decoration-color:#75b6ee;text-underline-offset:3px}.project-finance-link:hover,.report-detail-link:hover{background:#21332d}.subtotal-row td{background:#1b2420;font-weight:700}.loading{opacity:.55;pointer-events:none}

/* v3.10.1 */
.hidden{display:none!important}.collection-project-finder{margin:8px 0 12px}.collection-line{grid-template-columns:minmax(150px,.8fr) minmax(260px,1.5fr) minmax(140px,.7fr) auto}

.brand-logo-img{width:46px!important;height:46px!important;min-width:46px!important;max-width:46px!important;min-height:46px!important;max-height:46px!important;border-radius:50%;object-fit:cover;display:block;flex:0 0 46px!important}.identity small{display:block;white-space:nowrap;margin-top:4px}

.report-category-table td[rowspan]{vertical-align:top;font-weight:700;background:rgba(255,255,255,.025)}
.report-category-table .subtotal-row td{font-weight:700;background:rgba(47,125,91,.09)}
.contract-print-v3103{font-size:11.5px;line-height:1.48}
.contract-print-v3103 h1{text-align:center;font-size:26px;letter-spacing:6px;margin:0 0 5px}
.contract-print-v3103 .contract-meta{display:grid;grid-template-columns:1fr 1fr;gap:0 18px;margin:7px 0}
.contract-print-v3103 h3{font-size:12px;margin:7px 0 1px}
.contract-print-v3103 th,.contract-print-v3103 td{padding:4px 5px}
