@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&display=swap');
:root{--navy:#243249;--gold:#a8803d;--gold2:#d8bf91;--paper:#f6f5f1;--white:#fff;--ink:#263347;--muted:#778294;--line:#e5e7eb;--green:#268269;--soft:#eeece6}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:14px 'DM Sans',Arial,sans-serif}.layout{min-height:100vh;display:flex}.rail{position:fixed;inset:0 auto 0 0;width:244px;background:var(--navy);color:#fff;padding:27px 17px 18px;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:12px;padding:0 8px 36px;font:800 15px Manrope,sans-serif;letter-spacing:1.4px}.brand small,.rail-bottom small{display:block;font:10px 'DM Sans';letter-spacing:2px;color:#b3bdc9;margin-top:3px}.mark{width:37px;height:37px;border:1px solid var(--gold2);color:var(--gold2);border-radius:50%;display:grid;place-items:center;font:700 22px Georgia}.rail-label,.eyebrow{font-size:10px;letter-spacing:1.4px;color:#98a3b3;font-weight:700}.rail-label{padding:0 11px 12px}nav{display:grid;gap:6px}nav button{border:0;background:transparent;color:#c5ccd5;text-align:left;border-radius:8px;padding:12px 13px;display:flex;gap:13px;align-items:center;font:500 14px 'DM Sans';cursor:pointer}nav button:hover,nav button.active{background:#35445a;color:#fff}nav button.active{box-shadow:inset 3px 0 var(--gold2)}.rail-bottom{margin-top:auto;border-top:1px solid #3a4659;padding:17px 6px 0;display:flex;align-items:center;gap:11px;font-size:12px}.avatar{width:33px;height:33px;border-radius:50%;display:grid;place-items:center;background:#ded1b7;color:var(--navy);font-weight:700}.rail-bottom small{letter-spacing:0;font-size:10px}main{margin-left:244px;width:calc(100% - 244px);padding:30px 42px 55px}header{display:flex;justify-content:space-between;align-items:center;margin-bottom:27px}.eyebrow{color:#98a0ad}h1,h2,h3,p{margin-top:0}h1{font:700 27px Manrope;margin:8px 0 0;color:#202d40}.head-actions{display:flex;gap:15px;align-items:center}.local-badge{font-size:10px;letter-spacing:1px;color:#667284;font-weight:700}.local-badge i{display:inline-block;width:7px;height:7px;border-radius:50%;background:#4a9a77;margin-right:5px}.btn{border:1px solid var(--line);border-radius:7px;background:white;color:var(--ink);font:600 13px 'DM Sans';padding:10px 14px;cursor:pointer}.btn.primary{background:var(--navy);border-color:var(--navy);color:white}.btn.gold{background:var(--gold);color:white;border-color:var(--gold)}.btn.small{padding:7px 10px;font-size:12px}.btn:hover{filter:brightness(1.07)}.grid{display:grid;gap:17px}.stats{grid-template-columns:repeat(4,1fr);margin-bottom:20px}.card{background:#fff;border:1px solid #e8e8e3;border-radius:10px;padding:20px;box-shadow:0 2px 8px #18253a08}.stat{display:flex;justify-content:space-between;align-items:flex-start}.label{font-size:12px;color:var(--muted)}.value{font:700 25px Manrope;margin:11px 0 4px}.stat-icon{width:34px;height:34px;border-radius:9px;background:#f2ede3;color:var(--gold);display:grid;place-items:center;font-weight:700}.subtle{font-size:11px;color:var(--muted)}.cols{grid-template-columns:1.45fr 1fr}.card-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.card-title h2{font:700 16px Manrope;margin:0}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;font-size:12px}th{text-align:left;color:#8791a0;font-size:10px;letter-spacing:.6px;text-transform:uppercase;padding:10px;border-bottom:1px solid var(--line)}td{padding:12px 10px;border-bottom:1px solid #eff0f2;vertical-align:middle}tr:last-child td{border-bottom:0}.strong{font-weight:600;color:#303d50}.pill{display:inline-block;padding:5px 9px;border-radius:20px;background:#efeee9;color:#667080;font-size:10px;font-weight:700;text-transform:capitalize}.pill.draft{background:#f3ebdb;color:#8f6d31}.pill.issued{background:#e9f0fb;color:#5272a4}.pill.accepted,.pill.paid{background:#e5f3ed;color:#348168}.pill.overdue{background:#fbe9e6;color:#a34f43}.row-actions{display:flex;gap:6px;flex-wrap:wrap}.empty{text-align:center;padding:42px;color:var(--muted)}.search{border:1px solid var(--line);padding:9px 12px;border-radius:7px;font:13px 'DM Sans';width:220px}.toolbar{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:15px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.form-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.field{display:flex;flex-direction:column;gap:6px}.field label{font-size:11px;font-weight:700;color:#596578}.field input,.field select,.field textarea{font:13px 'DM Sans';border:1px solid #dfe2e7;border-radius:6px;padding:10px 11px;color:#243249;background:#fff;width:100%}.field textarea{min-height:75px;resize:vertical}.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid #d8bf9166;border-color:var(--gold)}.span2{grid-column:span 2}.modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.modal-head h2{margin:0;font:700 19px Manrope}.x{border:0;background:transparent;font-size:22px;cursor:pointer}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:19px}.dialog-wide{width:min(920px,96vw);max-height:92vh;overflow:auto;border:0;border-radius:13px;padding:25px;box-shadow:0 20px 70px #0d1a2b44}.dialog-wide::backdrop{background:#13203390}.line-card{border:1px solid var(--line);border-radius:9px;padding:15px;margin:12px 0;background:#fff}.line-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:13px;font-weight:700}.line-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:11px}.line-grid .wide{grid-column:span 2}.line-image{display:flex;gap:12px;align-items:center}.line-image img{width:54px;height:54px;object-fit:cover;border:1px solid var(--line);border-radius:5px}.calc{font-size:12px;color:var(--gold);font-weight:700;padding-top:7px}.quote-head{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px;margin-bottom:17px}.totals{margin-left:auto;width:min(320px,100%);padding-top:12px}.total-line{display:flex;justify-content:space-between;padding:6px 0}.total-line.grand{border-top:1px solid var(--line);margin-top:7px;padding-top:12px;font-weight:800;font-size:17px}.toast{position:fixed;bottom:24px;right:24px;background:#243249;color:white;padding:13px 18px;border-radius:8px;box-shadow:0 6px 24px #0002;z-index:10}.file-chip{font-size:11px;color:var(--muted)}.banner{background:#f5eedf;border:1px solid #e9d8b2;padding:12px;border-radius:7px;color:#765a2a;font-size:12px;margin-bottom:15px}.preview{max-width:880px;margin:0 auto;background:white;padding:36px;box-shadow:0 3px 18px #1c294014}.preview .pbrand{color:var(--gold);font:700 14px Manrope;letter-spacing:2px}.preview h2{margin:5px 0 2px;font:700 25px Manrope}.preview-line{display:grid;grid-template-columns:90px 1fr 130px;gap:14px;border-bottom:1px solid var(--line);padding:12px 0;align-items:center}.preview-line img{width:86px;height:68px;object-fit:cover;border-radius:5px}.preview-line img[src=""]{display:none}.locations{background:#f6f2e9;color:#82652e;font-weight:700;padding:9px;margin-top:12px}@media(max-width:950px){main{padding:24px 20px;margin-left:205px;width:calc(100% - 205px)}.rail{width:205px}.stats{grid-template-columns:repeat(2,1fr)}.cols{grid-template-columns:1fr}}@media(max-width:650px){.rail{width:62px;padding:18px 8px}.brand{padding:0 4px 25px}.brand>span:last-child,.rail-label,nav button span,.rail-bottom>span:last-child{display:none}nav button{justify-content:center;padding:12px 5px}.rail-bottom{padding-left:5px}.avatar{width:32px}main{margin-left:62px;width:calc(100% - 62px);padding:19px 12px}header{align-items:flex-start;gap:8px}.head-actions{flex-direction:column;align-items:flex-end;gap:8px}h1{font-size:21px}.eyebrow{font-size:8px}.stats{grid-template-columns:1fr 1fr;gap:9px}.card{padding:14px}.form-grid,.form-grid.three,.quote-head{grid-template-columns:1fr}.span2{grid-column:auto}.line-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.line-grid .wide{grid-column:span 2}.dialog-wide{padding:17px}.search{width:160px}.preview{padding:18px}.preview-line{grid-template-columns:60px 1fr 90px}.preview-line img{width:58px;height:54px}}
.header-tabs{display:flex;flex-wrap:wrap;gap:9px;margin-bottom:20px}.header-tabs button span{opacity:.7;margin-left:8px;font-size:11px}.header-tabs+.card .toolbar{align-items:flex-start}.header-tabs+.card .toolbar>button{white-space:nowrap}.header-tabs~.toolbar{gap:20px;align-items:flex-start}@media(max-width:650px){.header-tabs+.card .toolbar{flex-direction:column}.header-tabs~.toolbar{flex-direction:column}}
@media print{body{background:#fff}.rail,header,.print-hide{display:none!important}main{margin:0;width:100%;padding:0}#view{padding:0}.preview{box-shadow:none;padding:10mm;max-width:none}.preview-line{break-inside:avoid}.locations{break-after:avoid}}

[hidden]{display:none!important}.document-actions{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0}.document-actions a{text-decoration:none}.print-options{border:1px solid var(--line);border-radius:7px;padding:12px}.print-options summary{cursor:pointer;font-weight:600}.print-options select,#view td select{padding:8px;border:1px solid var(--line);border-radius:5px;color:var(--ink);background:white}#uploadResult{white-space:pre-wrap;font-size:12px}button:disabled{opacity:.5;cursor:not-allowed}
#accessPanel{min-height:100vh;display:grid;place-items:center;padding:24px;background:#f4f2ed}.access-card{width:min(460px,100%);padding:32px}.access-card h1{margin-top:14px}.access-card .grid{gap:14px}.access-card p{line-height:1.6}#accessError,#userError,#passwordError{color:#a12e2e;margin:0}.danger{color:#a12e2e!important;border-color:#e6c6c6!important;margin-left:6px}#signedInName{max-width:180px;font-size:11px}.head-actions{flex-wrap:wrap}#userSettings h2{margin-top:0}

.brand{justify-content:center;padding:0 0 22px}.brand-logo{display:block;width:174px;max-width:100%;height:auto;border-radius:6px;background:white}.brand-logo-compact{display:none}.access-logo{display:block;width:200px;max-width:100%;margin:0 auto 18px}.settings-logo{width:160px;margin:0 0 18px}.receipt-brand{display:flex;align-items:center;gap:24px;margin-bottom:25px}.receipt-brand>img{width:130px}.company-contact{font-size:11px;line-height:1.7;margin-top:8px}@media(max-width:650px){.brand{padding:0 0 22px}.brand-logo{display:none}.brand-logo-compact{display:block;width:44px;border-radius:4px}.receipt-brand{gap:10px}.receipt-brand>img{width:85px}}

/* Approved Lakzora theme: white surfaces, navy typography, pale-blue dividers. */
:root{--navy:#203c64;--gold:#426899;--gold2:#d8e3f0;--paper:#fff;--white:#fff;--ink:#203c64;--muted:#426899;--line:#d8e3f0;--green:#426899;--soft:#fff}
body,main,.rail,#accessPanel,.card,.line-card,.pill,.pill.draft,.pill.issued,.pill.accepted,.pill.paid,.pill.overdue,.banner,.locations{background:#fff;color:var(--ink)}
.rail{border-right:1px solid var(--line)}.rail-label,.eyebrow,.local-badge,.rail-bottom small,.brand small,.field label,th,.pill.draft,.pill.issued,.pill.accepted,.pill.paid,.pill.overdue{color:var(--muted)}
nav button{color:var(--navy)}nav button:hover,nav button.active{background:#fff;color:var(--navy);outline:1px solid var(--line)}nav button.active{box-shadow:inset 3px 0 var(--navy);font-weight:700}
.rail-bottom{border-color:var(--line)}.avatar,.stat-icon{background:#fff;color:var(--navy);border:1px solid var(--line)}h1,.strong{color:var(--navy)}.local-badge i{background:var(--muted)}
.card{border-color:var(--line);box-shadow:0 2px 8px #203c6405}.pill{border:1px solid var(--line)}.pill.accepted,.pill.paid{border-color:var(--muted)}td{border-color:var(--line)}
.banner{border-color:var(--line)}.field input,.field select,.field textarea,.search{border-color:var(--line);color:var(--navy)}.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid #d8e3f0;border-color:var(--muted)}
.grid>*{min-width:0}.table-wrap{max-width:100%}header>div{min-width:0}
.preview .pbrand{color:var(--navy)}.toast{background:var(--navy)}.danger{color:var(--navy)!important;border-color:var(--muted)!important;text-decoration:underline}#accessError,#userError,#passwordError{color:var(--navy);font-weight:700}a{color:var(--muted)}.locations{border-top:1px solid var(--line);border-bottom:1px solid var(--line)}

/* Spacious quotation editor with one table row per item. */
#modal.quote-editor{width:95vw;max-width:95vw;height:95vh;height:95dvh;max-height:95vh;max-height:95dvh;padding:20px;color:var(--navy)}
.quote-editor>.modal-head{position:sticky;top:-20px;z-index:3;background:white;padding:16px 0 14px;margin-top:-12px;border-bottom:1px solid var(--line)}
.quote-editor>.modal-actions{position:sticky;bottom:-20px;z-index:3;background:white;padding:14px 0 18px;border-top:1px solid var(--line)}
.quote-editor>.form-grid.three{grid-template-columns:repeat(4,minmax(0,1fr))}
.quote-editor>.field textarea{min-height:58px}
.quote-lines-scroll{width:100%;max-height:46vh;overflow:auto;border:1px solid var(--line);border-radius:8px;scrollbar-gutter:stable}
.quote-lines-table{table-layout:fixed;min-width:1510px;width:100%;border-collapse:separate;border-spacing:0}
.quote-lines-table th{position:sticky;top:0;z-index:2;background:white;padding:11px 5px;white-space:nowrap;font-size:10px;letter-spacing:0;text-transform:none}
.quote-lines-table td{padding:6px 4px;height:48px;border-bottom:1px solid var(--line)}
.quote-lines-table input,.quote-lines-table select{width:100%;min-width:0;height:34px;padding:6px;border:1px solid var(--line);border-radius:5px;background:white;color:var(--navy);font:12px 'DM Sans',Arial,sans-serif}
.quote-lines-table select{padding-right:2px;text-overflow:ellipsis}
.quote-lines-table input[type=number]{appearance:textfield;-moz-appearance:textfield;text-align:right}
.quote-lines-table input::-webkit-inner-spin-button,.quote-lines-table input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
.quote-lines-table :is(input,select,button):focus-visible{outline:2px solid var(--muted);outline-offset:1px}
.quote-lines-table .item-number{text-align:center;color:var(--muted);font-size:11px}
.quote-lines-table .line-measure,.quote-lines-table .line-total{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.quote-lines-table .line-total{font-weight:700;font-size:12px}
.quote-lines-table .description-edit{display:block;width:100%;height:34px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;text-align:left;padding:6px;color:var(--muted);font-weight:500;text-decoration:underline;text-underline-offset:3px}
.quote-lines-table .line-image-button{display:flex;align-items:center;justify-content:center;width:100%;height:34px;padding:3px;font-size:11px;white-space:nowrap}
.quote-lines-table .line-image-button img{width:42px;height:26px;object-fit:cover;border-radius:3px}
.quote-lines-table .remove-line{padding:3px;width:28px;height:32px;font-size:18px}
.quote-lines-table .line-row-actions{display:flex;gap:4px;align-items:center}.quote-lines-table .add-next-line{padding:3px;width:28px;height:32px;font-size:18px;color:white;background:var(--navy);border-color:var(--navy)}
.quote-entry-hint{margin:9px 0 16px}
.line-description-dialog{width:640px;max-width:92vw;color:var(--navy)}
.line-description-dialog textarea{min-height:210px;line-height:1.6}
.quote-save-error{width:520px;max-width:92vw;color:var(--navy)}.quote-save-error p{line-height:1.6;overflow-wrap:anywhere}
@media(max-width:700px){#modal.quote-editor{padding:12px}.quote-editor>.modal-head{top:-12px}.quote-editor>.modal-actions{bottom:-12px}.quote-editor>.form-grid.three{grid-template-columns:repeat(2,minmax(0,1fr))}.quote-editor .quote-head{grid-template-columns:1fr}.quote-lines-scroll{max-height:42vh}}

/* Automatically populated project agreements. */
#modal.contract-editor{width:94vw;max-width:1180px;color:var(--navy)}
.contract-editor input,.contract-editor textarea,.contract-editor button{font-family:'DM Sans',Arial,sans-serif}
.contract-auto{display:grid;grid-template-columns:1.2fr 1fr .8fr;gap:18px;padding:18px;border:1px solid var(--line);border-radius:8px;margin:18px 0}
.contract-auto>div{display:flex;flex-direction:column;gap:6px}.contract-auto small{font-size:10px;color:var(--muted)}
.contract-editor h3{margin:24px 0 12px}.contract-editor .table-wrap{margin-bottom:12px}.contract-materials{margin:24px 0}.contract-materials summary{cursor:pointer;font-weight:700;margin-bottom:12px}
#contractPayments table{min-width:670px}#contractPayments td:nth-child(3){width:95px}#contractPayments td:nth-child(4){white-space:nowrap}
#contractPayments input,#contractWarranties textarea{width:100%;min-width:0;border:1px solid var(--line);border-radius:5px;padding:8px;font:inherit;color:var(--navy);background:white}
#contractWarranties table{min-width:800px}#contractWarranties textarea{min-height:65px}#contractWarranties td{vertical-align:top}#contractError{font-weight:700}
@media(max-width:700px){.contract-auto{grid-template-columns:1fr}.contract-editor .form-grid{grid-template-columns:1fr}}
