*{box-sizing:border-box}body{margin:0;font-family:Arial,Helvetica,sans-serif;background:#f5f7fa;color:#1d2733}header{background:#18232f;color:#fff;padding:14px 24px;display:flex;align-items:center;gap:30px;position:sticky;top:0;z-index:3}.brand{font-weight:700;font-size:20px;white-space:nowrap}.brand small{font-size:11px;opacity:.6}nav{display:flex;gap:13px;align-items:center;flex-wrap:wrap}nav a{color:#dbe4ed;text-decoration:none}.button,button{display:inline-block;border:0;border-radius:6px;background:#1769aa;color:#fff;padding:9px 13px;text-decoration:none;cursor:pointer}.button.secondary{background:#4d5d6c}.actions{display:flex;gap:8px;flex-wrap:wrap}main{max-width:1500px;margin:28px auto;padding:0 20px}.pagehead{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:20px}h1{margin:0 0 5px}h2{margin-top:0}h3{margin-bottom:8px}.muted{color:#687684;font-size:13px}.cards{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-bottom:22px}.card,.panel{background:#fff;border:1px solid #dce3e9;border-radius:8px;padding:16px}.card span{display:block;color:#66727e;font-size:13px}.card strong{font-size:28px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:18px}.board{display:grid;grid-template-columns:repeat(7,minmax(180px,1fr));gap:10px;overflow-x:auto}.boardcol{background:#e8edf2;border-radius:8px;padding:10px;min-height:300px}.boardcol h3{font-size:14px}.boardcol h3 span{float:right}.jobcard{display:block;background:#fff;border:1px solid #d7dee5;border-radius:7px;padding:10px;margin:8px 0;text-decoration:none;color:#18232f}.jobcard b,.jobcard strong,.jobcard span,.jobcard small{display:block;margin-bottom:5px}.jobcard small{color:#6d7883}table{width:100%;border-collapse:collapse;background:#fff}th,td{text-align:left;padding:9px;border-bottom:1px solid #e4e8ec;font-size:13px}th{background:#f1f4f7}.danger{background:#fff3f3}.pill{background:#e8f0f7;padding:4px 7px;border-radius:10px}.search{display:flex;gap:8px;margin-bottom:15px}.search input,.search select{flex:1}.form{display:grid;gap:14px;max-width:1100px}.compact{gap:8px}.cols{display:grid;grid-template-columns:1fr 1fr;gap:14px}label{display:grid;gap:6px;font-size:13px;font-weight:600}input,select,textarea{width:100%;padding:9px;border:1px solid #cbd4dc;border-radius:5px;background:#fff;font:inherit}textarea{min-height:80px}.checkline{display:flex;align-items:center;gap:8px}.checkline input,.checks input{width:auto}.checks{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.checks label{display:flex;align-items:center;gap:6px;font-weight:normal}.inline{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.finish{display:inline-block;margin:4px}.finish button{background:#eef2f5;color:#283746}.finish button.done{background:#2f7d55;color:#fff}.history{padding-left:20px}.history li{margin:8px 0}.specgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.specgrid span{background:#f4f6f8;padding:9px;border-radius:5px}.specgrid b{display:block;font-size:11px;color:#687684;margin-bottom:3px}.totals{max-width:420px;margin:20px 0 20px auto;background:#fff;border:1px solid #dce3e9;padding:15px;border-radius:8px}.totals div{display:flex;justify-content:space-between;padding:6px}.totals strong{font-size:20px}.flash{padding:10px 13px;border-radius:6px;background:#e7f4ea;margin-bottom:15px}.quoteitem{border:1px solid #dce3e9;border-radius:8px;padding:14px;margin-bottom:12px}dl{display:grid;grid-template-columns:170px 1fr;gap:7px 12px;margin:0}dt{font-weight:700;color:#53616e}dd{margin:0}@media print{header,.actions,.inline form,.finish form,button,.button,details{display:none!important}body{background:#fff}main{max-width:none;margin:0;padding:0}.panel{border:0;page-break-inside:avoid}.grid2{display:grid;grid-template-columns:1fr 1fr}.pagehead{margin-bottom:10px}}@media(max-width:900px){.cards{grid-template-columns:repeat(2,1fr)}.grid2,.cols{grid-template-columns:1fr}.checks{grid-template-columns:repeat(2,1fr)}.specgrid{grid-template-columns:repeat(2,1fr)}header{align-items:flex-start;flex-direction:column}.board{grid-template-columns:repeat(7,220px)}}

.finishgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.finishrow{border:1px solid #dce3e9;border-radius:7px;padding:10px;display:grid;gap:7px}.bigprice{font-size:28px;white-space:nowrap}.estimate-result{margin-top:20px}@media(max-width:1100px){.finishgrid{grid-template-columns:repeat(2,1fr)}}@media(max-width:700px){.finishgrid{grid-template-columns:1fr}}
.job-banner{display:grid;grid-template-columns:2fr repeat(4,1fr);gap:12px;margin-bottom:18px}.job-banner div{border-right:1px solid #e4e8ec;padding-right:10px}.job-banner div:last-child{border:0}.job-banner b,.job-banner strong{display:block}.job-banner b{font-size:11px;color:#687684;text-transform:uppercase;margin-bottom:5px}.production-checklist{display:grid;grid-template-columns:repeat(5,1fr);gap:10px}.check-card{border:1px solid #dce3e9;border-radius:8px;padding:10px;display:grid;grid-template-columns:auto 1fr;gap:8px;align-items:center}.check-card.complete{background:#eef7f1}.check-card .checkmark{font-size:26px}.check-card strong,.check-card small{display:block}.check-card small{font-size:11px;color:#687684;margin-top:4px}.check-card button{grid-column:1/-1}.print-only{display:none}@media(max-width:1000px){.job-banner{grid-template-columns:repeat(2,1fr)}.production-checklist{grid-template-columns:repeat(2,1fr)}}@media print{.screen-only{display:none!important}.print-only{display:block}.job-banner{grid-template-columns:2fr repeat(4,1fr)}.production-checklist{grid-template-columns:repeat(5,1fr)}.check-card{break-inside:avoid}.check-card button,.check-card input{display:none!important}h1{font-size:22px}h2{font-size:16px}.panel{padding:10px;margin-bottom:8px}dl{gap:4px 10px}}
\n.customer-quote{background:#fff;border:1px solid #dce3e9;border-radius:10px;padding:34px;max-width:1000px;margin:0 auto}.quote-letterhead{position:static;background:none;color:#1d2733;padding:0 0 22px;display:flex;justify-content:space-between;border-bottom:2px solid #18232f}.quote-letterhead h1{font-size:25px}.quote-contact{text-align:right;line-height:1.55}.quote-title-row{display:grid;grid-template-columns:1fr 360px;gap:30px;padding:25px 0}.eyebrow{font-size:11px;letter-spacing:.08em;color:#687684;font-weight:700}.quote-meta{display:grid;gap:6px}.quote-meta div{display:grid;grid-template-columns:100px 1fr;gap:10px}.quote-meta b{color:#687684;font-size:12px}.quote-subject{border-top:1px solid #dce3e9;border-bottom:1px solid #dce3e9;padding:13px 0}.quote-product{padding:18px 0;border-bottom:1px solid #dce3e9}.quote-product-head{display:grid;grid-template-columns:1fr 180px;gap:20px}.quote-product h3{font-size:18px;margin-top:0}.customer-specs{display:grid;gap:5px}.quote-line-price{text-align:right;display:grid;gap:8px;align-content:start}.quote-line-price strong{font-size:20px}.quote-note{margin-top:12px;background:#f5f7fa;padding:12px;border-radius:6px}.quote-note p{margin:5px 0 0;white-space:pre-line}.quote-bottom{display:grid;grid-template-columns:1fr 330px;gap:35px;margin-top:25px}.quote-terms{font-size:13px;line-height:1.45}.quote-terms p{white-space:pre-line}.quote-totals{border-top:2px solid #18232f}.quote-totals div{display:flex;justify-content:space-between;padding:10px 4px;border-bottom:1px solid #dce3e9}.quote-totals .grand{font-size:19px}.quote-footer{position:static;background:none;color:#687684;padding:22px 0 0;margin-top:22px;border-top:1px solid #dce3e9;font-size:12px}@media(max-width:800px){.quote-title-row,.quote-bottom{grid-template-columns:1fr}.quote-product-head{grid-template-columns:1fr}.quote-line-price{text-align:left}.quote-contact{text-align:left}.quote-letterhead{display:grid;gap:12px}}@media print{.customer-quote{border:0;padding:0;max-width:none}.quote-letterhead{display:flex!important;color:#000!important}.quote-footer{display:block!important;color:#555!important}.quote-title-row,.quote-bottom{grid-template-columns:1fr 330px}.quote-product-head{grid-template-columns:1fr 180px}.quote-product{break-inside:avoid}}
/* V3.17: customer documents must never print application chrome. */
@media print{body>header.app-header,body>header.app-header nav,.flash{display:none!important}}

.customer-address,.customer-extra-info{white-space:pre-line;line-height:1.45;margin-top:4px}
.customer-extra-info{margin-top:7px}
.customer-info-editor{margin-top:8px;max-width:520px}
.customer-info-editor summary{cursor:pointer;color:#1769aa;text-decoration:underline;font-size:12px}
.customer-info-editor form{margin-top:10px;padding:12px;border:1px solid #dce3e9;border-radius:6px;background:#f8fafc}
.customer-info-editor label{display:block;margin-bottom:10px}
.customer-info-editor textarea{width:100%;box-sizing:border-box}
.invoice-lines{margin-top:15px;border-top:1px solid #cfd6dc;border-bottom:1px solid #cfd6dc}.invoice-line{display:grid;grid-template-columns:1fr 110px 120px 120px}.invoice-line>div{padding:10px;border-right:1px solid #dce3e9}.invoice-line>div:last-child{border-right:0;text-align:right}.invoice-line>div:nth-child(2),.invoice-line>div:nth-child(3){text-align:right}.invoice-line-head{font-size:11px;font-weight:700;text-transform:uppercase;color:#687684}.invoice-bottom{margin-top:28px}@media(max-width:800px){.invoice-line{grid-template-columns:1fr 80px 90px 90px}}@media print{.customer-invoice{border:0}.invoice-line{grid-template-columns:1fr 90px 110px 110px}}

/* V3.19.1 invoice heading refinement */
.invoice-letterhead-right{text-align:right}.tax-invoice-title{font-size:22px;font-weight:800;letter-spacing:.04em;margin-bottom:12px}.invoice-letterhead-right .quote-contact{text-align:right}

/* V3.19.3: stable two-column invoice letterhead; no absolute positioning. */
.customer-invoice .invoice-header-stable{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) minmax(280px,42%)!important;
  align-items:start!important;
  gap:28px!important;
}
.customer-invoice .invoice-business-block{grid-column:1;text-align:left!important}
.customer-invoice .invoice-contact-block{grid-column:2;text-align:right!important}
.customer-invoice .invoice-contact-block .tax-invoice-title{
  display:block!important;
  margin:0 0 14px 0!important;
  text-align:right!important;
  font-size:24px!important;
  line-height:1.1!important;
  font-weight:800!important;
  letter-spacing:.04em!important;
}
@media print{
  .customer-invoice .invoice-header-stable{
    display:grid!important;
    grid-template-columns:minmax(0,1fr) 280px!important;
    align-items:start!important;
    gap:24px!important;
  }
  .customer-invoice .invoice-business-block{grid-column:1!important}
  .customer-invoice .invoice-contact-block{grid-column:2!important;text-align:right!important}
}

/* V3.19.4 invoice subject */
.invoice-subject{margin-top:18px}.invoice-subject .eyebrow{margin-bottom:3px}.invoice-subject .quote-subject{margin-top:0}

/* V3.20 invoice payments */
.invoice-payment-panel{margin:0 0 22px}.payment-form{display:grid;grid-template-columns:repeat(5,minmax(120px,1fr)) auto;gap:10px;align-items:end}.payment-form label{margin:0}.payment-form input,.payment-form select{width:100%}@media(max-width:1000px){.payment-form{grid-template-columns:1fr 1fr}}

/* V3.21 Accounts */
.accounts-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:18px}.accounts-summary .card strong{font-size:26px;display:block;margin-top:4px}.ageing-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}.ageing-grid>div{border:1px solid #ddd;border-radius:8px;padding:12px}.ageing-grid span,.ageing-grid strong{display:block}.ageing-grid strong{font-size:19px;margin-top:4px}@media(max-width:900px){.accounts-summary,.ageing-grid{grid-template-columns:1fr 1fr}}

/* V3.22 accounting export */
.account-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.account-export-note{margin-bottom:16px}

/* V3.23 production machines */
.machine-form{display:grid;grid-template-columns:repeat(3,minmax(180px,1fr));gap:12px}.machine-form label{margin:0}.machine-form input,.machine-form select,.machine-form textarea{width:100%}.machine-notes{grid-column:1/-1}.machine-form .check{display:flex;gap:8px;align-items:center}.machine-form .check input{width:auto}@media(max-width:900px){.machine-form{grid-template-columns:1fr 1fr}}

.comparison-checks{display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:8px}.comparison-checks label{display:flex;align-items:center;gap:6px}.comparison-checks input{width:auto}

.route-summary{display:block;margin-top:5px}.equipment-route table{margin-top:8px}

.schedule-group{margin-bottom:18px}.schedule-group h2 .muted{font-size:.7em;font-weight:400}.schedule-group table{margin-top:10px}

.schedule-plan{display:flex;gap:6px;align-items:center;min-width:250px}.schedule-plan input[type=number]{width:68px}.schedule-plan input[type=date]{width:140px}

.schedule-progress{display:flex;gap:6px;align-items:center;min-width:210px}.schedule-progress select{min-width:135px}

.today-stats{display:grid;grid-template-columns:repeat(4,minmax(130px,1fr));gap:12px;margin-bottom:18px}.today-stats .card{display:flex;flex-direction:column;align-items:center;padding:16px}.today-stats strong{font-size:1.8rem}.today-stats span{font-size:.9rem}.today-section{margin-bottom:18px}.today-grid{display:grid;grid-template-columns:repeat(2,minmax(280px,1fr));gap:14px;margin-bottom:18px}.today-job{padding:9px 0;border-bottom:1px solid #ddd}.today-job:last-child{border-bottom:0}@media(max-width:850px){.today-stats,.today-grid{grid-template-columns:1fr}}

.job-item-handoff{padding:14px 0;border-bottom:2px solid #e5e5e5}.job-item-handoff:last-child{border-bottom:0}.job-item-handoff h3{margin-top:0}

/* V3.51.2: High-visibility notices. Errors must not resemble success messages. */
.flash.error, .flash.danger {
  background: #b42318;
  border: 2px solid #7a1510;
  border-left: 7px solid #640e0b;
  color: #ffffff;
  font-weight: 700;
  padding: 15px 18px;
  box-shadow: 0 2px 8px rgba(100,14,11,.22);
}
.flash.error::before, .flash.danger::before { content: "⚠ "; }
.flash.success { background: #e7f4ea; color: #1d4931; border-left: 5px solid #267647; }
