:root{--ink:#1f2933;--muted:#75808a;--line:#e4e9ec;--paper:#fff;--canvas:#f5f7f8;--teal:#147a86;--teal-dark:#0e626d;--orange:#ef6b32;--green:#2b906b;--warm:#b4683c;--shadow:0 16px 42px rgba(31,56,63,.08)}*{box-sizing:border-box}body{margin:0;background:var(--canvas);color:var(--ink);font-family:Inter,"Segoe UI","Microsoft YaHei",sans-serif;font-size:15px}.shell{min-height:100vh;display:flex}.sidebar{width:248px;background:#fff;border-right:1px solid var(--line);padding:28px 18px 20px;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:11px;padding:0 12px 35px}.brand-mark{background:var(--teal);color:#fff;border-radius:9px;width:36px;height:36px;display:grid;place-items:center;font-weight:800;font-size:20px}.brand strong{display:block;letter-spacing:.11em;font-size:15px}.brand small{display:block;color:var(--muted);font-size:10px;letter-spacing:.2em;margin-top:3px}.side-label,.eyebrow{font-size:11px;letter-spacing:.16em;color:#9aa4ab;font-weight:700}.side-label{padding:0 12px 10px}.sidebar nav{display:grid;gap:4px}.nav-item{border:0;background:transparent;color:#64717a;text-align:left;border-radius:11px;padding:13px 12px;display:flex;gap:10px;align-items:flex-start;cursor:pointer;font:inherit}.nav-item:hover{background:#f5f8f8}.nav-item.active{background:#eaf5f5;color:var(--teal-dark);font-weight:700}.nav-icon{width:22px;text-align:center;font-size:16px}.nav-item small{display:block;color:inherit;font-size:11px;font-weight:500;opacity:.75;margin-top:3px}.side-note{margin-top:auto;border-top:1px solid var(--line);padding:18px 12px 0;display:flex;gap:9px;align-items:flex-start}.status-dot{width:8px;height:8px;border-radius:50%;background:var(--green);margin-top:5px}.side-note strong,.side-note small{display:block}.side-note strong{font-size:12px}.side-note small{font-size:11px;color:var(--muted);margin-top:4px}.main{flex:1;min-width:0}.topbar{height:92px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 40px}.topbar h1{margin:6px 0 0;font-size:26px;letter-spacing:-.03em}.top-actions{display:flex;align-items:center;gap:14px}.muted{font-size:12px;color:var(--muted)}.content{padding:31px 40px 48px;max-width:1580px;margin:auto}.module-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-end;margin-bottom:22px}.module-head h2{margin:7px 0 0;font-size:25px;letter-spacing:-.03em}.module-head p{color:var(--muted);margin:8px 0 0;font-size:13px}.owner{display:inline-flex;align-items:center;gap:8px;color:var(--teal-dark);background:#eaf5f5;border-radius:999px;padding:7px 11px;font-size:12px;font-weight:700}.summary-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:20px}.summary-card{background:var(--paper);border:1px solid var(--line);border-radius:15px;padding:19px 20px;box-shadow:0 5px 14px rgba(31,56,63,.025)}.summary-card .label{font-size:12px;color:var(--muted)}.summary-card .value{font-size:24px;font-weight:750;letter-spacing:-.04em;margin-top:10px}.summary-card .hint{font-size:11px;color:var(--muted);margin-top:6px}.summary-card.total{border-top:3px solid var(--teal)}.summary-card.collected{border-top:3px solid var(--green)}.summary-card.outstanding{border-top:3px solid var(--orange)}.summary-card.review{border-top:3px solid #c9a24d}.panel{background:var(--paper);border:1px solid var(--line);border-radius:17px;box-shadow:var(--shadow);overflow:hidden}.toolbar{padding:18px 20px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:15px;flex-wrap:wrap}.toolbar-left,.toolbar-right{display:flex;gap:9px;align-items:center;flex-wrap:wrap}.search{height:38px;border:1px solid var(--line);border-radius:9px;display:flex;align-items:center;padding:0 11px;width:285px;background:#fbfcfc;color:#8a959d}.search input{border:0;outline:0;background:transparent;font:inherit;width:100%;padding-left:7px}.toolbar select{height:38px;border:1px solid var(--line);border-radius:9px;background:#fff;color:#47545d;padding:0 10px;font:inherit}.button{border:0;border-radius:9px;padding:10px 14px;font:inherit;font-size:13px;font-weight:700;cursor:pointer;white-space:nowrap}.button.primary{background:var(--teal);color:#fff}.button.primary:hover{background:var(--teal-dark)}.button.secondary{background:#f1f5f5;color:var(--teal-dark)}.button.ghost{background:transparent;color:var(--muted);border:1px solid var(--line)}.file-button{position:relative;overflow:hidden}.file-button input{position:absolute;inset:0;opacity:0;cursor:pointer}.table-meta{padding:14px 20px 8px;color:var(--muted);font-size:12px}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;min-width:1040px}th,td{padding:14px 16px;text-align:left;border-bottom:1px solid #eef1f2;white-space:nowrap}th{background:#fbfcfc;color:#7f8a91;font-size:11px;letter-spacing:.05em;font-weight:750;position:sticky;top:0;z-index:1}td{font-size:13px}tbody tr:hover{background:#fbfdfd}.amount{text-align:right;font-variant-numeric:tabular-nums;font-weight:700}.status{display:inline-flex;padding:5px 9px;border-radius:999px;font-size:11px;font-weight:700}.status.paid{background:#e7f5ee;color:#287a5e}.status.pending{background:#fff1e8;color:#a75a32}.status.review{background:#fff6df;color:#926b23}.status.neutral{background:#f0f3f4;color:#67747c}.row-actions{display:flex;gap:5px}.tiny-button{border:0;background:transparent;color:var(--teal);cursor:pointer;padding:4px 0;font:inherit;font-size:12px;font-weight:700}.empty{text-align:center!important;color:var(--muted);padding:54px!important}.modal{position:fixed;inset:0;background:rgba(24,39,45,.28);display:grid;place-items:center;padding:20px;z-index:5}.modal.hidden{display:none}.modal-card{background:#fff;width:min(640px,100%);max-height:90vh;overflow:auto;border-radius:17px;box-shadow:0 30px 80px rgba(26,42,47,.2);padding:25px}.modal-card.wide{width:min(980px,100%)}.modal-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;margin-bottom:20px}.modal-head h2{margin:7px 0 0;font-size:22px}.icon-button{border:0;background:#f2f5f5;width:32px;height:32px;border-radius:50%;font-size:20px;cursor:pointer;color:#738089}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.field{display:grid;gap:7px}.field.full{grid-column:1/-1}.field label{font-size:12px;font-weight:700;color:#52606a}.field input,.field select,.field textarea{width:100%;border:1px solid var(--line);border-radius:9px;padding:10px 11px;font:inherit;color:var(--ink);background:#fff}.field textarea{min-height:80px;resize:vertical}.modal-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:23px}.dropzone{border:1.5px dashed #b8cccf;background:#f7fbfb;min-height:235px;border-radius:15px;display:grid;place-items:center;text-align:center;align-content:center;gap:10px;color:#52666d}.drop-icon{width:44px;height:44px;border-radius:50%;background:#dff0f1;color:var(--teal);display:grid;place-items:center;font-size:24px}.dropzone span{color:var(--muted);font-size:12px}.dropzone label{position:relative;overflow:hidden}.dropzone input{position:absolute;inset:0;opacity:0}.import-summary{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:14px}.import-pill{background:#f2f6f6;border-radius:10px;padding:11px 13px;font-size:12px}.import-pill strong{font-size:18px;margin-right:5px}.import-pill.warning{background:#fff7df;color:#8a6828}.import-pill.danger{background:#fff0ed;color:#a64936}.preview-table-wrap{max-height:390px;overflow:auto;border:1px solid var(--line);border-radius:10px}.preview-table-wrap table{min-width:860px}.toast{position:fixed;right:24px;bottom:24px;z-index:8;background:#22333a;color:#fff;padding:13px 16px;border-radius:10px;box-shadow:0 12px 30px rgba(20,40,45,.2);opacity:0;transform:translateY(10px);pointer-events:none;transition:.2s}.toast.show{opacity:1;transform:translateY(0)}@media(max-width:1080px){.sidebar{width:215px}.topbar,.content{padding-left:24px;padding-right:24px}.summary-grid{grid-template-columns:repeat(2,1fr)}.toolbar-left,.toolbar-right{width:100%}.toolbar-right{justify-content:flex-end}}@media(max-width:720px){.shell{display:block}.sidebar{width:100%;padding:15px 15px 10px;border-right:0;border-bottom:1px solid var(--line)}.brand{padding:0 4px 15px}.side-label,.side-note{display:none}.sidebar nav{display:flex;overflow:auto}.nav-item{min-width:max-content;padding:9px 10px}.nav-item small{display:none}.topbar{height:78px;padding:0 18px}.topbar h1{font-size:21px}.top-actions .muted{display:none}.content{padding:22px 16px 32px}.module-head{align-items:flex-start;display:block}.owner{margin-top:15px}.summary-grid{gap:9px}.summary-card{padding:14px}.summary-card .value{font-size:19px}.search{width:100%}.toolbar select{flex:1}.toolbar-right{justify-content:stretch}.toolbar-right .button{flex:1}.form-grid{grid-template-columns:1fr}.field.full{grid-column:auto}.modal-card{padding:19px}}

/* Work-order → bill → charge hierarchy */
.topbar h1{font-size:22px;white-space:nowrap}.brand strong{letter-spacing:0;font-size:13px;white-space:nowrap}.brand small{letter-spacing:.08em}.toolbar-left{flex:1}.toolbar-right{justify-content:flex-end}.date-filter{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:11px;white-space:nowrap}.date-filter input{height:38px;border:1px solid var(--line);border-radius:9px;padding:0 8px;color:#47545d;font:inherit}.shipment-card{margin:8px 14px 12px;border:1px solid #e8edef;border-radius:13px;background:#fff;overflow:hidden;transition:border-color .15s,box-shadow .15s}.shipment-card:hover{border-color:#d5e1e3;box-shadow:0 6px 18px rgba(31,56,63,.04)}.shipment-row{display:grid;grid-template-columns:34px minmax(220px,1fr) 70px 150px minmax(130px,auto);gap:13px;align-items:center;padding:15px 17px}.disclosure{width:28px;height:28px;border:1px solid #e4eaec;border-radius:50%;background:#fff;color:#55717a;font-size:18px;line-height:1;cursor:pointer}.disclosure:hover{background:#eff7f7;color:var(--teal)}.shipment-main{border:0;background:transparent;text-align:left;display:grid;gap:5px;padding:0;cursor:pointer;color:inherit}.shipment-title{font-weight:750;font-size:15px;letter-spacing:.01em}.shipment-meta{font-size:11px;color:var(--muted)}.shipment-count,.shipment-total{display:grid;gap:3px}.shipment-count strong,.shipment-total strong{font-size:14px;font-variant-numeric:tabular-nums}.shipment-count span,.shipment-total small{font-size:10px;color:var(--muted)}.shipment-actions{display:flex;justify-content:flex-end;gap:14px}.bill-list{padding:0 15px 14px 62px;background:#fbfcfc}.bill-card{border:1px solid #e7edef;border-radius:11px;background:#fff;margin-top:9px;overflow:hidden}.bill-row{min-height:65px;padding:11px 13px;display:grid;grid-template-columns:30px minmax(180px,1fr) 140px auto minmax(190px,auto) auto;gap:12px;align-items:center}.bill-disclosure{width:25px;height:25px;font-size:16px}.bill-identity{display:grid;gap:5px;min-width:0}.bill-identity strong{overflow:hidden;text-overflow:ellipsis;font-size:13px}.bill-identity span{font-size:11px;color:var(--muted)}.bill-amount{display:grid;gap:3px;text-align:right}.bill-amount small{font-size:10px;color:var(--muted)}.bill-amount strong{font-size:13px;font-variant-numeric:tabular-nums}.bill-note{font-size:11px;color:var(--muted)}.charge-panel{border-top:1px solid #edf1f2;background:#fbfdfd;padding:14px 15px 15px 56px}.charge-heading{display:flex;justify-content:space-between;gap:15px;margin-bottom:8px;font-size:12px}.charge-heading span{color:var(--muted);font-size:11px}.charge-list{display:grid;gap:1px}.charge-row{display:grid;grid-template-columns:minmax(150px,1.2fr) 90px 125px 130px minmax(180px,1.3fr);gap:12px;align-items:center;padding:10px 8px;border-bottom:1px solid #edf1f2;font-size:11px}.charge-row:last-child{border-bottom:0}.charge-name{display:grid;gap:4px;min-width:0}.charge-name strong{font-size:12px}.charge-name small,.charge-row>small{font-size:10px;color:var(--muted)}.charge-row>strong{font-size:12px;text-align:right;font-variant-numeric:tabular-nums}.charge-row>span:not(.status):not(.link-basis){color:var(--muted)}.link-basis{font-size:10px;color:#76858b}.detail-empty{padding:15px 20px 16px 56px;color:var(--muted);font-size:11px;border-top:1px solid #edf1f2;background:#fbfdfd}.empty-state{padding:64px 20px;text-align:center;color:var(--muted);font-size:13px}.form-section{grid-column:1/-1;padding-top:7px;margin-top:4px;border-top:1px solid #edf1f2;color:#718087;font-size:11px;font-weight:750;letter-spacing:.04em}.form-section:first-child{border-top:0;margin-top:0;padding-top:0}.field input[readonly]{background:#f6f8f8;color:#75808a}.button:disabled{opacity:.45;cursor:not-allowed}
@media(max-width:1120px){.topbar h1{font-size:19px}.toolbar-right{justify-content:flex-start}.bill-row{grid-template-columns:28px minmax(140px,1fr) 125px auto auto;}.bill-note{grid-column:2/4}.charge-row{grid-template-columns:minmax(130px,1fr) 75px 110px 115px minmax(160px,1.2fr)}}
@media(max-width:720px){.topbar h1{font-size:16px;white-space:normal;line-height:1.25}.brand strong{font-size:12px}.toolbar{padding:14px}.toolbar-left,.toolbar-right{display:grid;grid-template-columns:1fr 1fr;gap:8px}.search{grid-column:1/-1;width:100%}.date-filter{justify-content:space-between;font-size:10px}.date-filter input{width:125px}.toolbar-right .button,.toolbar-right .file-button{min-height:38px;display:flex;align-items:center;justify-content:center;padding:8px}.shipment-card{margin:8px}.shipment-row{grid-template-columns:30px minmax(0,1fr) 55px;gap:9px;padding:13px}.shipment-count{grid-column:3;grid-row:1}.shipment-total{grid-column:2;grid-row:2}.shipment-actions{grid-column:2/4;grid-row:3;justify-content:flex-start}.shipment-meta{line-height:1.4}.bill-list{padding:0 8px 10px 24px}.bill-row{grid-template-columns:26px minmax(0,1fr) auto;gap:8px;padding:10px}.bill-identity{grid-column:2}.bill-amount{grid-column:3;grid-row:1;text-align:right}.bill-row>.status,.bill-row>div:nth-child(4){grid-column:2}.bill-note{grid-column:2/4}.bill-row>.row-actions{grid-column:2/4}.charge-panel{padding:12px}.charge-heading{display:grid}.charge-row{grid-template-columns:minmax(0,1fr) auto;gap:7px;padding:10px 4px}.charge-row>.charge-name{grid-column:1/-1}.charge-row>.status,.charge-row>.link-basis{grid-column:1/-1}.charge-row>strong{text-align:right}.detail-empty{padding:14px}.form-grid{grid-template-columns:1fr}.form-section{grid-column:auto}.modal-card.wide{padding:16px}}

.bill-identity .status{display:inline-block;width:max-content;max-width:100%;white-space:normal;padding:4px 7px;border-radius:8px;background:#fff3ec;color:#a95a33;border:1px solid #f5d8ca;line-height:1.4}

.shipment-main .status{width:max-content;max-width:100%;white-space:normal;font-size:10px;color:#a95a33;background:#fff3ec;border:1px solid #f5d8ca;padding:4px 7px;border-radius:8px;line-height:1.4}

.invoice-upload{display:grid;gap:7px;margin-top:18px;padding:15px;border:1px dashed #c8d9dc;border-radius:11px;background:#f8fbfb}.invoice-upload label{font-size:12px;font-weight:700;color:#52606a}.invoice-upload span{font-size:11px;color:var(--muted)}.invoice-upload input{width:100%;border:1px solid var(--line);border-radius:8px;padding:9px;background:#fff;color:#52606a;font:inherit;font-size:12px}.invoice-link{display:inline-flex;margin:5px 0 0 9px;color:var(--teal-dark);font-size:11px;font-weight:700;text-decoration:none}.invoice-link:hover{text-decoration:underline}
@media(max-width:720px){.invoice-upload{margin-top:12px}}

.invoice-upload.hidden{display:none}

.invoice-missing{display:inline-flex;margin:5px 0 0 9px;color:#9aa4ab;font-size:11px}.tiny-button:disabled{color:#a0a9ae;cursor:not-allowed;opacity:.8}.shipment-actions{flex-wrap:wrap}
