@charset "UTF-8";
:root{--ink:#173342;--muted:#70818b;--line:#dce5e8;--bg:#f3f6f7;--green:#087b73;--soft:#e7f4ef;--navy:#132e3d;--amber:#99621d}*{box-sizing:border-box}body{margin:0;background:var(--bg);font-family:"Segoe UI","Microsoft YaHei",sans-serif;color:var(--ink);font-size:14px}button,input,select,textarea{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer;border:1px solid var(--line);background:white;color:var(--ink);border-radius:8px;padding:10px 14px;font-weight:600}button:hover{border-color:var(--green);background:#f2faf7}button:disabled{opacity:.5;cursor:wait}button.primary{background:var(--green);color:white;border-color:var(--green)}button.dark{background:var(--navy);color:white}button.small{padding:7px 10px;font-size:12px}a{color:var(--green);text-decoration:none}a:hover{text-decoration:underline}input,select,textarea{width:100%;padding:11px 12px;border:1px solid #cfdcde;border-radius:7px;background:white;color:var(--ink)}input:focus,select:focus,textarea:focus{outline:2px solid #a8d7c8;outline-offset:1px}textarea{min-height:84px;resize:vertical}label{display:block;font-size:12px;font-weight:600;color:#4b6571;margin-bottom:6px}label.check{display:flex;gap:10px;align-items:center;font-size:14px}input[type=checkbox]{width:auto}h1,h2,h3,p{margin:0}h1{font-size:29px;letter-spacing:-1px}h2{font-size:20px}h3{font-size:15px}p{line-height:1.7}.muted{color:var(--muted)}.smalltext{font-size:12px}.eyebrow{text-transform:uppercase;letter-spacing:2px;font-size:10px;font-weight:700;color:var(--green);margin-bottom:9px}.sidebar{width:225px;position:fixed;inset:0 auto 0 0;background:white;border-right:1px solid var(--line);padding:28px 18px;display:flex;flex-direction:column;z-index:5}.brand{display:flex;align-items:center;gap:10px;margin:0 7px 32px}.brandmark{display:grid;place-items:center;background:var(--navy);border-radius:12px;color:#55d9b7;width:39px;height:39px;font-size:24px;font-weight:800}.brand strong{font-size:17px}.brand small{display:block;font-size:9px;letter-spacing:2px;color:var(--muted);margin-top:4px}.navlabel{font-size:10px;color:var(--muted);margin:20px 10px 10px}.navitem{width:100%;text-align:left;margin:4px 0;border:0;background:none;padding:13px 14px;display:flex;gap:12px;align-items:center;color:#627684;font-weight:500}.navitem.active{background:var(--soft);color:var(--green);font-weight:700}.sidebar-bottom{margin-top:auto;font-size:12px;color:var(--muted);border-top:1px solid var(--line);padding-top:18px}.workspace{margin-left:225px;min-height:100vh}.topbar{height:72px;border-bottom:1px solid var(--line);background:#fff;display:flex;justify-content:space-between;align-items:center;padding:0 36px;gap:16px}.topbar .user{display:flex;align-items:center;gap:10px}.avatar{width:32px;height:32px;border-radius:50%;background:#e8f0f2;display:grid;place-items:center;font-weight:bold}.content{max-width:1600px;padding:32px 36px 60px;margin:auto}.pagehead{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:24px}.pagehead p{margin-top:8px;color:var(--muted);font-size:13px}.actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:24px}.metric{background:white;border:1px solid var(--line);border-radius:12px;padding:20px}.metric strong{display:block;font-size:28px;font-weight:650;margin:9px 0 4px}.metric small{color:var(--muted);font-size:11px}.panel{background:white;border:1px solid var(--line);border-radius:12px;overflow:hidden;margin-bottom:22px}.panelhead{padding:19px 22px;display:flex;justify-content:space-between;align-items:center;gap:12px;border-bottom:1px solid var(--line)}.panelbody{padding:22px}.notice{padding:12px 16px;background:#eaf2f6;border:1px solid #d8e5ec;border-radius:8px;font-size:12px;line-height:1.7;margin-bottom:22px}.notice.warn{background:#fff6e8;border-color:#f0dec1;color:#8a622e}.badge{display:inline-block;border-radius:5px;padding:4px 7px;background:var(--soft);color:var(--green);font-size:11px;white-space:nowrap}.badge.gray{background:#eef2f4;color:#76818b}.badge.warn{background:#fff1db;color:#9e6823}.filters{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.filters input,.filters select{width:auto;min-width:150px}.tablewrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:12px;text-align:left}th{background:#f6f9fa;color:#70838e;font-size:11px;font-weight:600;padding:14px 16px;white-space:nowrap}td{padding:17px 16px;border-bottom:1px solid #edf1f3;vertical-align:top}td small{display:block;margin-top:5px;color:var(--muted);line-height:1.6}tr:last-child td{border-bottom:0}.rowactions{display:flex;gap:5px;flex-wrap:wrap;min-width:260px}.rowactions button{font-size:10px;padding:6px 8px;font-weight:500}.empty{padding:55px 25px;text-align:center}.empty .icon{font-size:32px;color:#b9cfca;margin-bottom:12px}.empty p{font-size:13px;color:var(--muted);margin:9px auto 19px;max-width:460px}.week{min-width:980px;display:grid;grid-template-columns:130px repeat(7,minmax(115px,1fr))}.week>div{border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:13px 10px;min-height:155px}.week .weekhead{min-height:52px;background:#f6f9fa;font-size:11px;color:#667c86}.week .tech{background:#fbfcfc;font-weight:600;font-size:12px}.job{display:block;width:100%;text-align:left;background:#e9f5f0;border:0;border-left:3px solid #11967d;padding:10px;margin:0 0 8px;border-radius:5px;font-size:11px;line-height:1.7;font-weight:400}.job strong{display:block;font-size:12px}.job.qb{background:#eef0fb;border-left-color:#7886bd}.job .resize{display:block;text-align:center;cursor:ns-resize;color:#71968b;line-height:12px;user-select:none}.free{color:#a4b0b7;font-size:11px;text-align:center;padding:26px 0}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:20px}.listrow{padding:16px 22px;border-bottom:1px solid #edf1f3;display:flex;justify-content:space-between;gap:12px;align-items:center}.listrow:last-child{border-bottom:0}.listrow small{display:block;color:var(--muted);font-size:11px;margin-top:6px}.formgrid{display:grid;grid-template-columns:1fr 1fr;gap:17px}.span2{grid-column:1/-1}.field small{font-size:11px;color:var(--muted)}.formactions{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap;margin-top:24px;padding-top:20px;border-top:1px solid var(--line)}dialog{border:0;padding:0;box-shadow:0 28px 100px #142f3e40;border-radius:14px;width:min(850px,calc(100vw - 32px));max-height:90vh;color:var(--ink)}dialog::backdrop{background:#132e3d66;backdrop-filter:blur(3px)}.dialoghead{padding:22px 26px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line)}.dialoghead button{border:0;padding:4px 8px;font-size:20px}.dialogbody{padding:24px 26px}.dialogbody .notice{margin-bottom:18px}.detailhead{display:flex;justify-content:space-between;margin-bottom:20px}.detailgrid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:18px;margin-bottom:24px}.detailgrid label{margin-bottom:6px}.detailgrid p{font-size:12px}.sectiontitle{margin:24px 0 12px;padding-bottom:10px;border-bottom:1px solid var(--line);font-size:13px}.itemline{display:grid;grid-template-columns:2fr 65px 110px 34px;gap:8px;margin-bottom:10px}.itemline button{padding:6px}.itemline label{font-size:10px}.documentlist a{display:flex;justify-content:space-between;padding:12px 0;border-bottom:1px solid #edf1f3;font-size:12px}.auth{min-height:100vh;display:grid;grid-template-columns:1fr 1fr}.authstory{padding:12vh 8vw;background:var(--navy);color:white;display:flex;flex-direction:column;justify-content:center}.authstory h1{font-size:45px;line-height:1.3;margin:30px 0 25px}.authstory p{color:#b9cdd2;font-size:15px;max-width:400px}.authstory .eyebrow{color:#70d9bf}.authform{padding:40px;display:flex;align-items:center;justify-content:center}.authcard{width:380px}.authcard h2{font-size:25px;margin-bottom:12px}.authcard>p{color:var(--muted);margin-bottom:25px;font-size:13px}.authcard .field{margin-bottom:18px}.authcard button{width:100%;margin-top:12px}.error{color:#a64236;font-size:12px;line-height:1.6;margin-top:12px}.loading{padding:80px;text-align:center}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);background:var(--navy);color:#fff;padding:14px 24px;border-radius:9px;box-shadow:0 8px 25px #0002;z-index:100;display:none;max-width:90vw;font-size:13px}.footnote{color:var(--muted);font-size:11px;line-height:1.8;margin-top:22px}.money{font-variant-numeric:tabular-nums;white-space:nowrap}.connection{padding:16px;border:1px solid var(--line);border-radius:8px;margin-bottom:10px;display:flex;justify-content:space-between;align-items:center}.nowrap{white-space:nowrap}@media(max-width:1100px){.sidebar{width:190px}.workspace{margin-left:190px}.content{padding:25px 22px}.topbar{padding:0 22px}.metrics{gap:10px}.metric{padding:15px}.metric strong{font-size:24px}.grid2{grid-template-columns:1fr}}@media(max-width:720px){.sidebar{position:static;width:auto;padding:14px;display:block;border-bottom:1px solid var(--line)}.brand{margin:0 0 12px}.navlabel,.sidebar-bottom{display:none}.sidebar nav{display:flex;overflow:auto;gap:5px}.navitem{white-space:nowrap;width:auto;margin:0;padding:9px 12px;font-size:12px}.workspace{margin:0}.topbar{height:55px;padding:0 16px;font-size:12px}.content{padding:24px 14px}.pagehead{align-items:flex-start;flex-direction:column;gap:16px}h1{font-size:25px}.metrics{grid-template-columns:1fr 1fr}.metric strong{font-size:23px}.panelhead{padding:16px;flex-wrap:wrap}.detailgrid,.formgrid{grid-template-columns:1fr}.span2{grid-column:auto}.dialogbody{padding:20px}.auth{grid-template-columns:1fr}.authstory{padding:35px}.authstory h1{font-size:29px;margin:15px 0}.authstory p{font-size:13px}.authform{padding:30px 22px}.itemline{grid-template-columns:1fr 55px 85px 30px;gap:5px}.itemline input,.itemline select{padding:9px 5px}.filters input,.filters select{width:100%;min-width:0}}

.item-details{grid-column:1/-1;border:1px solid var(--line);border-radius:7px;margin:4px 0 12px;padding:12px;background:#fafcfc}.item-details summary{cursor:pointer;font-size:11px;color:var(--green)}.item-details[open] summary{margin-bottom:16px}

.environment-banner{background:#fff2ce;border:1px solid #e3b54c;color:#714d09;border-radius:8px;padding:12px 16px;margin-bottom:20px;font-weight:650;line-height:1.6}
.revision-card{border-left:3px solid #087b73;background:#f5f9fa;padding:16px;margin-top:12px;line-height:1.7}.revision-card small{color:#70818b}

.product-quick-search{margin-bottom:7px;font-size:12px}.revision-card td{white-space:pre-wrap;max-width:290px;overflow-wrap:anywhere}

.auth-language{display:flex;justify-content:flex-end;margin-bottom:18px}.language-toggle{white-space:nowrap}

.picker-extra{grid-column:1/-1;width:100%}.picker-hint{color:#98612b;font-size:13px}.manual-product{padding:15px;border:1px solid #d6dfe8;border-radius:10px;margin:12px 0;background:#f8fbfd}.manual-product[hidden]{display:none}.manual-product label{display:flex;flex-direction:column;gap:5px;font-size:13px}.custom-product-toggle{margin:8px 0}.alternative-product{margin-bottom:20px}
.manual-product label[hidden]{display:none}
.address-row{display:grid;grid-template-columns:1fr 140px;gap:12px;padding:15px 0;border-bottom:1px solid var(--line)}.address-suggestions button{display:block;width:100%;text-align:left;margin-top:5px}.address-status{display:block;margin-top:6px}.address-suggestions small{display:block;padding:6px}.saved-customer{background:#e4f4ed}.danger{color:#b23737;margin-right:auto}.dispatch-products .item-details{display:none}.dispatch-products .itemline{grid-template-columns:1fr 70px 40px}.dispatch-products .itemline>div[hidden]{display:none}.dispatch-products .picker-extra{display:block}.paper-dialog{width:min(1020px,calc(100vw - 24px))}.paper-dialog .dialogbody{background:#edf0f3;padding:24px}.document-paper{max-width:900px;background:white;margin:auto;padding:32px;box-shadow:0 3px 15px #172c3810}.paper-header{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-bottom:14px}.document-logo{max-width:230px;max-height:66px;object-fit:contain;object-position:left}.paper-header h2{font-size:23px;margin:0 0 16px}.paper-header p{font-size:10px;line-height:1.55}.paper-band{background:#e7eef2;padding:10px 12px;font-weight:650;color:#173747;margin:10px 0}.lavender-paper .paper-band{background:#eee8f2;color:#80718b}.document-paper label{font-size:11px}.document-paper input,.document-paper select,.document-paper textarea{background:#fff;font-size:13px}.document-paper textarea{min-height:100px}.quote-package{padding:16px;border:1px solid #e8e3ec;background:#fdfcfe;border-radius:8px}.quote-package h3{color:#82758f}.quote-package .itemline{grid-template-columns:1fr 60px 100px 30px}.quote-package .item-details{background:white}.document-paper .item-details summary{color:#82758f}.quote-package [data-name=quotation_description]{min-height:145px}.quote-package [data-name=warranty]{min-height:100px}.paper-summary{text-align:right;line-height:1.9;padding:12px;background:#faf8fc}.signature-preview{line-height:2.8;color:#76818b;font-size:11px}.document-paper .formactions{position:sticky;bottom:-24px;background:#fff;padding:16px 0;margin-bottom:-12px}.document-paper .formgrid>.field:has([name=property_id]){grid-column:1/-1}.document-paper .field[hidden]{display:none}.quote-comparison{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.quote-comparison.count-2{grid-template-columns:1fr}.why-choose{font-size:13px}.document-paper [name=scope]{min-height:260px;line-height:1.65}.document-paper [name=notes]{min-height:130px}@media(max-width:720px){.address-row,.paper-header,.quote-comparison{grid-template-columns:1fr}.document-paper{padding:16px}.paper-dialog .dialogbody{padding:10px}.quote-package .itemline{grid-template-columns:1fr 55px 80px 30px}.document-paper .formactions{position:static}}
.all-quote-packages{display:grid;gap:16px;grid-template-columns:1fr}.all-quote-packages[data-count="2"]{grid-template-columns:repeat(2,minmax(0,1fr))}.all-quote-packages[data-count="3"]{grid-template-columns:repeat(3,minmax(0,1fr))}.all-quote-packages>#main-package{grid-column:auto}.all-quote-packages>#quote-alternatives{display:contents}.all-quote-packages[data-count="1"] #main-package .item-details>.formgrid{grid-template-columns:1fr 1fr}.all-quote-packages[data-count="1"] .field:has([data-name="quotation_description"]),.all-quote-packages[data-count="1"] .field:has([data-name="warranty"]){grid-column:auto}.all-quote-packages .itemline{grid-template-columns:1fr 50px 80px 25px}.all-quote-packages[data-count="3"] .itemline{grid-template-columns:1fr 45px}.all-quote-packages .item-details{padding:8px}.all-quote-packages .item-details summary{font-size:10px}@media(max-width:820px){.all-quote-packages[data-count="2"],.all-quote-packages[data-count="3"]{grid-template-columns:1fr}.all-quote-packages[data-count="1"] .item-details>.formgrid{grid-template-columns:1fr!important}}
.week{min-width:1250px;grid-template-columns:130px repeat(7,minmax(150px,1fr))}.week .time-day{position:relative;background:#fff;padding:0;overflow:hidden}.hour-tick{position:absolute;left:0;right:0;border-top:1px solid #eaf0f3;font-size:9px;line-height:12px;color:#97a5af;pointer-events:none}.time-day .job{position:absolute;margin:0;overflow:hidden;padding:5px 4px 12px;line-height:1.3;font-size:10px;border-left-width:2px;text-overflow:ellipsis;z-index:1;min-width:0}.time-day .job strong{font-size:10px;white-space:nowrap}.time-day .job .schedule-sale{display:block;font-weight:700;font-size:11px;margin:2px 0;color:#17544e}.time-day .job .resize{position:absolute;bottom:0;left:0;right:0;background:#e3f1ec}.time-day .overlap-job{box-shadow:0 1px 3px #18394d22}.field[hidden]{display:none!important}
.schedule-board{display:grid;grid-template-columns:85px repeat(7,minmax(150px,1fr));min-width:1135px}.schedule-date{padding:12px 8px;background:#f6f9fa;text-align:center;border-right:1px solid var(--line);border-bottom:1px solid var(--line);font-size:11px;color:#6d808c}.schedule-date strong{display:block;margin-top:5px;color:#294456;font-size:12px}.schedule-time-axis{position:relative;background:#f8fafb;border-right:1px solid var(--line)}.axis-label{position:absolute;left:0;right:10px;text-align:right;font-size:11px;color:#687f8d;line-height:14px}.schedule-day{position:relative;border-right:1px solid var(--line);overflow:hidden;background:white}.schedule-day .hour-tick{left:0;right:0;border-top:1px solid #e9eff3}.schedule-day .timeline-job{position:absolute;z-index:1;display:block;min-width:0;margin:0;padding:6px 5px 13px;text-align:left;overflow:hidden;border:0;border-left:3px solid;font-size:11px;line-height:1.4;border-radius:5px;font-weight:600;white-space:normal}.timeline-job .compact-schedule-text{overflow-wrap:anywhere}.timeline-job .resize{position:absolute;bottom:0;left:0;right:0;background:#ffffff88;line-height:10px;cursor:ns-resize;text-align:center}.schedule-day .overlap-job{box-shadow:0 1px 3px #18394d22}.installer-legend{display:flex;flex-wrap:wrap;gap:7px}.installer-legend span{padding:5px 10px;border-left:3px solid;border-radius:5px;font-size:12px}.tech-color-0{background:#dff3ed!important;border-color:#168c70!important;color:#145b48!important}.tech-color-1{background:#e4ecfc!important;border-color:#527bcb!important;color:#294d8d!important}.tech-color-2{background:#efe6f8!important;border-color:#9672bd!important;color:#614187!important}.tech-color-3{background:#fff0d9!important;border-color:#cc963d!important;color:#835818!important}.tech-color-4{background:#fce5e8!important;border-color:#c96f7f!important;color:#8e3b4b!important}.tech-color-5{background:#def3f7!important;border-color:#539fb2!important;color:#2b687a!important}.tech-color-6{background:#e9efd8!important;border-color:#8d9e48!important;color:#606b2b!important}.tech-color-7{background:#e7eaf0!important;border-color:#8190a8!important;color:#4e607c!important}.outside-hours{position:absolute;top:0;left:0;z-index:3;font-size:9px;padding:1px 4px;border:0;background:#fff1d4}
.schedule-board>.schedule-time-axis{position:sticky;left:0;z-index:4}.schedule-board>.schedule-date:first-child{position:sticky;left:0;z-index:5}
.installer-legend label{display:flex;align-items:center;gap:5px;padding:5px 9px;border-left:3px solid;border-radius:5px;font-size:12px;cursor:pointer;margin:0}.installer-legend input{width:14px;height:14px;margin:0;accent-color:#167f6a}.installer-legend .filter-all-active{background:#173747;color:#fff;border-color:#173747}
