.job-quote-panel{position:relative;overflow:hidden}
.job-quote-panel:before{content:'';position:absolute;left:0;top:0;bottom:0;width:2px;background:var(--brand-gold)}
.job-quote-loading,.job-quote-error{margin:16px 0 0;color:var(--muted);font-size:.8125rem;line-height:1.55}
.job-quote-error{color:var(--danger)}
.job-quote-empty{display:flex;justify-content:space-between;align-items:center;gap:24px;padding:18px 0 4px}
.job-quote-empty strong{font-size:1rem;font-weight:650}
.job-quote-empty p{max-width:570px;margin:4px 0 0;color:var(--muted);font-size:.8125rem;line-height:1.55}
.job-quote-summary{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;padding:18px 0 14px;border-bottom:1px solid var(--line)}
.job-quote-summary span,.job-quote-note span,.job-quote-total span{display:block;color:var(--muted);font-size:.75rem;font-weight:500}
.job-quote-summary strong{display:block;margin-top:2px;font-size:clamp(1.7rem,4vw,2.25rem);line-height:1.1;letter-spacing:-.045em;font-weight:650}
.job-quote-summary small{display:block;margin-top:7px;color:var(--muted);font-size:.75rem;line-height:1.5}
.job-quote-state{flex:0 0 auto;border:1px solid var(--line);border-radius:6px;padding:5px 8px;background:var(--surface);font-size:.72rem!important;font-weight:650!important;letter-spacing:.02em;text-transform:uppercase}
.job-quote-state.sent{color:#806336;border-color:#d8c9aa;background:#f7f2e8}
.job-quote-state.accepted{color:var(--green);border-color:#cbd9d1;background:var(--green-soft)}
.job-quote-state.declined,.job-quote-state.expired{color:#7b4c46;border-color:#dec7c4;background:#f7ecea}
.job-quote-appliance{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:3px 18px;margin:14px 0 2px;padding:11px 12px;border-left:2px solid var(--brand-gold);background:var(--surface)}
.job-quote-appliance span{grid-column:1/-1;color:var(--muted);font-size:.7rem;font-weight:550;text-transform:uppercase;letter-spacing:.04em}
.job-quote-appliance strong{min-width:0;font-size:.875rem;font-weight:650;line-height:1.45}
.job-quote-appliance small{align-self:center;color:var(--muted);font-size:.7rem;line-height:1.4;text-align:right}
.job-quote-note{padding:14px 0 2px}
.job-quote-note p{margin:5px 0 0;white-space:pre-wrap;font-size:.875rem;line-height:1.55}
.job-quote-actions{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-top:16px}
.job-quote-status{font-size:.75rem;color:var(--muted);line-height:1.4}
.job-quote-status.success{color:var(--green)}
.job-quote-status.error{color:var(--danger)}
.job-quote-link-note,.job-quote-prior{margin:14px 0 0;padding-top:13px;border-top:1px solid var(--line);color:var(--muted);font-size:.75rem;line-height:1.5}
.job-quote-link-note strong,.job-quote-prior strong{color:var(--ink);font-weight:600}
.job-quote-prior{margin-top:12px;border-top:0;padding:10px 12px;background:var(--surface);border-left:2px solid var(--brand-gold)}
.job-quote-revision-note{margin:16px 0 0;padding:10px 12px;border-left:2px solid var(--brand-gold);background:var(--surface);color:var(--muted);font-size:.78rem;line-height:1.55}
.job-quote-revision-note strong{color:var(--ink);font-weight:600}
.job-quote-response{display:inline-flex;margin:14px 0 0;border-radius:6px;padding:7px 9px;font-size:.75rem;line-height:1.4;font-weight:600}
.job-quote-response.accepted{background:var(--green-soft);color:var(--green)}
.job-quote-response.waiting{background:#f7f2e8;color:#806336}
.job-quote-response.declined,.job-quote-response.expired{background:#f7ecea;color:#7b4c46}
.job-quote-form{margin-top:18px}

.job-kit{margin:0 0 20px;padding:16px;border:1px solid #ddd2bc;border-radius:9px;background:#fbf8f1}
.job-kit-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding-bottom:12px;border-bottom:1px solid rgba(128,99,54,.16)}
.job-kit-head>div{display:grid;gap:2px}.job-kit-head>div>span{color:#806336;font-size:.68rem;font-weight:750;letter-spacing:.08em;text-transform:uppercase}.job-kit-head>div>strong{font-size:.95rem;font-weight:650}.job-kit-head>small{color:var(--muted);font-size:.72rem;line-height:1.45;text-align:right}
.job-kit-list{display:grid}.job-kit-row{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(190px,.75fr);gap:18px;padding:13px 0;border-bottom:1px solid rgba(128,99,54,.12)}.job-kit-row:last-child{border-bottom:0}
.job-kit-copy>div{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}.job-kit-copy strong{font-size:.875rem;font-weight:650}.job-kit-copy span{color:#806336;font-size:.68rem;font-weight:650}.job-kit-copy p{margin:4px 0 0;color:var(--muted);font-size:.75rem;line-height:1.5}
.job-kit-row[data-job-kit-tier="suggested"] .job-kit-copy span{color:var(--muted)}
.job-kit-matches{display:grid;gap:6px;align-content:start}.job-kit-match{display:flex;justify-content:space-between;gap:12px;font-size:.75rem}.job-kit-match span{min-width:0;overflow-wrap:anywhere}.job-kit-match small{flex:0 0 auto;color:var(--muted);text-align:right}.job-kit-no-match{align-self:center;color:var(--muted);font-size:.72rem;line-height:1.45}
.job-kit-boundary{margin:11px 0 0;padding-top:10px;border-top:1px solid rgba(128,99,54,.16);color:var(--muted);font-size:.7rem;line-height:1.5}
@media(max-width:760px){.job-kit-head{display:grid}.job-kit-head>small{text-align:left}.job-kit-row{grid-template-columns:1fr;gap:8px}.job-kit-match{display:grid;gap:2px}.job-kit-match small{text-align:left}}

.quotepilot-quote-loading,.quotepilot-quote-unavailable{margin:0 0 16px;padding:12px 14px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--muted);font-size:.75rem;line-height:1.5}
.quotepilot-quote-unavailable{display:grid;gap:3px}.quotepilot-quote-unavailable strong{color:var(--ink);font-weight:600}
.quotepilot-quote-assist{margin:0 0 18px;padding:15px;border:1px solid #d8c9aa;border-radius:9px;background:#fbf8f1}
.quotepilot-quote-head{display:flex;align-items:center;justify-content:space-between;gap:18px}
.quotepilot-quote-head>div{display:grid;gap:2px}.quotepilot-quote-head span{color:#806336;font-size:.68rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.quotepilot-quote-head strong{font-size:.9rem;font-weight:650}.quotepilot-quote-head small{color:var(--muted);font-size:.7rem;line-height:1.45}
.quotepilot-quote-grid{display:grid;grid-template-columns:minmax(110px,.65fr) minmax(210px,1.1fr) minmax(220px,1.45fr) 80px auto;gap:10px;align-items:end;margin-top:13px;padding-top:13px;border-top:1px solid rgba(128,99,54,.18)}
.quotepilot-quote-grid label{display:grid;gap:5px;color:#3f4943;font-size:.7rem;font-weight:600}.quotepilot-quote-grid input,.quotepilot-quote-grid select{width:100%;min-width:0;border:1px solid var(--line);border-radius:7px;background:var(--card);color:var(--ink);padding:9px 10px;outline:none}
.quotepilot-rate-preview{display:grid;gap:3px;padding:7px 0;color:var(--muted);font-size:.68rem;line-height:1.35}.quotepilot-rate-preview span{display:flex;justify-content:space-between;gap:10px}.quotepilot-rate-preview strong{color:var(--ink);font-weight:600}
.quotepilot-no-parts{grid-column:3/-1;padding:8px 0;color:var(--muted);font-size:.7rem;line-height:1.45}
.quotepilot-quote-foot{margin-top:10px;color:var(--muted);font-size:.68rem;line-height:1.45}.quotepilot-quote-foot .success{color:var(--green)}.quotepilot-quote-foot .error{color:var(--danger)}
.job-quote-form-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px 16px}
.job-quote-field{display:grid;gap:6px;min-width:0}
.job-quote-field.full{grid-column:1/-1}
.job-quote-field label{font-size:.75rem;font-weight:600;color:#3f4943}
.job-quote-field label small{color:var(--muted);font-weight:450}
.job-quote-field input,.job-quote-field textarea{width:100%;border:1px solid var(--line);border-radius:7px;background:var(--surface);color:var(--ink);padding:10px 11px;outline:none}
.job-quote-field textarea{min-height:92px;resize:vertical;line-height:1.5}
.job-quote-field input:focus,.job-quote-field textarea:focus{border-color:#99a39b;box-shadow:0 0 0 3px rgba(90,105,96,.08);background:var(--card)}
.job-quote-field [aria-invalid="true"]{border-color:#b35f59}
.job-quote-field>span{min-height:1em;color:var(--danger);font-size:.7rem;line-height:1.35}
.job-quote-options{margin-top:12px}
.job-quote-options .job-quote-form-grid{padding:8px 0 12px}
.job-quote-form>[data-quotepilot-quote-slot]{margin-top:14px}
.job-quote-total{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-top:20px;padding:17px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.job-quote-total small{display:block;margin-top:3px;color:var(--muted);font-size:.72rem;line-height:1.4}
.job-quote-total strong{font-size:1.65rem;line-height:1.1;letter-spacing:-.04em;font-weight:650}
.job-quote-form-actions{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:8px;margin-top:16px}
.job-quote-form-actions .job-quote-status{margin-right:auto}
.quote-preview{width:min(720px,calc(100% - 32px));max-height:calc(100dvh - 40px);padding:24px;border:1px solid var(--line);border-radius:12px;background:var(--bg);color:var(--ink);box-shadow:0 24px 100px #0003;overflow:auto}
.quote-preview::backdrop{background:#171b19a8}
.quote-preview-head{display:flex;align-items:center;justify-content:space-between;gap:16px}
.quote-preview-head h2{margin:0;font-size:1.125rem}
.quote-preview-help{font-size:.875rem;color:var(--muted);line-height:1.5}
.quote-preview-paper{padding:32px;background:var(--card);border:1px solid var(--line);border-radius:8px}
.quote-preview-paper header>span{color:var(--muted);font-size:.875rem}
.quote-preview-paper h3{font:500 2rem var(--sp-serif,Georgia,serif);margin:14px 0}
.quote-preview-paper header>p{font-size:.9375rem}
.quote-preview-total{display:grid;gap:8px;padding:24px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.quote-preview-total>strong{font-size:2rem;font-weight:600;letter-spacing:-.04em}
.quote-preview-total>small,.quote-preview-note>span{font-size:.8125rem;color:var(--muted);line-height:1.5}
.quote-preview-note{margin-top:24px}
.quote-preview-note p{margin:6px 0 0;white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.6}
@media(max-width:560px){.quote-preview{padding:16px}.quote-preview-paper{padding:20px}}
@media(max-width:980px){.quotepilot-quote-grid{grid-template-columns:1fr 1fr 1.5fr 80px}.quotepilot-quote-grid>.btn{grid-column:4}.quotepilot-no-parts{grid-column:3/-1}}
@media(max-width:760px){.job-quote-form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.job-quote-spacer{display:none}.quotepilot-quote-grid{grid-template-columns:1fr 1fr}.quotepilot-rate-preview{align-self:center}.quotepilot-part{grid-column:1/-1}.quotepilot-quote-grid>.btn{grid-column:auto}.job-quote-appliance{grid-template-columns:1fr}.job-quote-appliance span{grid-column:auto}.job-quote-appliance small{text-align:left}}
@media(max-width:560px){.job-quote-empty,.job-quote-summary,.job-quote-total{align-items:flex-start}.job-quote-empty{display:grid}.job-quote-form-grid{grid-template-columns:1fr}.job-quote-field.full{grid-column:auto}.job-quote-summary{display:grid}.job-quote-state{justify-self:start}.job-quote-total{display:grid}.job-quote-form-actions{display:grid;grid-template-columns:1fr 1fr}.job-quote-form-actions .text-action,.job-quote-form-actions .job-quote-status{grid-column:1/-1}.job-quote-form-actions .btn{width:100%}.quotepilot-quote-head{display:grid}.quotepilot-quote-head .btn{width:100%}.quotepilot-quote-grid{grid-template-columns:1fr}.quotepilot-part,.quotepilot-no-parts{grid-column:auto}.quotepilot-quote-grid>.btn{width:100%}}
.quote-pricing-options{margin-bottom:16px;border:1px solid var(--line);border-radius:9px}
.quote-pricing-options>summary{min-height:48px;display:flex;align-items:center;gap:10px;padding:12px 16px;cursor:pointer;font-size:.875rem;font-weight:600}
.quote-pricing-options>summary::after{content:'+';margin-left:auto;color:var(--muted)}
.quote-pricing-options[open]>summary::after{content:'−'}
.quote-pricing-options>summary::-webkit-details-marker{display:none}
.quote-pricing-options>summary:focus-visible{outline:2px solid var(--green);outline-offset:2px}

.job-quote-scope{margin-bottom:22px;padding-bottom:20px;border-bottom:1px solid var(--line)}
.job-quote-scope .job-quote-field textarea{min-height:110px;line-height:1.55}
.job-quote-scope .job-quote-field small{color:var(--muted);font-size:.875rem;line-height:1.5}
.job-quote-scope .text-action{justify-self:start;min-height:36px;text-align:left}
.job-quote-pricing-label{margin:0 0 12px;font:inherit;font-size:1rem;font-weight:650}
.job-quote-pricing{min-width:0}
@media(min-width:901px){
  .route-jobs .job-quote-form{margin-top:14px}
  .route-jobs .job-quote-field label{font-size:.875rem}
  .route-jobs .job-quote-field>span:empty{display:none}
  .route-jobs .job-quote-form .job-tool-disclosure{margin-top:12px}
  .route-jobs .job-quote-form .job-tool-disclosure>summary{min-height:44px;padding:10px 0}
  .route-jobs .job-quote-scope{margin-bottom:16px;padding-bottom:12px}
  .route-jobs .job-quote-total{margin-top:14px;padding:14px 0}
}
@media(min-width:1200px){
  .route-jobs .job-quote-form{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px 32px;align-items:start}
  .route-jobs .job-quote-form> :not(.job-quote-scope):not(.job-quote-pricing){grid-column:1/-1}
  .route-jobs .job-quote-scope{margin:0;padding:0;border:0}
  .route-jobs .job-quote-pricing{border-left:1px solid var(--line);padding-left:32px}
  .route-jobs .job-quote-form> .job-quote-options,.route-jobs .job-quote-form>[data-quotepilot-quote-slot],.route-jobs .job-quote-form> .job-quote-total,.route-jobs .job-quote-form> .job-quote-form-actions{margin-top:0}
  .route-jobs .job-quote-form>[data-quotepilot-quote-slot]:empty{display:none}
}

/* RC2 iPhone quote editor: content must shrink to the viewport rather than
   create a sideways scroll when numeric fields, labels or long scope remain. */
.job-quote-panel,.job-quote-form,.job-quote-scope,.job-quote-pricing,
.job-quote-form-grid,.job-quote-form-grid>*,.job-quote-options,
.job-quote-form-actions,.job-quote-total{min-width:0;max-width:100%;box-sizing:border-box}
.job-quote-form input,.job-quote-form textarea,.job-quote-form select{
  min-width:0;max-width:100%;box-sizing:border-box;
}
.job-quote-form-grid>*,.job-quote-form-actions>*{overflow-wrap:anywhere}
@media(max-width:560px){
  .job-quote-form-actions{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .job-quote-form-actions>[data-quote-save-publish]{grid-column:1/-1}
  .job-quote-form-actions>[data-quote-preview],
  .job-quote-form-actions>[data-quote-save]{min-width:0}
}
