*{box-sizing:border-box}body{color:#222;margin:0;font:14px/1.4 system-ui,sans-serif}button,select{font:inherit;color:inherit}.app{touch-action:manipulation;grid-template-rows:auto auto minmax(0,1fr) auto;height:100dvh;display:grid}.app.full header{display:none}svg.i{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:20px;height:20px}header{border-bottom:1px solid #ddd;align-items:center;gap:8px;min-width:0;padding:6px 10px;display:flex}.brand{white-space:nowrap}.file{text-overflow:ellipsis;white-space:nowrap;color:#555;min-width:0;overflow:hidden}.badge{white-space:nowrap;background:#eef4ff;border:1px solid #b8cdf5;border-radius:6px;padding:2px 8px;font-size:13px}.sp{flex:1}.btn{cursor:pointer;white-space:nowrap;background:#fff;border:1px solid #c8ccd2;border-radius:8px;align-items:center;gap:6px;min-height:38px;padding:0 12px;display:inline-flex}.btn:hover{background:#f2f4f7}.btn.on{color:#fff;background:#1b5fa8;border-color:#1b5fa8}.btn.primary{color:#fff;background:#d63384;border-color:#d63384}.btn:disabled,.off{opacity:.45;pointer-events:none}.btn.sm{gap:4px;min-height:34px;padding:0 10px;font-size:13px}.btn.sm svg.i{width:16px;height:16px}.btn.ghost{color:#1b5fa8;border-color:#0000}@media (width<=640px){.badge,header .lbl{display:none}}.msg{background:#fafafa;border-bottom:1px solid #eee;margin:0;padding:5px 12px;font-size:13px}.msg.busy{background:#fff7e0}.msg.busy:before{content:"";vertical-align:-1px;border:2px solid #c80;border-right-color:#0000;border-radius:50%;width:10px;height:10px;margin-right:8px;animation:.8s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}main{grid-template-columns:minmax(0,1fr);min-height:0;display:grid}main.split{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.pane{min-width:0;min-height:0;position:relative;overflow:hidden}.pane+.pane{border-left:2px solid #ddd}@media (aspect-ratio<=1){main.split{grid-template-rows:minmax(0,1fr) minmax(0,1fr);grid-template-columns:minmax(0,1fr)}.pane+.pane{border-top:2px solid #ddd;border-left:0}}.pane .cap{pointer-events:none;background:#fffc;border:1px solid #ddd;border-radius:6px;padding:2px 8px;font-size:12px;position:absolute;top:8px;left:8px}.plan{touch-action:none;overscroll-behavior:contain;-webkit-user-select:none;user-select:none;cursor:crosshair;background:#fff;width:100%;height:100%;display:block}.plan.move{cursor:grab}.plan.move:active{cursor:grabbing}.rlabel{fill:#222;pointer-events:none;font-weight:600}.mk circle{fill:#f39c12;stroke:#fff;stroke-width:1.5px;vector-effect:non-scaling-stroke}.mk.sel circle{fill:#c0392b}.mk text{fill:#fff;pointer-events:none;font-weight:700}.drop{cursor:pointer;text-align:center;color:#444;background:#fafbfc;border:2px dashed #c8ccd2;border-radius:14px;place-content:center;justify-items:center;gap:4px;margin:16px;display:grid}.drop:hover{border-color:#d63384}.drop svg.i{stroke-width:1.4px;color:#d63384;width:40px;height:40px}.drop b{font-size:18px}.drop small{color:#777;margin-top:6px}.palette,.zoomctl,.drawbar{z-index:1;background:#fffffff0;border:1px solid #d5d8dc;border-radius:10px;position:absolute;box-shadow:0 2px 10px #0002}.palette{scrollbar-width:thin;flex-direction:column;gap:2px;max-height:calc(100% - 16px);padding:4px;display:flex;top:8px;left:8px;overflow-y:auto}.palette button,.zoomctl button{cursor:pointer;background:0 0;border:0;border-radius:7px;flex-direction:column;justify-content:center;align-items:center;display:flex}.palette button{gap:1px;width:60px;min-height:44px;padding:4px 2px 3px;font-size:11px}.palette button:hover,.zoomctl button:hover{background:#f0f1f3}.palette button.on{color:#fff;background:#d63384}.zoomctl button.on{color:#fff;background:#1b5fa8}.palette button:disabled{opacity:.35;pointer-events:none}.palette hr{border:0;border-top:1px solid #e3e5e8;width:70%;margin:3px auto}.zoomctl{flex-direction:column;gap:2px;padding:4px;display:flex;bottom:8px;right:8px}.zoomctl button{width:44px;height:44px}.drawbar{flex-wrap:wrap;align-items:center;gap:6px;width:max-content;max-width:calc(100% - 170px);padding:6px 8px 6px 12px;display:flex;top:8px;left:50%;transform:translate(-50%)}.drawbar.quiet{box-shadow:none;color:#555;background:#fffd;padding:4px 12px;font-size:12px}.drawbar select{background:#fff;border:1px solid #c8ccd2;border-radius:8px;min-height:34px;padding:0 6px}@media (width<=700px){.drawbar{width:auto;max-width:none;left:80px;right:8px;transform:none}}@media (height<=560px){.palette button span{display:none}.palette button{width:44px;min-height:40px}.zoomctl button{width:38px;height:38px}}aside{background:#fff;border-top:1px solid #ddd}.summary{cursor:pointer;text-align:left;background:0 0;border:0;align-items:center;gap:10px;width:100%;min-height:44px;padding:6px 12px;display:flex}.summary:hover{background:#fafafa}.summary .dot{background:#e67e22;border-radius:50%;flex:none;width:10px;height:10px}.summary.ok .dot{background:#1e7b34}.summary.ok b{color:#1e7b34}.summary.warn b{color:#b35c00}.summary .facts{color:#555;text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.summary .more{color:#1b5fa8;white-space:nowrap;align-items:center;gap:4px;margin-left:auto;display:inline-flex}.cols{border-top:1px solid #eee;grid-template-columns:minmax(200px,1fr) minmax(320px,2fr) minmax(300px,1.4fr);gap:20px;height:32vh;padding:0 12px;display:grid}.cols section{min-height:0;padding-bottom:12px;overflow-y:auto}@media (width<=900px){.cols{grid-template-columns:minmax(0,1fr);gap:0;height:45vh;overflow-y:auto}.cols section{overflow:visible}.summary .facts{display:none}}aside h3{margin:14px 0 6px;font-size:15px}.q{background:#fffaf0;border:1px solid #f0c27a;border-radius:8px;margin:6px 0;padding:8px}.q.sel{border-color:#c0392b;box-shadow:0 0 0 2px #c0392b33}.q p{cursor:pointer;margin:0 0 6px}.q .n{color:#fff;background:#f39c12;border-radius:11px;place-items:center;min-width:22px;height:22px;margin-right:8px;padding:0 4px;font-size:12px;display:inline-grid}.q.sel .n{background:#c0392b}.qb{flex-wrap:wrap;gap:6px;display:flex}.small{color:#555;font-size:12px}table{border-collapse:collapse;width:100%}td,th{text-align:left;border-bottom:1px solid #eee;padding:2px 4px}td+td,th+th{text-align:right}tfoot td{font-weight:600}.pop path,.pop .ring{animation:1.3s ease-in-out infinite pulse}.pop .ring{fill:none;stroke:#d63384;stroke-width:3px;vector-effect:non-scaling-stroke}@keyframes pulse{50%{stroke-opacity:.2}}@media (prefers-reduced-motion:reduce){.pop path,.pop .ring{animation:none}}.hicard{z-index:1;background:#fff;border:2px solid #d63384;border-radius:10px;align-items:center;gap:8px;max-width:calc(100% - 150px);padding:6px 6px 6px 12px;display:flex;position:absolute;bottom:8px;left:80px;box-shadow:0 2px 10px #0002}.hicard button{cursor:pointer;background:0 0;border:0;border-radius:7px;place-items:center;width:32px;height:32px;display:grid}.hicard button:hover{background:#f0f1f3}tbody tr{cursor:pointer}tbody tr:hover td{background:#fafafa}tr.on td{background:#fde7f1}.chip{cursor:pointer;background:#fff;border:1px solid #c8ccd2;border-radius:14px;margin:2px 4px 2px 0;padding:2px 10px;font-size:13px}.chip:hover{border-color:#d63384}.chip.on{color:#fff;background:#d63384;border-color:#d63384}.palette .grp{letter-spacing:.06em;text-transform:uppercase;text-align:center;color:#888;margin:-1px 0 1px;font-size:9px}@media (height<=560px){.palette .grp{display:none}}main.quotepage{background:#f4f5f7;grid-template-columns:minmax(280px,340px) minmax(0,1fr);overflow:hidden}.works{background:#fafbfc;border-right:1px solid #ddd;padding:10px 12px 40px;overflow-y:auto}.wcard{background:#fff;border:1px solid #e1e4e8;border-radius:10px;margin-bottom:10px;padding:8px 10px 10px}.wcard h4{margin:2px 0 8px;font-size:14px}.wcard h4 small{color:#777;margin-left:4px;font-weight:400}.wf{grid-template-columns:92px minmax(0,1fr);align-items:center;gap:8px;margin:5px 0;font-size:13px;display:grid}.wf span{color:#555}.wf select,.wf input{width:100%;min-height:34px;font:inherit;background:#fff;border:1px solid #c8ccd2;border-radius:7px;padding:0 6px}.wrow{grid-template-columns:2fr 1fr;gap:8px;display:grid}.wrow .wf{grid-template-columns:auto minmax(0,1fr)}.wticks{flex-wrap:wrap;gap:2px 12px;margin-top:6px;display:flex}.wt{cursor:pointer;align-items:center;gap:6px;min-height:30px;font-size:13px;display:inline-flex}.wnote{background:#eef6ff;border:1px solid #b8cdf5;border-radius:8px;padding:6px 10px;font-size:13px}.sheet{background:#fff;padding:16px 24px 60px;font-size:12.5px;overflow-y:auto}.qs-tools{border-bottom:1px solid #eee;flex-wrap:wrap;align-items:center;gap:8px 16px;margin-bottom:12px;padding-bottom:10px;display:flex}.qs-tools .primary{margin-left:auto}.qs-head{color:#444;align-items:center;gap:16px;font-size:11px;display:flex}.qs-logo{height:70px}.qs-word{height:28px;margin-bottom:4px;display:block}.qs-title{color:#fff;text-align:center;letter-spacing:.2em;background:#3a7d22;margin:12px 0 8px;padding:5px;font-size:15px}.qs-info{border-collapse:collapse;width:100%;margin-bottom:12px}.qs-info th{text-align:left;color:#3a7d22;width:120px;font-size:11px;font-weight:600}.qs-info td,.qs-info th{border:1px solid #dfe5dc;padding:3px 6px}.qs-info td+th{width:70px}.qi{width:100%;font:inherit;background:#f2f8ee;border:0;padding:2px 4px}.qs-table{border-collapse:collapse;width:100%}.qs-table th{color:#fff;text-align:left;background:#3a7d22;padding:4px 6px;font-size:11px}.qs-table td{vertical-align:top;border-bottom:1px solid #eee;padding:4px 6px}.qs-table td+td,.qs-table th+th{text-align:left}.qs-table .num{text-align:right;white-space:nowrap}.qs-table .it{width:26%;font-weight:600}.qs-table .ds{color:#555;white-space:pre-line;font-size:11.5px}.qs-sec td{color:#2b5e19;background:#e6f0e0;padding-top:6px;font-weight:700}.qs-grp td{color:#555;font-style:italic;font-weight:600}.qs-sub td{text-align:right;border-bottom:2px solid #dfe5dc;font-weight:600}.qs-total td{text-align:right;border-top:2px solid #3a7d22;padding-top:8px;font-size:14px;font-weight:800}.qs-table tr.sug td{background:#fff8db}.qs-table tr.red td{color:#c0392b}.qs-table tr.info td{color:#777;font-style:italic}.qs-table tr.sug .ask{margin-right:10px;font-weight:600}.qs-table tr.sug .btn{margin-right:6px}.qs-table tr.why td{color:#777;border-bottom:1px dashed #eee;font-size:11px}.warn{color:#b35c00}.qs-terms{columns:2;color:#333;column-gap:24px;margin-top:18px;font-size:10.5px}.qs-terms p{break-inside:avoid;margin:0 0 4px}.qs-terms .b{margin-top:8px;font-weight:700}.qs-sign{grid-template-columns:1fr 1fr;gap:40px;margin-top:30px;font-size:11px;display:grid}.qs-sign div{border-top:1px solid #333;gap:22px;padding-top:6px;display:grid}@media (width<=900px){main.quotepage{grid-template-columns:minmax(0,1fr);overflow-y:auto}.works,.sheet{border:0;overflow:visible}}@media print{@page{size:A4;margin:12mm}.app{height:auto;display:block}.app>header,.msg,.works,aside,.noprint{display:none!important}main.quotepage{background:0 0;display:block;overflow:visible}.sheet{padding:0;overflow:visible}.qi{background:0 0}.qi::placeholder{color:#0000}.qs-table tr{break-inside:avoid}.qs-table tr.sug,.qs-table tr.info{display:none}}.landing{grid-template-rows:minmax(200px,1fr) auto;min-height:0;display:grid;overflow-y:auto}.recent{padding:0 16px 16px}.recent h3{margin:4px 0 8px;font-size:15px}.dlg{z-index:10;background:#0006;place-items:center;padding:12px;display:grid;position:fixed;inset:0}.dlg-box{background:#fff;border-radius:12px;width:min(920px,100%);max-height:85dvh;overflow:auto;box-shadow:0 10px 40px #0004}.dlg-head{background:#fff;border-bottom:1px solid #eee;justify-content:space-between;align-items:center;padding:8px 8px 8px 16px;display:flex;position:sticky;top:0}.dlg-head button{cursor:pointer;background:0 0;border:0;border-radius:8px;place-items:center;width:40px;height:40px;display:grid}table.qlist td,table.qlist th{vertical-align:middle;text-align:left;padding:6px 8px}table.qlist .num{text-align:right;white-space:nowrap}.qlist .linkish{font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;padding:0;display:grid}.qlist small{color:#666}.qlist .acts{white-space:nowrap;text-align:right}.qlist .acts .btn{margin-left:4px}.qlist tr.on td{background:#fde7f1}@media (width<=700px){.qlist th:nth-child(2),.qlist td:nth-child(2),.qlist th:nth-child(3),.qlist td:nth-child(3),.qlist th:nth-child(5),.qlist td:nth-child(5){display:none}}.qs-table select.tog{max-width:100%;font:inherit;background:#fff;border:1px solid #d63384;border-radius:6px;margin-top:4px;padding:4px 6px;font-size:13px;display:block}.qs-table details.addons{margin-top:4px;font-size:12px}.qs-table details.addons summary{cursor:pointer;color:#d63384;list-style:none}.qs-table details.addons label{align-items:center;gap:6px;padding:2px 0;font-weight:400;display:flex}.qs-table details.addons small{color:#777}.qs-table button.x{color:#999;cursor:pointer;background:0 0;border:0;margin-left:6px;padding:0 4px;font-size:16px}.wcard.on{border-color:#d63384;box-shadow:0 0 0 2px #d6338433}.wcard h4.link{cursor:pointer}.wcard h4.link:hover{color:#d63384}details.xt{margin-top:6px;font-size:13px}details.xt summary{cursor:pointer;color:#1b5fa8;align-items:center;min-height:30px;display:flex}details.xt .xh{color:#888;text-transform:uppercase;letter-spacing:.04em;margin:8px 0 2px;font-size:11px;display:block}details.xt .wt{display:flex}.wf.xn{grid-template-columns:minmax(0,1fr) 90px}main.quotepage{grid-template-columns:minmax(280px,360px) minmax(0,1fr)}.qright{grid-template-rows:auto minmax(0,1fr);min-width:0;min-height:0;display:grid}.qright>.sheet{overflow-y:auto}.qright>.pane{background:#fff}.qtabs{background:#fff;border-bottom:1px solid #ddd;align-items:center;gap:4px;padding:6px 10px;display:flex}.qtabs button{min-height:36px;font:inherit;cursor:pointer;background:#fff;border:1px solid #c8ccd2;border-radius:18px;padding:0 14px}.qtabs button.on{color:#fff;background:#d63384;border-color:#d63384}.qtabs .qt-works{display:none}.qtabs .qtotal{white-space:nowrap;margin-left:auto}.qtabs .qtotal b{font-size:16px}.hicard.quiet{color:#666;pointer-events:none;border-color:#ddd;padding:8px 12px}@media (width<=900px){main.quotepage{grid-template-rows:minmax(0,1fr);grid-template-columns:minmax(0,1fr);overflow:hidden}main.quotepage>.works{grid-area:1/1;padding-top:56px;overflow-y:auto}main.quotepage>.qright{grid-area:1/1}main.quotepage.v-works>.qright{z-index:2;align-self:start;height:56px}main.quotepage.v-works>.qright>:not(.qtabs),main.quotepage:not(.v-works)>.works{display:none}.qtabs .qt-works{display:inline-block}}.qs-h{letter-spacing:.06em;color:#2e5e1e;margin:18px 0 6px;font-size:14px}.qs-plans{grid-template-columns:1fr 1fr;gap:12px;display:grid}.qs-plans figure{break-inside:avoid;border:1px solid #ddd;border-radius:8px;margin:0;padding:8px}.qs-plans figcaption{letter-spacing:.06em;color:#2e5e1e;font-size:12px;font-weight:700}.qs-plans svg.sketch{width:100%;height:auto;max-height:420px;display:block}.qs-plans .legend{flex-wrap:wrap;gap:4px 12px;font-size:11px;display:flex}.qs-plans .legend .sw{vertical-align:middle;border:1px solid #999;width:14px;height:10px;margin-right:4px;display:inline-block}.sw.tile{background:#cfe3f7}.sw.vinyl{background:#ead7b8}.sw.screed{background:#d9d9d9}@media (width<=700px){.qs-plans{grid-template-columns:1fr}}@media print{.qright{display:block}.qs-plans{grid-template-columns:1fr 1fr}}.wtools{z-index:1;background:#fff;border:1px solid #c8ccd2;border-radius:20px;padding:3px;display:flex;position:absolute;top:8px;left:8px;box-shadow:0 2px 8px #0002}.wtools button{min-height:36px;font:inherit;cursor:pointer;background:0 0;border:0;border-radius:17px;padding:0 14px}.wtools button.on{color:#fff;background:#d63384}.hrun{border-top:1px solid #f0f0f0;flex-wrap:wrap;align-items:center;gap:4px 10px;padding:4px 0;font-size:13px;display:flex}.hrun .btn{margin-left:auto}.orow{width:100%;min-height:40px;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-top:1px solid #f0f0f0;flex-direction:column;align-items:flex-start;padding:5px 6px;font-size:13px;display:flex}.orow small{color:#999}.orow.has small{color:#b35c00}.orow:hover{background:#fafafa}.orow.on{background:#fde7f1}.obody{background:#fff7fb;border-bottom:1px solid #f3d3e3;padding:4px 6px 10px}.osub{border-top:1px dashed #e5c4d6;margin-top:8px;padding-top:6px;font-size:13px}.obody .wt.sub{padding-left:22px}.obody .wt{display:flex}.fxbar p{margin:4px 0;font-size:13px}.fxbar .btn{margin:2px 4px 2px 0}.hgroup{border-top:1px solid #f0f0f0;padding:2px 0 6px}.hgroup .hrun{border-top:0}.hwall{padding:4px 0 0 10px;font-size:13px}.hboxes{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin:4px 0;display:grid}.hb{color:#555;flex-direction:column;gap:2px;font-size:12px;display:flex}.hb input{width:100%;min-height:34px;font:inherit;color:#111;border:1px solid #c8ccd2;border-radius:7px;padding:0 6px}.login{place-items:center;min-height:100vh;padding:16px;display:grid}.login form{gap:12px;width:min(320px,100%);display:grid}.login img{justify-self:center}.login label{gap:4px;font-size:14px;display:grid}.login input{min-height:40px;font:inherit;border:1px solid #c8ccd2;border-radius:8px;padding:0 10px}.login .btn{justify-content:center}.login .err{color:#b42318;margin:0;font-size:14px}
