@font-face{font-family:Shuttleblock;src:url('/assets/shuttleblock.woff2') format('woff2');font-display:swap}
:root{--cream:#f2ebdd;--paper:#fffaf0;--oak:#443a33;--green:#363d2e;--sage:#585e4d;--muted:#655e53;--line:#cfc6b7;--soft:#e8e1d3;--warn:#77512a;--danger:#873d2c;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--oak);background:var(--cream);font-size:16px;font-synthesis:none}
*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit;color:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer}button:disabled{opacity:.5;cursor:not-allowed}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid var(--sage);outline-offset:3px}a{color:inherit}h1,h2,h3,p{margin-top:0}h1{font-family:Shuttleblock,sans-serif;font-weight:500;font-size:40px;line-height:1.1;margin:0 0 8px}h2{font-size:22px;line-height:1.3;margin-bottom:8px;font-weight:600}h3{font-size:18px;line-height:1.3;margin-bottom:8px;font-weight:600}p{line-height:1.45;max-width:72ch}small{font-size:13px;line-height:1.45}::selection{background:#cbd4bf;color:var(--green)}input,textarea{caret-color:var(--green)}
.shell{display:grid;grid-template-columns:256px minmax(0,1fr);min-height:100dvh}.sidebar{border-right:1px solid var(--line);padding:32px 16px;background:#ece5d7;min-width:0}.brand{display:block;margin:0 16px 32px}.brand img{width:100%;height:auto;display:block}.button{min-height:48px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:4px;border:1px solid var(--green);padding:12px 16px;font-size:14px;line-height:1.4;font-weight:600;transition:background .2s}.primary{background:var(--green);color:var(--cream)}.primary:hover:not(:disabled){background:#252e20}.secondary{background:transparent;color:var(--green)}.secondary:hover:not(:disabled){background:var(--soft)}.light{background:var(--cream);color:var(--green);border-color:var(--cream)}.wide{width:100%}.text-link{background:none;border:0;padding:12px 4px;color:var(--green);font:inherit;font-size:14px;text-decoration:underline;text-underline-offset:4px;text-align:left;min-height:44px}.danger{color:var(--danger)}.danger-fill{background:var(--danger);border-color:var(--danger);color:white}.danger-fill:hover{background:#692d20}
.jobs-menu{border:0;margin-top:24px;padding:0}.jobs-menu>summary{display:flex;justify-content:space-between;align-items:center;font-size:16px;font-weight:600;min-height:48px;cursor:pointer}.jobs-menu>summary:after{content:'▾';margin-left:8px}.jobs-menu>summary span{margin-left:auto;padding:0 8px;font-size:14px;color:var(--muted)}.job-list{display:flex;flex-direction:column;gap:8px;padding-top:8px}.job-row{border:1px solid transparent;border-radius:4px;min-width:0;padding:8px}.job-row.active{background:var(--paper);border-color:var(--line)}.job-link{width:100%;border:0;background:transparent;text-align:left;padding:8px 0;min-height:48px}.job-link strong{display:block;font-size:16px;overflow-wrap:anywhere;font-weight:600}.job-link small{display:block;font-size:12px;margin-top:8px;color:var(--muted)}.job-row>.text-link{font-size:13px}.sidebar-bottom{padding-top:24px}.sidebar-bottom .text-link{display:block}.topbar{min-height:72px;border-bottom:1px solid var(--line);padding:8px 32px;display:flex;align-items:center;justify-content:space-between;gap:16px;font-size:14px}.owner-label{display:flex;align-items:center;gap:8px;font-size:14px}.owner-label select{width:96px;background:transparent}
main{max-width:1440px;margin:auto;padding:32px}.page-heading{display:flex;justify-content:space-between;gap:24px;align-items:flex-start;margin-bottom:24px}.page-heading>div{min-width:0}.page-heading p{font-size:16px;margin-bottom:16px;color:var(--muted);overflow-wrap:anywhere}.job-meta{font-size:12px;display:flex;align-items:center;gap:16px;color:var(--muted)}.badge{display:inline-block;border:1px solid currentColor;padding:4px 8px;font-size:12px;line-height:1.4;border-radius:4px;color:var(--sage)}.badge.warning{color:#f1d8b5}.job-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end;max-width:280px}.job-actions [role=status]{font-size:14px;width:100%;text-align:right;color:var(--muted)}.steps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-bottom:1px solid var(--line);margin-bottom:24px}.steps button{border:0;border-bottom:3px solid transparent;background:transparent;display:flex;align-items:center;justify-content:center;gap:8px;padding:16px 8px;color:var(--muted);font-size:14px;min-height:56px}.steps button span{font-size:12px}.steps button.active{color:var(--green);border-color:var(--green);font-weight:600;background:#e8e7da}.workspace-grid{display:grid;grid-template-columns:minmax(0,1fr) 288px;gap:24px;align-items:start}#content,.workspace,.workspace-grid,.section,.form-grid>*{min-width:0}.section{background:var(--paper);border:1px solid var(--line);padding:24px;margin-bottom:24px;border-radius:4px}.section-heading{margin-bottom:24px}.section-heading p{font-size:14px;color:var(--muted);margin-bottom:0}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px 16px}.form-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.span-2{grid-column:1/-1}.field{display:flex;flex-direction:column;gap:8px;font-size:14px;line-height:1.4;margin-bottom:8px}.field small{color:var(--muted);font-size:13px}input,select,textarea{width:100%;min-width:0;max-width:100%;background:#fffdf7;border:1px solid #a99f90;border-radius:4px;padding:12px;font-size:16px;min-height:48px;scroll-margin:96px 0;outline:none}input:focus,select:focus,textarea:focus{outline:2px solid var(--sage);outline-offset:1px}input[aria-invalid=true]{border-color:var(--danger)}textarea{resize:vertical;line-height:1.45;min-height:112px}.service-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:32px}.service-option{cursor:pointer;position:relative;border:1px solid var(--line);padding:16px 8px;display:flex;flex-direction:column;gap:8px;border-radius:4px}.service-option.selected{border-color:var(--green);background:#edf0e6}.service-option input{position:static;width:20px;height:20px;min-height:0;accent-color:var(--green);margin:0 0 8px}.service-icon{display:none}.service-option strong{font-size:14px;font-weight:600}.service-option small{font-size:12px;color:var(--muted)}
.totals{background:var(--green);color:var(--cream);padding:24px;border-radius:4px;position:sticky;top:24px;scroll-margin:24px}.total-top{display:flex;justify-content:space-between;gap:8px;align-items:center}.eyebrow{font-size:13px}.quote-total{font-size:36px;font-weight:600;line-height:1.2;margin-top:24px;font-variant-numeric:tabular-nums}.total-sub{font-size:14px;color:#dedbd2;margin:8px 0 24px}.cost-summary{border-top:1px solid #727868;padding-top:8px}.cost-summary>div{display:flex;justify-content:space-between;gap:16px;font-size:14px;margin:16px 0;line-height:1.4}.cost-summary strong{font-weight:600;white-space:nowrap;font-variant-numeric:tabular-nums}.cost-summary .sum{border-top:1px solid #727868;padding-top:16px;margin-top:16px}.fine{font-size:13px;line-height:1.45;color:var(--muted)}.totals .fine{color:#dedbd2;margin-top:24px}.summary-status{border-top:1px solid #727868;font-size:13px;line-height:1.8;padding:16px 0 24px}.button-row{display:flex;align-items:center;flex-wrap:wrap;gap:16px;margin-top:24px}.next-row{display:flex;justify-content:space-between;align-items:center;gap:16px;margin:32px 0}.next-row p{font-size:14px;margin:0;max-width:30ch;color:var(--muted)}.page-footer{display:flex;justify-content:space-between;align-items:center;gap:16px;border-top:1px solid var(--line);padding-top:24px;margin-top:40px;font-size:13px;color:var(--muted)}.notice{border:1px solid var(--line);background:#e8dfce;padding:16px;margin-bottom:24px;font-size:14px;line-height:1.45;border-radius:4px}.notice strong{font-weight:600}.notice p{margin:8px 0 0}.notice ul{padding-left:24px;margin-bottom:0}.notice li{margin:8px 0}.notice.warning{background:#f0e0c9}.inline-checks{display:flex;gap:16px;flex-wrap:wrap;margin:24px 0}.check{display:flex;align-items:center;gap:8px;font-size:14px;line-height:1.45;min-height:44px}.check input{min-height:0;flex:0 0 20px;width:20px;height:20px;accent-color:var(--green);margin:0}.measurement-strip{display:flex;gap:16px;align-items:center;background:var(--soft);padding:16px;margin:24px 0}.measurement-strip div{flex:1}.measurement-strip strong{font-size:24px;font-weight:600}.measurement-strip span{display:block;font-size:12px;margin-top:8px;line-height:1.45}.measurement-strip svg{width:96px;flex-shrink:0;color:var(--sage)}details{border-top:1px solid var(--line);padding-top:16px;margin-top:24px}summary{font-size:14px;cursor:pointer;min-height:48px;line-height:1.45;padding:12px 0}details .form-grid{margin-top:24px}.table-wrap{margin:0 0 24px}.materials-table{width:100%;border-collapse:collapse;font-size:14px}.materials-table th{text-align:left;font-size:12px;font-weight:600;padding:8px;border-bottom:1px solid var(--line)}.materials-table td{padding:16px 8px;border-bottom:1px solid var(--line);vertical-align:top}.materials-table th:last-child,.materials-table td:last-child{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}.materials-table td:first-child{width:44%}.materials-table td strong{font-size:14px;display:block;font-weight:600}.materials-table td small{font-size:12px;display:block;color:var(--muted);margin:8px 0}.unit{font-size:12px;color:var(--sage)}.materials-table input{width:80px;padding:8px}.formula-note{border:1px solid var(--line);padding:16px;font-size:14px;line-height:1.45;margin:24px 0}.unknown{border-bottom:1px solid var(--line);padding-bottom:24px;margin-bottom:24px}.unknown-title{display:flex;gap:8px;align-items:center;margin-bottom:16px}.unknown-title span{font-size:14px;color:var(--muted)}.unknown-title input{background:var(--soft);font-weight:600}.unknown .check{margin-top:16px}.confirm-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-bottom:24px}.confirm-card{padding:0 0 16px;border-bottom:1px solid var(--line)}.confirm-card>span{font-size:12px;color:var(--sage)}.confirm-card h3{margin:16px 0 8px}.confirm-card p{font-size:14px}.preview-label{display:flex;justify-content:space-between;gap:16px;align-items:center;margin:32px 0 16px}.customer-document{background:#fffefa;border:1px solid var(--line);padding:32px;margin-bottom:24px;font-size:16px;line-height:1.45;overflow-wrap:anywhere}.document-header{display:flex;justify-content:space-between;align-items:center;gap:24px;border-bottom:1px solid var(--oak);padding-bottom:24px;margin-bottom:24px}.document-header img{width:144px;max-width:45%}.document-header span{font-size:12px;text-align:right;line-height:1.45}.customer-document h2{font-family:Shuttleblock,sans-serif;font-weight:500;font-size:36px;margin:0 0 32px;line-height:1.1}.document-meta{display:grid;grid-template-columns:1.4fr 1fr;gap:24px;margin-bottom:32px}.document-meta span{display:block;font-size:12px;margin-bottom:8px;color:var(--muted)}.document-meta strong{font-size:16px;font-weight:600}.document-meta p{font-size:14px}.customer-document h3{margin-top:32px}.customer-document ul{padding-left:24px}.customer-document li{margin-bottom:16px}.document-price{border-top:1px solid var(--oak);border-bottom:1px solid var(--oak);padding:24px 0;margin:32px 0 16px;display:flex;justify-content:space-between;align-items:center;gap:16px}.document-price strong{font-weight:600;font-size:28px;font-variant-numeric:tabular-nums}.signature-line{display:flex;justify-content:space-between;gap:24px;margin:48px 0;font-size:14px}.customer-document footer{border-top:1px solid var(--line);padding-top:24px;font-size:14px}.document-only{max-width:880px;margin:32px auto;padding:0 24px}.print-help{font-size:14px;margin-bottom:24px;display:flex;align-items:center;gap:24px;justify-content:space-between}.delivery-row{display:flex;justify-content:space-between;gap:24px;align-items:flex-start}.delivery-row h3{overflow-wrap:anywhere;margin-top:16px}.delivery-row p{font-size:14px}.booking-checks{font-size:16px;line-height:1.8}.booking-state{background:var(--soft);padding:16px;margin-top:24px;font-size:16px}.booking-state.ready{background:#e3ead6}.booking-state p{font-size:14px;margin:8px 0 0}.receipt-list{border-top:1px solid var(--line);margin-top:24px}.receipt-list>div{border-bottom:1px solid var(--line);padding:16px 0;font-size:14px}.receipt-list span{display:block;font-size:13px;margin-top:8px}.history-row{display:flex;justify-content:space-between;align-items:center;gap:24px;border-top:1px solid var(--line);padding:16px 0;font-size:16px}.history-row p{font-size:13px;margin:8px 0 0}hr{border:0;border-top:1px solid var(--line);margin:32px 0}.suggestion{display:flex;justify-content:space-between;gap:24px;align-items:center;margin-top:16px}#toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%,16px);max-width:calc(100% - 32px);width:max-content;padding:16px 24px;background:var(--green);color:var(--cream);box-shadow:0 8px 24px #0002;border-radius:4px;font-size:14px;line-height:1.45;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;z-index:50;white-space:pre-line}#toast.show{opacity:1;transform:translate(-50%,0)}#toast.error{background:var(--danger)}.loading,.empty-state{padding:48px 24px}.mobile-actions{display:none}.delete-dialog{border:1px solid var(--line);border-radius:8px;background:var(--paper);color:var(--oak);padding:24px;width:calc(100% - 32px);max-width:440px;max-height:calc(100dvh - 32px);overflow:auto}.delete-dialog::backdrop{background:#2228}.delete-dialog p{overflow-wrap:anywhere}.delete-dialog .button-row{justify-content:flex-end}
@media(max-width:1200px){.shell{grid-template-columns:224px minmax(0,1fr)}main{padding:24px}.topbar{padding:8px 24px}.workspace-grid{grid-template-columns:minmax(0,1fr)}.totals{position:static}.cost-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 24px}.cost-summary .sum{grid-column:1/-1}.form-grid.three{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.shell{display:block}.sidebar{padding:16px;border-right:0;border-bottom:1px solid var(--line);display:grid;grid-template-columns:1fr auto;gap:8px 16px}.brand{width:136px;margin:0;align-self:center}.sidebar>.button{width:auto;align-self:center}.jobs-menu{grid-column:1/-1;margin:0}.jobs-menu>summary{min-height:44px;padding:8px 0}.job-list{max-height:50dvh;overflow-y:auto}.job-row{display:flex;align-items:center;gap:8px}.job-row>.text-link{flex-shrink:0}.sidebar-bottom{padding-top:8px;display:flex;gap:24px}.topbar{min-height:64px;padding:8px 16px;font-size:13px}.owner-label{font-size:13px}.owner-label select{width:88px}main{padding:24px 16px calc(112px + env(safe-area-inset-bottom))}.page-heading{display:block;margin-bottom:16px}h1{font-size:32px;overflow-wrap:anywhere}.page-heading p{font-size:14px}.job-meta{font-size:12px}.job-actions{max-width:none;margin-top:16px;justify-content:flex-start}.job-actions [role=status]{width:auto;flex:1;text-align:left;font-size:13px}.job-actions .button{min-height:44px;padding:8px 16px}.steps{margin-bottom:24px;gap:0}.steps button{flex-direction:column;gap:4px;font-size:13px;padding:8px 0;min-height:64px}.steps button span{font-size:12px}.section{padding:24px 16px}.section-heading h2{font-size:20px}.form-grid,.form-grid.three{grid-template-columns:minmax(0,1fr);gap:16px}.service-option small{display:none}.service-options{gap:8px}.service-option{padding:16px 8px}.service-option strong{font-size:14px}.service-option input{margin-bottom:0}.button-row{gap:8px}.button-row>.button{flex:1 1 auto}.next-row{flex-wrap:wrap}.next-row p{display:none}.next-row>.button{flex:1}.page-footer{font-size:12px;align-items:flex-start}.page-footer>span{max-width:24ch}.cost-summary{display:block}.quote-total{font-size:32px}.confirm-grid{grid-template-columns:1fr}.customer-document{padding:24px 16px;font-size:16px}.document-header{gap:16px}.document-header span{font-size:12px}.document-header img{width:120px}.customer-document h2{font-size:32px}.document-meta{grid-template-columns:1fr;gap:8px}.document-price{flex-wrap:wrap}.document-price strong{font-size:28px}.signature-line{display:block;line-height:2.5}.signature-line span{display:block}.preview-label{flex-wrap:wrap}.delivery-row{flex-direction:column}.history-row{flex-wrap:wrap;gap:8px}.document-only{padding:0 16px;margin:16px auto}.suggestion{display:block}.suggestion .button{margin-top:16px}.measurement-strip svg{display:none}.measurement-strip{gap:8px;padding:16px 8px}.measurement-strip strong{font-size:22px}.measurement-strip span{font-size:12px}.materials-table,.materials-table tbody{display:block;width:100%}.materials-table thead{display:none}.materials-table tr{display:grid;grid-template-columns:1fr 1fr;gap:16px;padding:24px 0;border-bottom:1px solid var(--line)}.materials-table td{border:0;padding:0;display:block}.materials-table td:first-child{width:auto;grid-column:1/-1}.materials-table td:nth-child(2):before{content:'Buy quantity';display:block;font-size:13px;margin-bottom:8px}.materials-table td:nth-child(3):before{content:'Unit cost';display:block;font-size:13px;margin-bottom:8px}.materials-table td:last-child{grid-column:1/-1;text-align:left;font-weight:600}.materials-table td:last-child:before{content:'Line total: ';font-weight:400}.materials-table input{width:100%;min-height:48px}.materials-table td strong{font-size:16px}.mobile-actions{display:flex;position:fixed;bottom:0;left:0;right:0;align-items:center;justify-content:space-between;gap:16px;padding:12px 16px calc(12px + env(safe-area-inset-bottom));background:var(--paper);border-top:1px solid var(--line);z-index:20}.mobile-price{border:0;background:none;padding:0;text-align:left;min-height:48px;min-width:96px;color:var(--green)}.mobile-price span{display:block;font-size:12px}.mobile-price strong{display:block;font-size:20px;line-height:1.4;font-weight:600;font-variant-numeric:tabular-nums}.mobile-actions>.button{font-size:14px}.keyboard-open .mobile-actions{display:none}#toast{bottom:104px}.keyboard-open #toast{bottom:16px}.empty-state{padding:24px 0}.print-help{gap:8px;font-size:14px}.print-help .button{font-size:13px}}
@media(prefers-reduced-motion:reduce){.button,#toast{transition:none}html{scroll-behavior:auto}}
@media print{@page{size:letter;margin:16mm}body.document-only{background:white;margin:0;padding:0;max-width:none}.print-help,#toast{display:none}.customer-document{border:0;padding:0;margin:0;font-size:10pt}.document-header img{width:144px}.document-meta{grid-template-columns:1.4fr 1fr}.customer-document h2{font-size:30pt}.customer-document h3,.document-price,.signature-line{break-inside:avoid}.signature-line{display:flex}.customer-document footer{break-inside:avoid}}

.totals .badge{color:var(--cream)}.field-error{color:var(--danger)!important}.steps button{border-radius:0}
