:root{--navy:#17263a;--gold:#b28a43;--ink:#1c2735;--muted:#6d7783;--line:#dfe3e8;--bg:#f6f7f9;--white:#fff}*{box-sizing:border-box}body{margin:0;font-family:Inter,Arial,sans-serif;color:var(--ink);background:var(--bg)}header{height:76px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:10px max(20px,calc((100% - 1180px)/2))}header img{width:220px;max-height:54px;object-fit:contain}header nav{display:flex;gap:18px;align-items:center}a{color:var(--navy);text-decoration:none}.wrap{max-width:1180px;margin:0 auto;padding:28px 20px 60px}.heading,.section-head,.jobtop,.jobhero,.stagebar{display:flex;justify-content:space-between;gap:20px;align-items:center}.heading h1,.jobhero h1{margin:2px 0;font-family:Georgia,serif;color:var(--navy)}.heading p,.jobhero p{margin:5px 0;color:var(--muted)}.eyebrow{text-transform:uppercase;letter-spacing:.12em;font-size:12px;font-weight:700;color:var(--gold)!important}button,.btn{border:0;border-radius:8px;background:var(--navy);color:white;padding:11px 16px;font-weight:700;cursor:pointer;display:inline-block}.secondary{background:white!important;color:var(--navy)!important;border:1px solid var(--line)!important}.stats{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;margin:24px 0}.stats article,.job,.panel,.jobhero,.stagebar{background:#fff;border:1px solid var(--line);border-radius:12px;padding:18px}.stats small,.job small,.jobhero small{display:block;color:var(--muted);margin-bottom:6px}.stats strong{font-size:25px;color:var(--navy)}.toolbar{display:grid;grid-template-columns:1fr 240px;gap:12px;margin:20px 0}.toolbar input,.toolbar select,input,select,textarea{width:100%;border:1px solid #cfd5dc;border-radius:7px;padding:11px 12px;background:#fff;font:inherit;color:var(--ink)}label{display:block;font-size:14px;font-weight:600;margin:10px 0}label input,label select,label textarea{margin-top:6px}.jobs{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.job h3{margin:4px 0;color:var(--navy)}.job p{color:var(--muted)}.job[hidden]{display:none}.jobhero{margin:16px 0}.jobhero>div:last-child{text-align:right}.jobhero>div:last-child strong{display:block;font-size:24px}.stagebar{margin-bottom:15px}.stagebar label{display:flex;gap:10px;align-items:center;margin:0}.stagebar select{width:auto}.tabs{display:flex;gap:6px;overflow:auto;margin:16px 0}.tabs a{white-space:nowrap;padding:10px 13px;border:1px solid var(--line);border-radius:8px;background:#fff;font-weight:600}.tabs a.active{border-color:var(--gold);background:#fffaf0}.panel h2{margin-top:0;color:var(--navy)}.formgrid{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}.full{grid-column:1/-1}dialog{width:min(680px,calc(100% - 24px));border:0;border-radius:14px;padding:22px}dialog::backdrop{background:#0d1724aa}.dialog-head{display:flex;justify-content:space-between;align-items:center}.icon{background:transparent;color:var(--ink);font-size:26px;padding:4px 10px}.quoteitems{margin:15px 0}.quote-row{display:grid;grid-template-columns:1fr 90px 130px 42px;gap:8px;margin-bottom:8px}.quote-row button{padding:5px;background:#eee;color:#333}.invoice-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:18px 0}.invoice-summary p{background:var(--bg);padding:12px;border-radius:8px}.invoice-summary strong{display:block;margin-top:5px}.back{display:inline-block;margin-bottom:8px}.login{min-height:100vh;display:grid;place-items:center;padding:20px;background:#f4f5f7}.login-card{width:min(440px,100%);background:white;border:1px solid var(--line);border-radius:14px;padding:30px}.login-logo{width:100%;height:95px;object-fit:contain}.login-card h1{text-align:center;color:var(--navy)}.login-card button{width:100%;margin-top:10px}.alert,.success{padding:12px;border-radius:8px;margin:12px 0}.alert{background:#fff0f0}.success{background:#eef9ef}.print{background:#fff}.print main{max-width:850px;margin:30px auto;padding:30px}.print-head{display:flex;justify-content:space-between;align-items:center}.print-head img{width:330px}.print-head div{text-align:right}.print-grid{display:grid;grid-template-columns:1fr 1fr;gap:30px;margin:30px 0}.print table{width:100%;border-collapse:collapse}.print th,.print td{text-align:left;border-bottom:1px solid #ddd;padding:10px}.print th:not(:first-child),.print td:not(:first-child){text-align:right}.print-total{text-align:right;font-size:20px;padding:20px 0}.print-total strong{margin-left:30px}@media print{.no-print{display:none}.print main{margin:0;max-width:none}}@media(max-width:720px){header img{width:160px}.stats{grid-template-columns:1fr 1fr}.stats article:last-child{grid-column:1/-1}.jobs{grid-template-columns:1fr}.toolbar{grid-template-columns:1fr}.heading,.jobhero{align-items:flex-start}.formgrid{grid-template-columns:1fr}.full{grid-column:auto}.quote-row{grid-template-columns:1fr 65px 90px 40px}.invoice-summary{grid-template-columns:1fr 1fr}.stagebar{align-items:flex-end;flex-direction:column}.stagebar label{width:100%;display:block}.stagebar select{width:100%}.print-head,.print-grid{grid-template-columns:1fr;display:grid}.print-head div{text-align:left}.print-head img{width:100%}}
/* Gantt schedule */
.schedule-tools{display:flex;justify-content:space-between;gap:12px;align-items:center;margin:18px 0;flex-wrap:wrap}.schedule-tools>div{display:flex;gap:7px;flex-wrap:wrap}.gantt-scroll{overflow-x:auto;background:#fff;border:1px solid var(--line);border-radius:12px;margin-bottom:18px}.gantt{--label:230px;display:grid;grid-template-columns:var(--label) repeat(var(--days),minmax(34px,1fr));min-width:calc(var(--label) + var(--days)*34px)}.gantt-corner{position:sticky;left:0;z-index:5;background:var(--navy);color:#fff;padding:12px;font-weight:700;border-right:1px solid #ffffff33}.gantt-day-head{min-height:58px;text-align:center;padding:6px 2px;background:var(--navy);color:#fff;border-left:1px solid #ffffff22;position:relative}.gantt-day-head small,.gantt-day-head strong,.gantt-day-head em{display:block}.gantt-day-head small{font-size:10px;opacity:.75}.gantt-day-head strong{font-size:15px}.gantt-day-head em{font-size:9px;font-style:normal;color:#e5c98d}.gantt-day-head.weekend{background:#31465f}.gantt-day-head.today{box-shadow:inset 3px 0 0 var(--gold),inset -3px 0 0 var(--gold),inset 0 -5px 0 var(--gold);background:#203652}.gantt-label{position:sticky;left:0;z-index:4;background:#fff;border-top:1px solid var(--line);border-right:1px solid var(--line);padding:10px 12px;min-height:58px}.gantt-label strong,.gantt-label small{display:block}.gantt-label strong{color:var(--navy)}.gantt-label small{color:var(--muted);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gantt-gridrow{grid-column:2/-1;display:grid;grid-template-columns:repeat(var(--days),minmax(34px,1fr));position:relative;min-height:58px;border-top:1px solid var(--line)}.gantt-gridrow>span{grid-row:1;border-left:1px solid #edf0f3}.gantt-gridrow>span.weekend{background:#e9edf1}.gantt-gridrow>span.today{background:#fff4d9;border-left:3px solid var(--gold);border-right:1px solid #d9bd7c}.gantt-bar{grid-row:1;align-self:center;z-index:2;margin:8px 3px;padding:8px 10px;border-radius:7px;background:var(--navy);color:#fff;min-width:0;overflow:hidden;display:flex;gap:8px;align-items:center;justify-content:space-between}.gantt-bar b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13px}.gantt-bar small{color:#ead6aa;white-space:nowrap}.gantt-empty{grid-column:1/-1;padding:30px;text-align:center;color:var(--muted)}.survey-strip{margin-top:18px}.survey-list{display:grid;gap:8px}.survey-list a{display:grid;grid-template-columns:180px 1fr;gap:12px;padding:11px 0;border-top:1px solid var(--line)}.survey-list span,.muted{color:var(--muted)}
@media(max-width:720px){.schedule-tools{align-items:stretch}.schedule-tools>div{width:100%}.schedule-tools .btn{flex:1;text-align:center;padding:10px 8px}.gantt{--label:150px}.gantt-label{padding:9px 8px}.gantt-label small{font-size:11px}.gantt-bar{padding:7px}.gantt-bar small{display:none}.survey-list a{grid-template-columns:1fr;gap:3px}}

/* V2.1 schedule polish */
.gantt-bar.install{background:var(--navy);border-left:4px solid var(--gold);justify-content:center;gap:6px;text-align:center}
.gantt-bar.install b{overflow:visible;text-overflow:clip}
.gantt-bar.install small{font-weight:800;color:#f1dcae}
.schedule-legend{display:flex;gap:18px;align-items:center;flex-wrap:wrap;margin:-5px 0 16px;color:var(--muted);font-size:13px;font-weight:600}
.schedule-legend span{display:flex;align-items:center;gap:7px}.schedule-legend i{display:inline-block;width:18px;height:10px;border-radius:3px}
.legend-install{background:var(--navy);border-left:4px solid var(--gold)}.legend-survey{background:#d8b86b}.legend-today{background:#fff4d9;border-left:3px solid var(--gold);border-right:1px solid #d9bd7c}
.survey-list a{border-left:4px solid transparent;padding-left:10px}.survey-list a:hover{border-left-color:var(--gold);background:#faf8f3}
.survey-dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--gold);margin-right:8px}
.field-help{display:block;margin-top:6px;color:var(--muted);font-weight:400;line-height:1.35}
@media(max-width:1050px){.stats{grid-template-columns:repeat(3,1fr)}}
@media(max-width:720px){.stats{grid-template-columns:1fr 1fr}.stats article:last-child{grid-column:auto}.gantt-bar.install{padding:7px 4px}.gantt-bar.install b{font-size:11px}.schedule-legend{gap:10px}}

/* V2.2 archive/delete */
.archive-link{display:inline-block;margin-top:3px;font-size:13px;font-weight:700;color:var(--gold)}
.danger-zone{margin-top:18px;border-color:#e3c9c9}.danger-zone h2{color:#7f2424}.danger-zone p{color:var(--muted);max-width:760px}.danger-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.danger-actions form{margin:0}.danger-btn{background:#9d2d2d}.danger-btn:hover{background:#7f2424}

/* V2.3 quotation builder */
.quote-builder{padding:20px}.quote-section{border-top:1px solid var(--line);padding:20px 0}.quote-section:first-of-type{border-top:0}.quote-section h3{margin:0 0 5px;color:var(--navy)}.quote-section .muted{margin:4px 0 12px}.quote-head-actions{display:flex;gap:8px}.switch-label{display:flex;gap:8px;align-items:center;font-weight:600;margin:0}.switch-label input{width:auto;margin:0}.quote-row{grid-template-columns:minmax(220px,1fr) 80px 120px 110px 42px;align-items:center}.quote-row-head{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:700;padding:0 0 5px}.quote-row-head span:nth-child(n+2){text-align:right}.line-total{text-align:right;color:var(--navy)}.option-row{display:grid;grid-template-columns:1fr 140px 42px;gap:8px;margin:8px 0}.option-row button{padding:5px;background:#eee;color:#333}.quote-summary{display:flex;justify-content:flex-end;gap:14px;background:#f8f5ee;border:1px solid #e7dcc6;border-radius:10px;padding:16px;margin:20px 0}.quote-summary>div{min-width:180px}.quote-summary small,.quote-summary strong{display:block;text-align:right}.quote-summary small{color:var(--muted);margin-bottom:5px}.quote-summary strong{font-size:24px;color:var(--navy)}.quote-savebar{display:flex;justify-content:flex-end;gap:10px}.history-list{display:grid;gap:8px}.history-list a{display:flex;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid var(--line);border-radius:8px}.history-list span{color:var(--muted)}.print-section{margin:26px 0}.print-section h2{font-size:18px;color:var(--navy);border-bottom:1px solid #ddd;padding-bottom:7px}.print-copy{line-height:1.55}.customer-total-label{text-align:right;font-weight:600}.print .muted{font-size:12px}.print p{line-height:1.5}
@media(max-width:720px){.quote-row{grid-template-columns:1fr 60px 85px 75px 36px;gap:5px}.quote-row-head{display:none}.quote-row input{padding:9px 7px}.line-total{font-size:12px}.option-row{grid-template-columns:1fr 90px 36px}.quote-summary{display:grid;grid-template-columns:1fr 1fr}.quote-summary>div{min-width:0}.quote-savebar{display:grid;grid-template-columns:1fr}.quote-savebar button{width:100%}.quote-section .section-head{align-items:flex-start;display:block}.switch-label{margin-top:12px}.history-list a{display:grid}}

/* V2.4 interface refinements */
.tabs a{background:var(--navy);color:#fff;border-color:var(--navy);font-weight:700}
.tabs a:hover{filter:brightness(1.12)}
.tabs a.active{background:var(--gold);color:#fff;border-color:var(--gold)}
.validity-note{margin:10px 0;padding:10px 12px;border:1px solid var(--line);border-radius:7px;background:var(--bg);display:flex;flex-direction:column;justify-content:center}
.validity-note small{color:var(--muted);margin-bottom:5px}.validity-note strong{color:var(--navy)}
.quote-price-field{max-width:360px}.quote-price-field input{font-size:20px;font-weight:700}

/* V2.6 quotation print polish */
.customer-address p{margin:0;font-size:16px;font-weight:400;line-height:1.55}.print-footer{margin-top:42px;padding-top:16px;border-top:1px solid var(--line);text-align:center;color:var(--navy);font-size:12px;line-height:1.6}.print-footer strong,.print-footer span{display:block}.print-footer strong{font-size:14px}.print-footer span:first-of-type{color:var(--gold);font-weight:700}


/* V2.7 quotation document polish */
.print main{min-height:calc(100vh - 60px);display:flex;flex-direction:column}
.print-head{align-items:flex-start}
.print-head img{width:410px;max-width:52%}
.print-head h1{margin:0 0 18px}
.print-head p{margin:12px 0 0}
.validity-inline{font-size:12px;color:var(--muted);margin-top:7px!important}
.print-grid.customer-only{grid-template-columns:1fr;margin:20px 0 22px}
.quote-total-box{display:flex;justify-content:flex-end;align-items:center;gap:28px;margin:22px 0;padding:14px 0;background:transparent;border:0;border-top:2px solid var(--gold);border-bottom:0;border-radius:0;box-shadow:none;color:var(--navy)}
.quote-total-box span{font-weight:700}.quote-total-box strong{font-size:25px;margin-left:0}
.quote-thanks{margin-top:34px;text-align:center;color:var(--navy);font-size:14px}
.print-footer{margin-top:auto}
@media print{.print main{min-height:265mm;padding:10mm 12mm}.print-footer{margin-top:auto}.print-head img{width:410px}}
@media(max-width:720px){.print-head img{width:100%;max-width:100%}.print-head h1{margin-top:16px}.quote-total-box{justify-content:space-between;gap:12px}.quote-total-box strong{font-size:21px}}
