:root {
  --sun:#F4A013; --sun-light:#FEF3DC; --navy:#0D1B2A; --navy-mid:#162A40;
  --teal:#00AFA3; --teal-light:#E0FAF8; --green:#079447; --slate:#64748B; --muted:#64748B;
  --line:#E2E8F0; --bg:#EEF2F7; --white:#FFFFFF; --danger:#DC2626;
  --radius:14px; --radius-sm:9px; --shadow:0 4px 24px rgba(13,27,42,.10);
  --shadow-lg:0 10px 45px rgba(13,27,42,.20);
}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:'DM Sans',Arial,sans-serif;background:var(--bg);color:var(--navy);min-height:100vh;font-size:14px;line-height:1.55}
.hidden{display:none!important}.muted{color:var(--muted);font-size:13px}.mono{font-family:'DM Mono',monospace}
.login-shell,.install-wrap{min-height:100vh;display:grid;place-items:center;padding:24px}
.login-card{width:min(440px,100%);background:var(--white);border-radius:22px;padding:38px 34px;box-shadow:var(--shadow-lg);position:relative;overflow:hidden}
.login-card:before{content:"";position:absolute;inset:-120px -160px auto auto;width:360px;height:360px;background:radial-gradient(circle,rgba(244,160,19,.18),transparent 68%);border-radius:50%}
.login-card h1{position:relative;font-size:24px;letter-spacing:-.3px;margin-bottom:8px;display:flex;align-items:center;gap:10px}
.login-card h1:before,.topbar h1:before{content:"";width:38px;height:38px;border-radius:12px;background:conic-gradient(from 0deg,var(--sun),#ffd27c,var(--sun));display:inline-flex;box-shadow:0 0 0 5px rgba(244,160,19,.12)}
.form-grid{display:grid;gap:14px;margin-top:20px}.form-grid label{display:grid;gap:6px;font-weight:800;color:var(--slate);font-size:12px;text-transform:uppercase;letter-spacing:.45px}
input,select,textarea{width:100%;padding:10px 12px;border:1.5px solid var(--line);border-radius:var(--radius-sm);font:inherit;color:var(--navy);background:var(--white);outline:none;transition:.16s}
textarea{min-height:86px;font-family:'DM Mono',monospace;font-size:12px}
input:focus,select:focus,textarea:focus{border-color:var(--sun);box-shadow:0 0 0 3px rgba(244,160,19,.15)}
button,.button{border:0;background:var(--teal);color:white;padding:10px 15px;border-radius:var(--radius-sm);font:inherit;font-size:13px;font-weight:800;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:7px}
button.secondary{background:var(--navy)}button.danger{background:var(--danger)}button.ghost{background:#F8FAFC;color:var(--navy);border:1.5px solid var(--line)}button.primary,.button.primary{background:var(--teal)}.wide{width:100%}
button:disabled{opacity:.48;cursor:not-allowed}.notice{padding:11px 12px;border-radius:10px;margin:14px 0;font-weight:700}.notice.success{background:#ECFDF5;color:#047857}.notice.danger{background:#FEF2F2;color:#B91C1C}
.auth-tabs{display:flex;gap:8px;margin:22px 0 4px}.auth-tab{flex:1;background:#F8FAFC;color:var(--slate);border:1.5px solid var(--line)}.auth-tab.active{background:var(--navy);color:white;border-color:var(--navy)}
.auth-panel{display:none}.auth-panel.active{display:grid}.status-line{min-height:20px;color:var(--muted);font-weight:700}
.app-shell{display:grid;grid-template-columns:220px minmax(0,1fr);min-height:100vh}
.topbar{grid-column:1/-1;position:sticky;top:0;z-index:20;display:flex;justify-content:space-between;gap:14px;align-items:flex-start;background:linear-gradient(135deg,var(--navy),var(--navy-mid));color:white;padding:16px 30px;box-shadow:0 4px 18px rgba(0,0,0,.18)}
.topbar h1{font-size:18px;display:flex;align-items:center;gap:10px}.topbar .muted{color:rgba(255,255,255,.68)}
.toolbar{display:flex;flex-wrap:wrap;gap:9px;align-items:center}.mode-selector{display:grid;gap:5px;min-width:220px;font-size:10.5px;font-weight:900;text-transform:uppercase;letter-spacing:.5px;color:var(--muted)}.mode-switch{position:relative;display:grid;grid-template-columns:1fr 1fr;align-items:center;width:220px;height:38px;padding:3px;border:1.5px solid var(--line);border-radius:999px;background:#EEF2F7;color:#64748B;box-shadow:inset 0 1px 2px rgba(15,23,42,.06);cursor:pointer;overflow:hidden}.mode-switch.is-solar{border-color:#B7E4C7;background:#EAF8EF}.mode-switch.is-non-solar{border-color:#CBD5E1;background:#EEF2F7}.mode-switch i{position:absolute;left:3px;top:3px;bottom:3px;width:calc(50% - 3px);border-radius:999px;background:var(--navy);box-shadow:0 8px 18px rgba(13,27,42,.18);transition:transform .2s ease,background .2s ease}.mode-switch.is-solar i{transform:translateX(calc(100% + 1px));background:linear-gradient(135deg,var(--green),var(--teal));box-shadow:0 8px 20px rgba(7,148,71,.28)}.mode-switch span{position:relative;z-index:1;display:grid;place-items:center;height:100%;font-size:11px;font-weight:900;line-height:1;text-transform:none;letter-spacing:0;color:#64748B;transition:color .2s ease}.mode-switch.is-solar .mode-left{color:#475569}.mode-switch.is-non-solar .mode-left,.mode-switch.is-solar .mode-right{color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.18)}.mode-switch:focus-visible{outline:3px solid rgba(0,175,163,.22);outline-offset:2px}.badge{display:inline-block;padding:8px 12px;border-radius:999px;background:rgba(255,255,255,.10);color:rgba(255,255,255,.86);border:1px solid rgba(255,255,255,.16);font-family:'DM Mono',monospace;font-size:11px;font-weight:700}.session-restore-input{width:210px}
.sidebar{position:sticky;top:78px;height:calc(100vh - 78px);padding:18px;background:#fff;border-right:1px solid var(--line);display:flex;flex-direction:column;gap:8px}
.tab-btn{justify-content:flex-start;background:#fff;color:var(--slate);border:1.5px solid var(--line);border-radius:999px}.tab-btn.active{background:var(--navy);color:#fff;border-color:var(--navy)}
.workspace{padding:22px 28px 50px;min-width:0}.card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:22px;margin:18px 0;box-shadow:var(--shadow)}
h2{font-size:16px;margin-bottom:16px;letter-spacing:-.2px}.section-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:14px}
.grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.dashboard-grid,.result-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:13px}
.metric{border:1px solid var(--line);border-radius:14px;padding:16px;background:linear-gradient(180deg,#fff,#F8FAFC)}.metric b,.analytics-card b{display:block;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.55px;margin-bottom:8px}.metric span{display:block;font-family:'DM Mono',monospace;font-size:17px;font-weight:800;word-break:break-word}.metric small{color:var(--muted)}
.tab-panel{display:none}.tab-panel.active{display:block}.table-wrap{width:100%;overflow:auto;border:1px solid var(--line);border-radius:12px}table{width:100%;border-collapse:collapse;font-size:13px;background:white}th{background:#F8FAFC;color:var(--slate);font-size:10.5px;text-transform:uppercase;letter-spacing:.65px;font-weight:800;padding:9px 10px;text-align:left;border-bottom:1px solid var(--line);white-space:nowrap}td{padding:9px 10px;border-bottom:1px solid var(--line);vertical-align:middle}tr:last-child td{border-bottom:0}tbody tr:hover td{background:#FBFDFF}
.load-table input,.load-table select,.data-table input{min-width:88px;padding:7px 9px;font-size:13px}.load-table .appliance{min-width:180px}.load-table .small{min-width:72px}
.load-total-grid,.price-summary-grid,.analytics-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:13px;margin:14px 0}.load-total-card,.analytics-card{border:1px solid var(--line);border-radius:14px;padding:14px;background:linear-gradient(180deg,#fff,#F8FAFC)}.load-total-card b{display:block;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.55px}.load-total-card span,.analytics-card span{display:block;font-family:'DM Mono',monospace;font-size:16px;font-weight:900}
.margin-row{display:flex;gap:8px;margin:18px 0}.margin-row button{background:#F8FAFC;color:var(--navy);border:1.5px solid var(--line)}.margin-row button.active{background:var(--sun);border-color:var(--sun);color:var(--navy)}
.chart-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:16px 0}.chart-card{border:1px solid var(--line);border-radius:14px;padding:16px;background:#fff;box-shadow:var(--shadow)}.chart-title{font-size:12px;font-weight:800;color:var(--slate);text-transform:uppercase;letter-spacing:.65px;margin-bottom:10px}canvas{width:100%;max-width:100%}
.admin-tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}.admin-tabs button{background:#F8FAFC;color:var(--slate);border:1.5px solid var(--line)}.admin-tabs button.active{background:var(--sun);color:var(--navy);border-color:var(--sun)}.admin-editor{display:grid;gap:14px}.admin-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.mini{padding:6px 10px;font-size:12px}.session-search{display:grid;grid-template-columns:repeat(6,minmax(120px,1fr));gap:10px;margin-bottom:14px}.bos-accordion{background:#F8FAFC;border:1px solid var(--line);border-radius:10px;padding:10px}.bos-accordion summary{font-weight:900;cursor:pointer;color:var(--navy)}.bos-detail-row td{background:#FBFDFF}.product-editor input[readonly]{background:#F8FAFC;color:#475569}.product-editor th,.product-editor td{white-space:nowrap}.proposal-doc{background:#E5E7EB;color:#000;padding:18px;border:0;border-radius:0;font-family:Arial,'DM Sans',sans-serif}.proposal-page{width:794px;min-height:1123px;margin:0 auto 18px;background:#fff;padding:0 64px 58px;page-break-after:always;position:relative;box-shadow:0 2px 18px rgba(15,23,42,.16);overflow:hidden}.proposal-page:after{content:"";position:absolute;left:0;right:0;bottom:16px;height:6px;background:#079447}.proposal-page-head{height:40px;margin:0 -64px 50px;border-top:15px solid #079447;position:relative}.proposal-code{position:absolute;top:9px;right:66px;font-size:12px;font-weight:700;font-style:italic;color:#000}.proposal-content-narrow{width:520px;margin:0 auto}.proposal-cover{padding-top:0;background:#fff}.proposal-cover:after{height:6px;background:#079447;bottom:16px}.proposal-hero{height:205px;margin:0 -54px;position:relative;background:#079447;overflow:hidden}.sun-disc{position:absolute;right:58px;bottom:-94px;width:315px;height:315px;background:#fff200;border-radius:50%}.hill-one{position:absolute;right:0;bottom:0;width:380px;height:205px;background:#006d35;border-radius:60% 0 0 0;opacity:.9}.hill-two{position:absolute;left:155px;bottom:0;width:500px;height:145px;background:#fff200;border-radius:65% 65% 0 0}.skyline{position:absolute;left:0;right:0;bottom:0;height:68px;background:linear-gradient(to top,#064f2a 0 54px,transparent 54px)}.skyline span{position:absolute;bottom:42px;width:28px;background:#064f2a}.skyline span:nth-child(1){left:18px;height:46px;border-radius:50% 50% 0 0}.skyline span:nth-child(2){left:88px;height:70px;clip-path:polygon(50% 0,100% 100%,0 100%)}.skyline span:nth-child(3){left:185px;height:86px;width:4px}.skyline span:nth-child(3):before,.skyline span:nth-child(3):after{content:"";position:absolute;left:-38px;top:25px;width:80px;height:3px;background:#064f2a;transform:rotate(42deg)}.skyline span:nth-child(3):after{transform:rotate(-42deg)}.skyline span:nth-child(4){right:116px;height:62px;border-radius:45% 45% 0 0}.skyline span:nth-child(5){right:12px;height:76px;width:30px}.proposal-logo{font-weight:900;line-height:.82;color:#fff;position:relative;z-index:3}.proposal-logo span{display:block;font-size:44px;letter-spacing:-3px}.proposal-logo b{display:block;font-size:46px;font-weight:500;letter-spacing:-3px}.proposal-logo i{position:absolute;width:28px;height:28px;border-radius:50%;background:#fff200;left:72px;top:50px}.proposal-logo-small{position:absolute;left:12px;top:2px;color:#079447}.proposal-logo-small span{font-size:18px;letter-spacing:-1px}.proposal-logo-small b{font-size:16px;letter-spacing:-1px;color:#000}.proposal-logo-small i{width:10px;height:10px;left:28px;top:22px}.proposal-logo-large{position:absolute;left:4px;top:12px}.proposal-footer-logo{position:absolute;right:32px;bottom:42px;color:#079447}.proposal-footer-logo span{font-size:22px;letter-spacing:-1px}.proposal-footer-logo b{font-size:20px;letter-spacing:-1px;color:#000}.proposal-footer-logo i{width:12px;height:12px;left:36px;top:26px}.proposal-doc h1{font-size:18px;font-weight:700;text-align:center;margin:0 0 16px;color:#374151;line-height:1.2}.proposal-doc h2{margin:22px 0 10px;font-size:16px;color:#000;font-weight:700}.proposal-doc h3{font-size:13px;color:#000;text-transform:none;letter-spacing:0;margin:8px 0}.proposal-doc p,.proposal-doc li{font-size:12px;line-height:1.42;color:#000}.proposal-doc ul,.proposal-doc ol{padding-left:20px}.proposal-doc table{margin-top:10px;border-collapse:collapse;width:100%;font-size:11px}.proposal-doc th{background:#fff;color:#000;border:1px solid #000;font-size:11px;letter-spacing:0;padding:3px 5px;text-align:left}.proposal-doc td{border:1px solid #000;padding:3px 5px;line-height:1.18}.proposal-cover-table{width:520px!important;margin:0 auto!important}.proposal-cover-table td:first-child,.proposal-cover-table td:nth-child(3){background:#f5ffe8;color:#14532d}.proposal-cover-table a{color:#0057d9;text-decoration:underline}.proposal-solution-table td:first-child{width:140px;font-weight:700}.proposal-roof-box{height:230px;border:1px solid #CBD5E1;background:repeating-linear-gradient(45deg,#F8FAFC,#F8FAFC 12px,#EEF2F7 12px,#EEF2F7 24px);display:grid;place-items:center;color:#64748B;font-weight:700;margin:14px 0 26px}.proposal-total{color:#111827;font-size:18px!important}.proposal-muted{color:#64748B!important;font-size:11px!important}.proposal-chart-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}.proposal-chart{border:1px solid #000;padding:6px;border-radius:0}.proposal-chart img{width:100%;height:auto;display:block}
.loader{position:fixed;inset:0;background:rgba(13,27,42,.35);backdrop-filter:blur(3px);z-index:100;display:grid;place-items:center;color:white;font-weight:900}.loader span{margin-top:86px;position:absolute}.gear{width:74px;height:74px;border-radius:50%;border:10px solid rgba(255,255,255,.35);border-top-color:var(--sun);border-right-color:var(--teal);animation:spin .85s linear infinite;box-shadow:0 0 0 10px rgba(255,255,255,.10)}@keyframes spin{to{transform:rotate(360deg)}}
@media(max-width:1050px){.app-shell{grid-template-columns:1fr}.sidebar{position:static;height:auto;flex-direction:row;overflow:auto}.grid,.dashboard-grid,.result-grid,.load-total-grid,.price-summary-grid,.analytics-grid,.session-search{grid-template-columns:repeat(2,minmax(0,1fr))}.chart-grid,.proposal-chart-grid{grid-template-columns:1fr}.topbar{position:static;flex-direction:column}.workspace{padding:16px}.session-restore-input{width:100%}}
@media(max-width:620px){.grid,.dashboard-grid,.result-grid,.load-total-grid,.price-summary-grid,.analytics-grid,.session-search{grid-template-columns:1fr}.section-head{display:block}.toolbar{margin-top:12px}.login-card{padding:28px 22px}.sidebar{padding:12px}.topbar{padding:14px 16px}.proposal-page{width:100%;min-height:auto;padding:32px 20px}.proposal-cover-grid{grid-template-columns:1fr;width:auto}.proposal-cover-grid div{display:block}}
@page{size:A4;margin:0}
@media print{body{background:white}.topbar,.sidebar,.toolbar,.tab-btn,.dashboard-grid{display:none!important}.app-shell{display:block}.workspace{padding:0}.card{box-shadow:none;border:0}.tab-panel{display:block}.tab-panel:not(#tab-quote){display:none!important}.proposal-doc{display:block;background:#fff;padding:0}.proposal-page{width:210mm;min-height:297mm;margin:0;box-shadow:none;page-break-after:always;border:0}.proposal-page:last-child{page-break-after:auto}}

.proposal-hero-img{display:block;width:calc(100% + 108px);height:205px;object-fit:cover;margin:0 -54px 0}
.proposal-footer-img{position:absolute;right:30px;bottom:42px;width:96px;height:auto}
.proposal-small-logo-img{position:absolute;left:8px;top:2px;width:72px;height:auto}
.proposal-cover .proposal-hero,.proposal-cover .proposal-logo,.proposal-cover .sun-disc,.proposal-cover .hill,.proposal-cover .skyline,.proposal-page-head .proposal-logo{display:none!important}

.proposal-cover-kicker{width:520px;margin:22px auto 8px;color:#079447;font-weight:800;font-size:12px;text-transform:uppercase;letter-spacing:0}.proposal-page .proposal-page-head{margin-bottom:26px}.proposal-page-title{font-size:20px!important;line-height:1.18!important;margin:0 0 14px!important;color:#064f2a!important}.proposal-summary-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:14px 0 16px}.proposal-summary-card{border:1px solid #B7E4C7;background:#F6FFF8;padding:10px 12px;min-height:64px}.proposal-summary-card span{display:block;color:#166534;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:0;margin-bottom:5px}.proposal-summary-card b{display:block;color:#111827;font-size:15px;line-height:1.2}.proposal-two-col{display:grid;grid-template-columns:1fr 1fr;gap:16px}.proposal-offer-table td:last-child{text-align:right;font-weight:700}.proposal-doc .proposal-page h3{color:#064f2a;font-size:12px;text-transform:uppercase;letter-spacing:0;margin-top:14px}.proposal-doc .proposal-page table{page-break-inside:auto}.proposal-doc .proposal-page tr{page-break-inside:avoid}
@media(max-width:620px){.proposal-cover-kicker{width:auto;margin-top:14px}.proposal-summary-grid,.proposal-two-col{grid-template-columns:1fr}}

.quote-margin-row{margin-top:0;margin-bottom:14px}.status-badge{display:inline-flex;align-items:center;justify-content:center;min-width:72px;padding:5px 9px;border-radius:999px;font-size:11px;font-weight:900;text-transform:uppercase;letter-spacing:.35px}.status-draft{background:#F1F5F9;color:#475569}.status-pending{background:#FEF3C7;color:#92400E}.status-approved{background:#DCFCE7;color:#166534}.status-rejected{background:#FEE2E2;color:#991B1B}.inline-form{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.inline-form input[type=file]{width:220px;background:#fff}.admin-actions{margin:4px 0 16px}.admin-user-table input,.admin-user-table select{min-width:132px}.session-search select{min-width:120px}

button,.button{min-height:42px;border:1.5px solid transparent;border-radius:12px;line-height:1.1;white-space:nowrap;box-shadow:0 2px 8px rgba(13,27,42,.08);transition:background .16s ease,border-color .16s ease,box-shadow .16s ease,transform .16s ease}
button:hover,.button:hover{box-shadow:0 5px 14px rgba(13,27,42,.12);transform:translateY(-1px)}
button:active,.button:active{transform:translateY(0)}
button.ghost{border-color:#DDE7F1;box-shadow:none}
button.primary,.button.primary{border-color:var(--teal)}
button.secondary{border-color:var(--navy)}
button.danger{border-color:var(--danger)}
button.mini{min-height:30px;border-radius:9px;padding:6px 10px;font-size:12px;box-shadow:none}
.toolbar{gap:10px}.toolbar button{flex:0 0 auto}
.mode-selector{min-width:240px}.mode-switch{width:240px;height:44px;border-color:#B7E4C7;box-shadow:inset 0 1px 2px rgba(15,23,42,.07)}.mode-switch span{font-size:11.5px}.mode-switch i{box-shadow:0 8px 20px rgba(13,27,42,.18)}
#tab-quote .section-head{align-items:flex-start}
#tab-quote .section-head>div:first-child{flex:0 1 460px}
.quote-actions{flex:1 1 620px;flex-wrap:nowrap;justify-content:flex-end;gap:8px}
.quote-actions button{min-height:38px;padding:8px 12px;border-radius:10px;font-size:12.5px;box-shadow:none}
.quote-actions #proposalBtn{padding-left:14px;padding-right:14px}
.chart-card canvas{display:block}
@media(max-width:1200px){#tab-quote .section-head{display:block}.quote-actions{justify-content:flex-start;flex-wrap:wrap;margin-top:12px}}
