*{box-sizing:border-box}body{margin:0;background:#f4f6f8;color:#182a30;font:14px 'Segoe UI','Microsoft YaHei',sans-serif}button,input,select{font:inherit}button{cursor:pointer}aside{width:226px;background:#102e32;color:#b2c9c8;position:fixed;inset:0 auto 0 0;padding:32px 20px}.brand{font-size:27px;color:white;font-weight:700;letter-spacing:3px;margin-bottom:46px}.brand span{display:block;font-size:10px;letter-spacing:3px;margin-top:8px;color:#8faeae}aside small{font-size:11px;color:#819e9e}nav{margin-top:15px;display:grid;gap:8px}nav button{background:none;border:0;text-align:left;padding:15px;color:#b2c9c8;border-radius:8px}nav button.active{background:#235052;color:#fff}.aside-bottom{position:absolute;bottom:30px;line-height:2;font-size:12px;color:#88c3ab}main{margin-left:226px}header{height:80px;background:white;border-bottom:1px solid #e5eaea;display:flex;align-items:center;justify-content:space-between;padding:0 38px;color:#849294;font-size:12px}header b{color:#415456;font-weight:500}.avatar{color:#526366}.avatar span{background:#e6efeb;border-radius:50%;padding:9px;margin-left:12px}section{padding:32px 38px;max-width:1600px;margin:auto}h1{font-size:27px;margin:0 0 9px;letter-spacing:-1px}h2{font-size:16px;margin:0}p{color:#859294;line-height:1.7}.title{display:flex;align-items:center;justify-content:space-between;margin-bottom:26px}.title p{margin:0}.btn{border:1px solid #dce4e3;background:white;border-radius:6px;padding:10px 16px;color:#36504e}.primary{background:#176a57;color:white;border-color:#176a57}.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-bottom:24px}.card,.panel{background:white;border:1px solid #e4e9e8;border-radius:10px;padding:23px}.card label{color:#7a8c8c;font-size:12px}.card strong{display:block;font-size:30px;margin:16px 0 9px;font-weight:600}.card small{color:#628c7b}.grid{display:grid;grid-template-columns:1.6fr 1fr;gap:24px;margin-bottom:24px}.panel-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.muted{color:#8b9999;font-size:12px}table{width:100%;border-collapse:collapse;text-align:left}th{color:#879594;font-weight:400;font-size:12px;background:#f8faf9}td,th{padding:15px 12px;border-bottom:1px solid #edf0ef}td{font-size:13px}td small{display:block;color:#99a5a4;margin-top:4px}.badge{display:inline-block;background:#e8f4ed;color:#328060;padding:5px 9px;border-radius:5px;font-size:11px}.badge.busy{background:#fff2de;color:#b18235}.badge.repair{background:#feeceb;color:#b76d63}.bars{height:210px;display:flex;gap:18px;align-items:end;padding-top:25px}.bar-wrap{flex:1;text-align:center;color:#8b9999;font-size:11px}.bar{background:#4b9983;border-radius:4px 4px 0 0;margin-bottom:12px;min-height:4px}.bar-wrap:nth-child(even) .bar{background:#a3c9ba}.rank{margin:22px 0}.rank div{display:flex;justify-content:space-between;margin-bottom:10px}.track{height:7px;background:#eef3f0;border-radius:8px}.track i{display:block;height:100%;background:#418c75;border-radius:8px}.toolbar{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:22px}input,select{padding:10px 12px;border:1px solid #dae3df;border-radius:6px;background:white;color:#29423e}input:focus,select:focus{outline:2px solid #9bcebc}input[type=number]{width:82px}label.field{display:grid;gap:8px;color:#71847f;font-size:12px}.form{display:flex;gap:18px;flex-wrap:wrap;margin-bottom:24px}.total{text-align:right;padding:25px;font-size:18px}.total strong{font-size:28px;color:#176a57;margin-left:20px}.empty{text-align:center;padding:40px;color:#8b9999}.scan{font-size:21px;width:100%;padding:20px;margin:18px 0}.notice{padding:14px 18px;background:#edf4f0;color:#617d70;border-radius:6px;font-size:12px;line-height:1.8}.link{border:0;background:none;color:#278369;padding:5px}.danger{color:#b1685c}.logs{line-height:2.5;color:#637d73}#toast{position:fixed;bottom:30px;left:55%;background:#173c32;color:white;padding:14px 25px;border-radius:8px;display:none}dialog{border:0;border-radius:12px;padding:30px;max-width:500px}dialog::backdrop{background:#102e3266}@media(max-width:1000px){aside{width:185px}main{margin-left:185px}section{padding:25px 20px}.cards{grid-template-columns:repeat(2,1fr)}.grid{grid-template-columns:1fr}.panel{overflow:auto}}@media(max-width:650px){aside{position:static;width:100%;padding:18px}.brand{margin:0;font-size:20px}.brand span,aside>small,.aside-bottom{display:none}nav{display:flex;overflow:auto;gap:0}nav button{white-space:nowrap;font-size:12px;padding:12px}main{margin:0}header{height:55px;padding:15px}.title{gap:12px}.card{padding:16px}.card strong{font-size:24px}}@media print{aside,header,.toolbar,.title button,.link,.notice{display:none!important}main{margin:0}section{padding:0}.panel{border:0}body{background:white}}

.brand{font-size:22px;letter-spacing:0}.brand span{letter-spacing:2px}textarea:focus{outline:2px solid #9bcebc}

#dialog{width:min(760px,94vw);max-width:760px;max-height:90vh;overflow:auto}.customer-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.customer-form-grid input,.customer-form-grid select{width:100%}.customer-notes{grid-column:1/-1}.customer-notes textarea{padding:12px;border:1px solid #dae3df;border-radius:6px;min-height:95px;font:inherit}.customer-details{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:24px}.customer-details p{margin:6px 0;white-space:pre-wrap;overflow-wrap:anywhere;color:#36504e}.customer-history{overflow:auto;max-height:300px}#customer-search{min-width:290px}@media(max-width:650px){.customer-form-grid,.customer-details{grid-template-columns:1fr}#customer-search{min-width:0;width:100%}}

.order-open{font-weight:600;text-align:left;padding:0}.order-metadata{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-top:20px}.order-metadata p{color:#36504e;margin:7px 0;overflow-wrap:anywhere}.order-lines{overflow:auto}.order-totals{max-width:340px;margin:24px 0 0 auto}.order-totals>div{display:flex;justify-content:space-between;padding:10px 0}.order-grand{border-top:1px solid #dce4e3;font-size:18px}.order-grand strong{color:#176a57;font-size:26px}@media(max-width:700px){.order-metadata{grid-template-columns:1fr 1fr}}

button:disabled,input:disabled{cursor:not-allowed;opacity:.55}#scan-order{width:100%;max-width:100%}

.delete-btn{background:#b4483e;border-color:#b4483e;color:white}

.customer-picker{position:relative;display:grid;gap:8px;min-width:260px;max-width:100%;color:#71847f;font-size:12px}.customer-matches{position:absolute;left:0;top:67px;width:380px;max-width:80vw;background:#fff;border:1px solid #dce4e3;border-radius:8px;box-shadow:0 8px 25px #153e3622;z-index:15;max-height:360px;overflow:auto}.customer-matches[hidden]{display:none}.customer-match{display:block;width:100%;padding:13px;text-align:left;border:0;border-bottom:1px solid #edf0ef;background:white;color:#29423e}.customer-match:hover,.customer-match:focus{background:#edf5f0}.customer-match small{display:block;margin-top:6px;color:#7b8c87}.customer-match-footer{padding:10px;color:#84948c}

.quantity-unit{display:inline-block;margin-left:6px;color:#71847f;font-size:12px}

.inventory-workspace .toolbar { flex-wrap: wrap; }
.inventory-layout { display: grid; gap: 18px; }
.inventory-layout.with-groups { grid-template-columns: minmax(155px, 210px) minmax(0, 1fr); }
.inventory-groups { display: flex; flex-direction: column; gap: 4px; max-height: 56vh; overflow: auto; padding-right: 8px; border-right: 1px solid #e1e8e4; }
.inventory-group { display: flex; justify-content: space-between; gap: 8px; text-align: left; width: 100%; padding: 9px 10px; border: 0; border-radius: 6px; background: transparent; color: inherit; cursor: pointer; }
.inventory-group:hover, .inventory-group[aria-pressed="true"], .inventory-results tr.selected { background: #e8f1ec; }
.inventory-group small { margin: 0; flex: none; }
.inventory-results { min-width: 0; }
.inventory-result-title, .inventory-detail-head { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; }
.inventory-result-title { padding: 8px 0 12px; }
.inventory-result-title span { color: #596962; font-size: 13px; }
.inventory-table-scroll { max-height: 52vh; overflow: auto; }
.inventory-table-scroll thead th { position: sticky; top: 0; background: #f1f5f2; z-index: 1; white-space: nowrap; }
.inventory-model { text-align: left; font-weight: 600; }
.inventory-detail { border-top: 1px solid #dce7e0; margin-top: 14px; padding-top: 14px; overflow: auto; }
.inventory-detail h2 { margin: 0; font-size: 17px; }
@media (max-width: 760px) {
 .inventory-layout.with-groups { grid-template-columns: minmax(0, 1fr); }
 .inventory-groups { flex-direction: row; border-right: 0; padding: 0 0 6px; }
 .inventory-group { width: auto; flex: none; }
}
.quote-workspace { display:grid; grid-template-columns:minmax(245px,29%) minmax(0,1fr); gap:20px; margin-top:18px; }
.quote-catalog,.quote-editor { min-width:0; border:1px solid #dce7e0; border-radius:10px; padding:14px; }
.quote-workspace h2 { margin:0 0 12px; font-size:17px; }
.quote-catalog .toolbar { flex-wrap:wrap; }
.quote-catalog > input { width:100%; }
.quote-catalog-results { max-height:50vh; overflow:auto; margin-top:10px; }
.quote-pick-row { display:flex; align-items:center; justify-content:space-between; gap:8px; padding:8px 0; border-bottom:1px solid #e6ece8; }
.quote-pick-row small { display:block; }
.quote-pick-row .btn { flex:none; }
.quote-pick-section h3 { font-size:13px; color:#456055; margin:14px 0 4px; }
.quote-picker-group { padding:10px 0; border-bottom:1px solid #e6ece8; }
.quote-picker-group > strong { display:block; margin-bottom:6px; }
.quote-picker-group summary { cursor:pointer; margin-top:6px; }
.quote-table { max-height:44vh; overflow:auto; }
.quote-table input[type=number] { min-width:65px; }
.quote-table input[type=checkbox] { width:auto; }
.quote-table th { white-space:nowrap; position:sticky; top:0; background:#f1f5f2; z-index:1; }
.quote-group-row { background:#eef5f0; }
.quote-missing { background:#fff4de; }
.quote-summary { position:sticky; bottom:0; background:#fff; border-top:1px solid #dce7e0; padding-top:8px; margin-top:12px; }
.quote-summary .toolbar { flex-wrap:wrap; }
.quote-summary .total { font-size:15px; }
@media (max-width:980px) { .quote-workspace { grid-template-columns:minmax(0,1fr); } .quote-catalog-results { max-height:34vh; } }
@media print { .quote-catalog { display:none; } .quote-workspace { display:block; } .quote-table { max-height:none; overflow:visible; } .quote-summary { position:static; } }@media print { .quote-table tr[hidden] { display: table-row; } }
.dashboard-task { text-align:left; cursor:pointer; font:inherit; color:inherit; } .dashboard-task[aria-pressed="true"] { outline:2px solid #397458; }

.dashboard-chart { margin-top:18px; }
.dashboard-bars { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:8px; }
.dashboard-day { background:#f7faf8; border:1px solid #e1ebe4; border-radius:8px; color:inherit; cursor:pointer; padding:8px 3px; font:inherit; }
.dashboard-day[aria-pressed="true"] { border-color:#397458; background:#edf6f0; }
.dashboard-day-bars { display:flex; height:112px; align-items:flex-end; justify-content:center; gap:5px; padding-top:14px; margin-bottom:6px; border-bottom:1px solid #cbd9cf; }
.dashboard-day-bars > span { position:relative; display:block; width:25%; max-width:26px; border-radius:4px 4px 0 0; }
.dashboard-day-bars b { position:absolute; bottom:100%; left:50%; transform:translateX(-50%); font-size:11px; }
.bar-out { background:#3b8561; }
.bar-back { background:#527cbb; }

#quote-print { display:none; }
@page { size:A4; margin:15mm; }
@media print {
 body:has(> #quote-print) > :not(#quote-print) { display:none !important; }
 #quote-print { display:block; color:#172822; background:#fff; font:10pt/1.45 system-ui,sans-serif; }
 .pdf-quote-heading { display:flex; justify-content:space-between; align-items:flex-end; gap:16px; padding-bottom:14px; border-bottom:3px solid #32694f; }
 .pdf-quote-heading strong { display:block; font-size:18pt; color:#23553e; }
 .pdf-quote-heading > div:last-child { text-align:right; }
 .pdf-quote-heading h1 { font-size:16pt; margin:0; }
 .pdf-quote-heading span,#quote-print dt { color:#516159; }
 #quote-print dl { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; margin:16px 0; }
 #quote-print dd { margin:2px 0 0; overflow-wrap:anywhere; }
 #quote-print table { width:100%; border-collapse:collapse; font-size:9pt; }
 #quote-print thead { display:table-header-group; }
 #quote-print tr { break-inside:avoid; }
 #quote-print th,#quote-print td { padding:7px 6px; border-bottom:1px solid #dbe6df; }
 #quote-print th { background:#edf4ef; print-color-adjust:exact; }
 #quote-print th:not(:first-child),#quote-print td:not(:first-child) { text-align:right; white-space:nowrap; }
 .pdf-quote-totals { margin:16px 0 0 auto; width:62mm; break-inside:avoid; }
 .pdf-quote-totals > div { display:flex; justify-content:space-between; gap:8px; padding:5px 0; }
 .pdf-quote-grand { border-top:2px solid #32694f; font-size:13pt; color:#23553e; }
}

@media print {
 #quote-print .dispatch-contract-fields { gap:0; border-top:1px solid #dbe6df; border-left:1px solid #dbe6df; }
 .dispatch-contract-fields > div { padding:6px 8px; border-right:1px solid #dbe6df; border-bottom:1px solid #dbe6df; }
 #quote-print .dispatch-contract-items th, #quote-print .dispatch-contract-items td { text-align:left; white-space:normal; overflow-wrap:anywhere; }
 #quote-print .dispatch-contract-items th:nth-child(1) { width:21%; }
 #quote-print .dispatch-contract-items th:nth-child(3) { width:13%; }
 #quote-print .dispatch-contract-items th:nth-child(4) { width:15%; }
 .dispatch-contract-terms { margin-top:14px; padding:10px 0; border-top:1px solid #dbe6df; font-size:8.5pt; }
 .dispatch-contract-terms h2 { font-size:11pt; margin:0 0 6px; break-after:avoid; }
 .dispatch-contract-terms p { margin:4px 0; break-inside:avoid; }
 .dispatch-contract-signatures { display:flex; flex-wrap:wrap; gap:14px 20px; margin-top:14px; break-inside:avoid; }
}
