:root{color:#eef3f8;font-synthesis:none;background:#09111e;font-family:Inter,ui-sans-serif,system-ui}*{box-sizing:border-box}body{background:linear-gradient(#0d1726,#08101b);min-height:100vh;margin:0}main{max-width:720px;margin:auto;padding-bottom:110px}header{z-index:5;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#0b1422e8;border-bottom:1px solid #223044;justify-content:space-between;align-items:center;padding:18px 20px;display:flex;position:sticky;top:0}.brand{letter-spacing:.05em;align-items:center;gap:8px;font-weight:900;display:flex}.brand svg{width:22px}.brand span{color:#7dd3fc;font-weight:500}.status{color:#9fb0c5;font-size:12px}.hero{padding:30px 20px 20px}.eyebrow,small{letter-spacing:.14em;color:#7dd3fc;font-size:11px;font-weight:800}.room{color:#fff;background:0 0;border:0;outline:0;width:100%;padding:4px 0;font:800 32px/1.2 inherit}.hero p:last-child{color:#aab8c9;max-width:560px;line-height:1.5}nav{grid-template-columns:repeat(3,1fr);gap:8px;padding:0 20px 20px;display:grid}nav button{color:#8fa1b5;background:#111d2c;border:1px solid #26364a;border-radius:12px;justify-content:center;align-items:center;gap:8px;padding:10px;display:flex}nav b{background:#223044;border-radius:50%;place-items:center;width:22px;height:22px;display:grid}nav .active{color:#fff;background:#10283a;border-color:#38bdf8}.cards{gap:14px;padding:0 16px;display:grid}.card{background:#111c2b;border:1px solid #26364a;border-radius:18px;margin:0 16px 14px;padding:18px;box-shadow:0 10px 30px #0003}.cards .card{margin:0}.cardhead{justify-content:space-between;align-items:center;display:flex}.card h2{margin:4px 0 14px;font-size:20px}.ok{color:#34d399}.warn{color:#fbbf24}.photo{color:#b6c5d5;cursor:pointer;background:#0b1522;border:1px dashed #456078;border-radius:14px;align-content:center;place-items:center;gap:8px;height:116px;display:grid}.photo input{display:none}.dims{grid-template-columns:1fr 1fr;gap:12px;margin-top:16px;display:grid}label{color:#9fb0c5;font-size:12px;font-weight:700}label>div,.single{background:#0a1420;border:1px solid #304158;border-radius:10px;margin-top:7px;display:flex;overflow:hidden}input{color:#fff;background:0 0;border:0;outline:0;width:100%;min-width:0;padding:13px;font-size:18px;font-weight:700}label span{color:#71859b;padding:14px 12px}.feature,.add{color:#c9d6e4;background:#1c2b3d;border:0;border-radius:10px;justify-content:center;align-items:center;gap:8px;width:100%;margin-top:14px;padding:12px;display:flex}.feature svg,.add svg{width:17px}.add{background:0 0;border:1px solid #304158;margin:2px 0 12px}.tile{margin-top:0}.notice{color:#a5dff7;background:#0b2634;border-radius:12px;gap:8px;margin-top:18px;padding:14px;font-size:13px;line-height:1.45;display:flex}.notice svg{flex:none;width:18px}.check{color:#c9d6e4;border-bottom:1px solid #26364a;justify-content:space-between;padding:13px 0;display:flex}.check b{color:#8fa1b5;font-size:12px}footer{padding:14px 20px max(14px,env(safe-area-inset-bottom));-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#08111ce8;border-top:1px solid #223044;position:fixed;bottom:0;left:0;right:0}footer button{color:#06111b;background:#38bdf8;border:0;border-radius:13px;justify-content:center;align-items:center;gap:8px;width:100%;max-width:680px;margin:auto;padding:15px;font-size:15px;font-weight:900;display:flex}footer svg{width:18px}@media (width>=700px){.cards{grid-template-columns:1fr 1fr}.add{grid-column:1/-1}}.modelPreview{background:#0a1420;border:1px solid #304158;border-radius:14px;margin:16px 0;padding:14px}.modelPreview svg{background:#08111c;border-radius:10px;width:100%;height:auto;margin-top:10px;display:block}.single input[type=color]{cursor:pointer;height:48px;padding:6px}.featureRow small{color:#71859b;letter-spacing:0;margin-top:4px;display:block}.featureRow>span:last-child{gap:6px;display:flex}.featureRow button{color:#a5dff7;background:#111d2c;border:1px solid #304158;border-radius:8px;padding:6px 9px}.photo{position:relative;overflow:hidden}.photo img{object-fit:cover;border-radius:9px;width:100%;height:82px}.photo:has(img){height:150px;padding:8px}.modal{z-index:20;background:#020817cc;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet{width:min(720px,100%);max-height:92vh;padding:22px 18px max(22px,env(safe-area-inset-bottom));background:#111c2b;border:1px solid #304158;border-radius:22px 22px 0 0;overflow:auto}.sheet h2{margin:5px 0 18px}.sheet>label{margin:12px 0;display:block}.sheet>label input,.sheet select,.sheet .dims input{color:#fff;background:#0a1420;border:1px solid #304158;border-radius:10px;width:100%;margin-top:6px;padding:13px;font-size:16px;display:block}.sheet select{appearance:auto}.actions{grid-template-columns:1fr 1.4fr;gap:10px;margin-top:20px;display:grid}.actions button{color:#d8e5f1;background:#182638;border:1px solid #304158;border-radius:11px;padding:14px;font-weight:800}.actions .primary{color:#06111b;background:#38bdf8;border-color:#38bdf8}@media (width<=420px){.room{font-size:27px}.card{margin-left:10px;margin-right:10px;padding:15px}.cards{padding:0 10px}.dims{gap:8px}.check{align-items:flex-start;gap:10px}.check b{text-align:right}}.canvas3d{touch-action:none;background:radial-gradient(circle at 50% 30%,#1d3045,#07101b);border-radius:12px;height:340px;margin-top:10px;overflow:hidden}.modelNote{color:#8fa1b5;margin:9px 2px 0;font-size:11px;line-height:1.4}.three{padding-bottom:10px}@media (width<=480px){.canvas3d{height:290px}}.single select{color:#eef3f8;background:#0a1420;border:0;width:100%;padding:13px;font-size:15px;font-weight:750}.modelPreview polygon{vector-effect:non-scaling-stroke}.modelPreview text{paint-order:stroke;stroke:#08111c;stroke-width:2px;stroke-linejoin:round}.walk{grid-template-columns:1fr 1fr;gap:8px;margin:12px 0 8px;display:grid}.walk button{color:#b9dcf1;background:#162438;border:1px solid #304158;border-radius:9px;padding:10px;font-weight:800}.closure{border-radius:11px;justify-content:space-between;gap:12px;margin-bottom:16px;padding:12px 14px;font-size:12px;display:flex}.closure.closed{color:#6ee7b7;background:#073c32}.closure.open{color:#fcd34d;background:#44280a}.closure span{text-align:right}.walltools{gap:7px;margin:-5px 0 7px;display:flex}.walltools button{color:#9fdcf5;background:#132235;border:1px solid #304158;border-radius:8px;padding:6px 11px;font-weight:800}.walltools .danger{color:#fca5a5;margin-left:auto}.alternatives{gap:7px;margin:10px 0;display:grid}.alternatives>div{background:#0a1420;border:1px solid #26364a;border-radius:9px;justify-content:space-between;gap:10px;padding:9px 10px;font-size:11px;display:flex}.alternatives b{color:#7dd3fc}.alternatives span{color:#9fb0c5;text-align:right}.cuttable{gap:5px;max-height:320px;margin-top:10px;display:grid;overflow:auto}.cuttable>div{background:#101d2b;border-radius:7px;justify-content:space-between;gap:12px;padding:8px 9px;font-size:11px;display:flex}.cuttable b{color:#fbbf24}.cuttable span{color:#b8c7d8;text-align:right}.cutgrid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin-top:10px;display:grid}.cutgrid article{break-inside:avoid;background:#101d2b;border:1px solid #26394d;border-radius:9px;padding:8px}.cutgrid header,.cutgrid article>div{justify-content:space-between;gap:8px;display:flex}.cutgrid header span,.cutgrid article>div span{color:#9fb0c5;font-size:10px}.cutgrid svg{width:100%;height:145px}@media print{header,nav,footer,.hero,.notice,.actions,.photo,.walltools,.walk,.add,.feature{display:none!important}.modelPreview{break-inside:avoid}.cutgrid{grid-template-columns:repeat(2,1fr)}body{color:#111;background:#fff}.cutgrid article{background:#fff;border-color:#777}.cutgrid header span,.cutgrid article>div span{color:#333}}.referencePanel{background:#101d2b;border-radius:10px;margin:14px 0;padding:12px}.referenceRow{grid-template-columns:1.4fr .8fr 1fr 1.1fr auto;gap:6px;margin:7px 0;display:grid}.referenceRow.controlJointRow{grid-template-columns:1.2fr 1fr .55fr .8fr .8fr 1.25fr auto .65fr auto}.referenceRow input,.referenceRow select{min-width:0}@media (width<=600px){.referenceRow{grid-template-columns:1fr 1fr}.referenceRow button{grid-column:2}}.dimchain{color:#b9c7d8;columns:2;margin:4px 0 8px;padding-left:20px;font-size:9px}.referenceMark{stroke:#a78bfa;stroke-width:2px;stroke-dasharray:5 4}.floorPlaneBoundaryMark{stroke:#22d3ee;stroke-width:2px;stroke-dasharray:8 3 2 3}.referenceLabel{fill:#c4b5fd;font-size:8px}@media (width<=600px){.dimchain{columns:1}}.installationPack{gap:12px;margin:18px 0;display:grid}.packTitle,.packSheet{background:#0a1420;border:1px solid #304158;border-radius:14px;padding:14px}.packTitle{justify-content:space-between;align-items:flex-start;display:flex}.packTitle h1{margin:3px 0}.packTitle>div:last-child{text-align:right;color:#9fb0c5;font-size:11px;display:grid}.packSheet h2{color:#dbeafe;margin:0 0 10px;font-size:15px}.packSheet table{border-collapse:collapse;width:100%;font-size:10px}.packSheet th,.packSheet td{text-align:left;border-bottom:1px solid #26364a;padding:6px}.packSheet td small{letter-spacing:0;color:#71859b;display:block}.packStats{grid-template-columns:repeat(2,1fr);gap:6px;display:grid}.packStats b{background:#101d2b;border-radius:7px;padding:8px;font-size:11px}@page{size:A4 portrait;margin:10mm}@media print{main{max-width:none;padding:0}.installationPack{display:block}.packTitle,.packSheet{color:#111;break-inside:avoid;background:#fff;border:1px solid #aaa;border-radius:0;margin:0 0 8mm}.packSheet{break-before:page}.packSheet:first-of-type{break-before:auto}.packSheet h2,.packTitle h1{color:#111}.packSheet th,.packSheet td{border-color:#bbb}.cutCards,.cutcards{break-inside:auto}.cutCard,.cutcards article{break-inside:avoid}.referenceLabel{fill:#111}.packStats b{background:#eee}}.topologyIssues{color:#fecaca;background:#3a1117;border:1px solid #ef4444;border-radius:11px;gap:5px;margin-bottom:10px;padding:12px 14px;font-size:11px;display:grid}.topologyIssues b{color:#fca5a5}.canonicalPlan svg{max-height:420px}.packSheet .modelPreview{margin:8px 0}@media print{.canonicalPlan svg{width:100%;height:auto;max-height:180mm}.packSheet table,.packSheet p,.packSheet li{font-size:9pt}.packSheet .modelPreview{border:0;padding:0}}.setoutTile{fill:none;stroke:#64748b;stroke-width:.7px;stroke-dasharray:2 2;opacity:.55}.controlJointBand{fill:#f59e0b22;stroke:#f59e0b;stroke-width:.7px}.controlJointCenter{stroke:#f59e0b;stroke-width:1.2px;stroke-dasharray:4 2}.controlJointLabel{fill:#fbbf24;font-size:7px;font-weight:800}.witness{stroke:#64748b;stroke-width:1px}.dimensionLine,.overallDimension{stroke:#94a3b8;stroke-width:1px;fill:none}.dimensionText{fill:#cbd5e1;font-size:7px}.cutLeader{stroke:#f59e0b;stroke-width:1px}.cutLeaderText{fill:#fbbf24;font-size:8px;font-weight:800}.referenceSymbol{fill:#312e81;stroke:#c4b5fd;stroke-width:1px}.referenceSymbolText{fill:#fff;font-size:6px;font-weight:900}.featurePlanMark{stroke:#38bdf8;stroke-width:4px;stroke-linecap:round}.featurePlanPoint{fill:#38bdf8;stroke:#e0f2fe;stroke-width:.7px}@media print{.setoutTile{stroke:#999}.controlJointBand{fill:#eee;stroke:#111}.controlJointCenter{stroke:#111}.controlJointLabel{fill:#111}.witness,.dimensionLine,.overallDimension{stroke:#444}.dimensionText,.cutLeaderText,.referenceSymbolText{fill:#111}.referenceSymbol{fill:#fff;stroke:#111}.floorPlaneBoundaryMark{stroke:#111;stroke-width:1.5px;stroke-dasharray:8 3 2 3}.cutLeader{stroke:#555}.featurePlanMark{stroke:#111}.featurePlanPoint{fill:#fff;stroke:#111}}.nextTurns{flex-wrap:wrap;gap:6px;margin:8px 0 14px;font-size:10px;display:flex}.nextTurns b{color:#7dd3fc;width:100%}.nextTurns span{color:#b9d7e8;background:#102235;border:1px solid #29445e;border-radius:7px;padding:6px 8px}.sheetTitle{border-bottom:2px solid #64748b;justify-content:space-between;gap:12px;margin-bottom:10px;padding-bottom:7px;display:flex}.sheetTitle>div{gap:2px;display:grid}.sheetTitle>div:last-child{text-align:right}.sheetTitle span,.sheetFooter{color:#8fa1b5;font-size:9px}.sheetFooter{margin-top:12px;padding:6px 0 0;background:0 0!important;border:0!important;border-top:1px solid #334155!important;display:block!important;position:static!important}.elevationBlock{break-inside:avoid}.featureLeader{stroke:#7dd3fc;stroke-width:.8px}.topologyIssues button{color:#fecaca;background:#451a1a;border:1px solid #f87171;border-radius:5px;margin:2px 3px;padding:3px 6px}.alignmentErrors{gap:3px;margin-top:5px;display:grid}.alignmentErrors i{border:1px solid #334155;border-radius:4px;padding:2px 4px;font-size:9px;font-style:normal;display:block;position:relative;overflow:hidden}.alignmentErrors em{z-index:0;background:#7c3aed33;position:absolute;inset:0 auto 0 0}.alignmentErrors i{isolation:isolate}.alignmentErrors i:first-line{position:relative}@media print{.packSheet{page-break-after:always;min-height:270mm}.packSheet:last-child{page-break-after:auto}.sheetTitle{border-color:#333}.sheetTitle span,.sheetFooter{color:#333}.featureLeader{stroke:#555}.alignmentErrors em{background:#ddd}}.canonicalPlan svg{background:#08111f;border:1px solid #334155}.referenceLeader{stroke:#a78bfa;stroke-width:.8px;stroke-dasharray:2 2}.tileConstraints>label{margin:8px 0;display:block}.edgeChecks{flex-wrap:wrap;gap:8px;margin:8px 0;display:flex}.edgeChecks label{border:1px solid #334155;border-radius:6px;padding:5px 7px;font-size:11px}.closureCorrection{background:#451a0322;border:1px solid #f59e0b;border-radius:8px;gap:6px;margin:8px 0;padding:10px;display:grid}.closureCorrection button{justify-self:start}.drawingMeta{margin-bottom:10px}.packSheet{box-sizing:border-box;border:1px solid #64748b;padding:10px}.packSheet:before{content:"SURVEY-DERIVED · DIMENSIONS GOVERN";text-align:right;color:#64748b;margin-bottom:4px;font-size:8px;display:block}@media print{.installationPack{color:#111;background:#fff}.packSheet{width:190mm;min-height:277mm;box-shadow:none;border:1px solid #222;margin:0 auto;padding:8mm;overflow:hidden}.packSheet:before{color:#333}.canonicalPlan svg{background:#fff;border-color:#333}.referenceLeader{stroke:#555}.sheetTitle{break-after:avoid}.elevationBlock,.cutgrid article{page-break-inside:avoid}}.factoryEdge{stroke:#22d3ee;stroke-width:4px}.cutPoint{fill:#f43f5e;stroke:#fff;stroke-width:.5px}.cutPointLabel{fill:#fff;font-size:7px;font-weight:800}.annotationOverflow{border:1px solid #ef4444;border-radius:6px;padding:6px}.sheetTitle{border-bottom:2px solid #334155;padding-bottom:6px}.sheetFooter{border-top:1px solid #64748b;margin-top:auto;padding-top:5px}.packSheet{flex-direction:column;display:flex}.packSheet>.modelPreview,.packSheet>table,.packSheet>.packStats{flex:none}@media print{@page{size:A4 portrait;margin:10mm}.packTitle{page-break-after:always}.packSheet{page-break-after:always;width:190mm;height:277mm;min-height:277mm;max-height:277mm}.packSheet:last-child{page-break-after:auto}.cutgrid{grid-template-columns:1fr 1fr}.cutcards article{break-inside:avoid}.sheetFooter{margin-top:auto}}.confirmedCutEdge{stroke:#22d3ee;stroke-width:3px}.siteCutEdge{stroke:#fbbf24;stroke-width:2px}.cutWitness{stroke:#64748b;stroke-width:.65px;stroke-dasharray:2 2}.sheetIssueStatus{border:1px solid #334155;border-radius:7px;align-items:center;gap:8px;margin:8px 0;padding:7px 9px;display:flex}.sheetIssueStatus.review{border-color:#ef4444}.sheetIssueStatus.issueable{border-color:#22c55e}.cutDimText{fill:#94a3b8;font-size:6px}.annotationCollision{fill:#ef4444;font-size:7px;font-weight:700}@media print{.sheet{break-after:page;page-break-after:always;box-sizing:border-box;min-height:185mm}.sheet:last-child{break-after:auto;page-break-after:auto}.noPrint{display:none!important}@page{size:A4 portrait;margin:10mm}.packScreenOnly,.packOverallStatus{display:none!important}.packTitle{page-break-after:auto;break-after:auto;box-sizing:border-box;width:190mm;margin:0 auto 6mm}.packSheet{box-sizing:border-box;break-before:page;page-break-before:always;break-after:page;page-break-after:always;break-inside:auto;color:#111;width:190mm;height:auto;min-height:277mm;max-height:none;box-shadow:none;background:#fff;border:1px solid #222;border-radius:0;margin:0 auto;padding:8mm;overflow:visible}.packSheet:first-of-type{break-before:auto;page-break-before:auto}.packSheet:last-child{break-after:auto;page-break-after:auto}.packSheet table{table-layout:fixed;width:100%;max-height:none;font-size:8.5pt;overflow:visible}.packSheet th,.packSheet td{overflow-wrap:anywhere;word-break:normal;padding:4px}.sheetTitle{break-inside:avoid;page-break-inside:avoid;break-after:avoid;page-break-after:avoid}.sheetFooter,.elevationBlock,.cutCard,.cutcards article{break-inside:avoid;page-break-inside:avoid}.modelPreview svg{max-width:100%;height:auto}}.packActions{flex-wrap:wrap;gap:8px;margin:10px 0 14px;display:flex}.packActions button{color:#dbeafe;background:#102235;border:1px solid #334155;border-radius:8px;padding:9px 12px;font-weight:700}.packActions button:disabled{opacity:.45;cursor:not-allowed}.installationPackAnchor{scroll-margin-top:16px}@media print{body.packPrintOnly .card>:not(.installationPackAnchor){display:none!important}body.packPrintOnly .installationPackAnchor{display:block!important}body.packPrintOnly .installationPackAnchor>.installationPack{margin:0!important}body.packPrintOnly .installationPackAnchor .packActions{display:none!important}}.elevationGridLegend{color:#9fb0c5;letter-spacing:.03em;margin:4px 0 2px;font-size:10px;font-weight:700;line-height:1.3}.g-app{--glaze:#1f4e5a;--glaze-deep:#163b44;--porcelain:#f3f5f4;--surface:#fff;--grout:#c9cfcc;--slate:#1d2729;--muted:#5d6b6e;--brass:#b7812f;--brass-soft:#f3e7d3;--warn:#8a3b12;--warn-soft:#fbeee6;color:var(--slate);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;background:var(--porcelain);background-image:linear-gradient(var(--grout) 1px,transparent 1px),linear-gradient(90deg,var(--grout) 1px,transparent 1px);background-position:-1px -1px;background-size:48px 48px;background-attachment:fixed;min-height:100vh;padding-bottom:96px;font-family:Barlow,system-ui,sans-serif}:is(html:has(.g-app),body:has(.g-app)){color:#1d2729;background:#f3f5f4}.g-app{overflow-x:hidden}.g-app *{box-sizing:border-box}.g-app button{font:inherit;color:inherit;cursor:pointer}.g-app button:disabled{cursor:not-allowed;opacity:.45}.g-app :focus-visible{outline:3px solid var(--brass);outline-offset:2px}.g-app h2{letter-spacing:-.01em;margin:0 0 .25rem;font-size:1.5rem;font-weight:700;line-height:1.2}.g-app h3{margin:0 0 .5rem;font-size:1.05rem;font-weight:600;line-height:1.3}.g-top{align-items:center;gap:12px;max-width:720px;margin:0 auto;padding:14px 16px 8px;display:flex}.g-app .g-room{width:auto;min-width:0;color:var(--glaze-deep);background:0 0;border:0;border-bottom:2px solid #0000;flex:1;padding:4px 0;font-family:Barlow Semi Condensed,Barlow,sans-serif;font-size:1.6rem;font-weight:700}.g-app .g-room:focus{border-bottom-color:var(--brass);outline:none}.g-link{color:var(--glaze);text-underline-offset:3px;background:0 0;border:0;padding:8px 0;font-weight:600;text-decoration:underline}.g-steps{z-index:4;background:linear-gradient(var(--porcelain) 80%,transparent);gap:4px;max-width:720px;margin:0 auto;padding:4px 16px 12px;list-style:none;display:flex;position:sticky;top:0;overflow-x:auto}.g-steps li{flex:1 0 auto}.g-steps button{border:1px solid var(--grout);background:var(--surface);white-space:nowrap;border-radius:10px;justify-content:center;align-items:center;gap:6px;width:100%;padding:9px 10px;font-size:.9rem;font-weight:600;display:flex}.g-steps b{background:var(--porcelain);border-radius:50%;place-items:center;width:20px;height:20px;font-size:.75rem;display:inline-grid}.g-steps .is-on{background:var(--glaze);border-color:var(--glaze);color:#fff}.g-steps .is-on b{background:var(--brass);color:#fff}.g-steps .is-done b{background:var(--glaze);color:#fff}.g-body{max-width:720px;margin:0 auto;padding:0 16px}.g-block{margin:14px 0}.g-card{background:var(--surface);border:1px solid var(--grout);border-radius:14px;padding:14px}.g-hint{color:var(--muted);margin:.25rem 0;font-size:.98rem;line-height:1.45}.g-seg{background:var(--surface);border:1px solid var(--grout);border-radius:12px;gap:4px;margin:10px 0;padding:4px;display:flex}.g-seg button{white-space:nowrap;background:0 0;border:0;border-radius:9px;flex:1;padding:10px 8px;font-weight:600}.g-seg button.is-on{background:var(--glaze);color:#fff}.g-seg small{background:var(--brass);color:#fff;border-radius:9px;place-items:center;min-width:18px;height:18px;margin-left:6px;font-size:.72rem;font-weight:700;display:inline-grid}.g-seg-scroll{overflow-x:auto}.g-seg-scroll button{flex:none;padding:10px 14px}.g-canvas{background:var(--surface);border:1px solid var(--grout);border-radius:16px;margin:10px 0;padding:8px}.g-canvas-small .g-plan{max-height:200px}.g-plan{width:100%;height:auto;max-height:52vh;display:block}.g-floor{fill:#e7ecea}.g-wall{stroke:var(--glaze-deep);stroke-linecap:round;cursor:pointer}.g-wall.is-on{stroke:var(--brass)}.g-open-end{fill:var(--brass)}.g-tag{cursor:pointer}.g-tag rect{fill:var(--brass-soft);stroke:var(--brass);stroke-width:.6%}.g-tag text{fill:var(--slate);font-family:Barlow Semi Condensed,Barlow,sans-serif;font-weight:700}.g-tag.is-on rect{fill:var(--brass)}.g-tag.is-on text{fill:#fff}.g-tile{stroke:none}.g-cut{filter:brightness(.78)}.g-elev{width:100%;height:auto;max-height:40vh;display:block}.g-elev-wall{fill:#e7ecea;stroke:var(--glaze-deep);stroke-width:.6%}.g-elev-dim{fill:var(--muted);font-family:Barlow Semi Condensed,Barlow,sans-serif;font-weight:600}.g-op{cursor:pointer}.g-op rect{fill:#fff;stroke:var(--glaze);stroke-width:.5%}.g-op-window rect{fill:#dcebee}.g-op-niche rect{fill:#d4dbd8}.g-op-vanity rect,.g-op-toilet rect{fill:#f1ece3}.g-op text{fill:var(--slate);font-weight:600}.g-op.is-on rect{stroke:var(--brass);stroke-width:1%}.g-chips{flex-wrap:wrap;gap:8px;display:flex}.g-chip{border:1px solid var(--grout);background:var(--surface);border-radius:999px;padding:10px 14px;font-weight:600}.g-chip.is-on{background:var(--glaze);border-color:var(--glaze);color:#fff}.g-colours{flex-wrap:wrap;gap:12px;display:flex}.g-colour{border:1px solid #0000002e;border-radius:10px;width:46px;height:46px}.g-colour.is-on{outline:3px solid var(--brass);outline-offset:3px}.g-swatch{border:1px solid var(--grout);border-radius:16px;width:100%;height:150px;display:block}.g-app .g-field{color:var(--slate);margin:6px 0;font-size:1rem;font-weight:400;display:block}.g-field-label{color:var(--muted);margin-bottom:4px;font-size:.9rem;font-weight:600;display:block}.g-field-box{background:var(--surface);border:1px solid var(--grout);border-radius:10px;align-items:center;padding:0 12px;display:flex}.g-field-box:focus-within{border-color:var(--glaze);box-shadow:0 0 0 2px #1f4e5a33}.g-app .g-field-box input{width:auto;min-width:0;color:var(--slate);background:0 0;border:0;outline:0;flex:1;padding:12px 0;font-family:Barlow Semi Condensed,Barlow,sans-serif;font-size:1.25rem;font-weight:600}.g-unit{color:var(--muted);font-size:.9rem}.g-grid2{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 12px;display:grid}.g-app .g-grid2 .g-field{flex-direction:column;justify-content:flex-end;min-width:0;display:flex}.g-row{gap:8px;margin:8px 0;display:flex}.g-row .g-btn{flex:1}.g-btn{border:1px solid var(--grout);background:var(--surface);border-radius:12px;padding:13px 16px;font-weight:600}.g-primary{background:var(--glaze);border-color:var(--glaze);color:#fff}.g-app .g-primary{color:#fff}.g-wide{width:100%;margin-top:6px}.g-issues{background:var(--warn-soft);border-left:4px solid var(--warn);border-radius:8px;margin:10px 0;padding:8px 12px}.g-issues p{color:var(--warn);margin:4px 0;font-weight:600}.g-options{gap:12px;display:grid}.g-option{text-align:left;border:1px solid var(--grout);background:var(--surface);border-radius:16px;grid-template-columns:42% 1fr;align-items:center;gap:12px;padding:10px;display:grid}.g-option.is-on{border:2px solid var(--glaze);padding:9px;box-shadow:0 0 0 3px #1f4e5a22}.g-option-plan .g-plan{max-height:none}.g-option-title{margin:0 0 6px;font-weight:700;line-height:1.25}.g-tags{flex-wrap:wrap;gap:6px;margin:0 0 6px;display:flex}.g-tags span{background:var(--brass-soft);color:#6e4b12;border-radius:999px;padding:2px 9px;font-size:.8rem;font-weight:700}.g-stats{grid-template-columns:repeat(3,auto);gap:4px 10px;margin:0;display:grid}.g-stats dt{color:var(--muted);font-size:.75rem}.g-stats dd{white-space:nowrap;margin:0;font-family:Barlow Semi Condensed,Barlow,sans-serif;font-size:1.15rem;font-weight:700}.g-3d{border:1px solid var(--grout);background:#dfe5e3;border-radius:16px;height:min(60vh,460px);margin:10px 0;overflow:hidden}.g-3d>*{height:100%}.g-bar{z-index:6;padding:12px 16px calc(12px + env(safe-area-inset-bottom));-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-top:1px solid var(--grout);background:#fffe;gap:8px;display:flex;position:fixed;bottom:0;left:0;right:0}.g-bar .g-btn{flex:1;max-width:340px}.g-bar .g-primary{flex:2;margin-left:auto}.g-sheet-back{z-index:10;background:#1d272966;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.g-sheet{background:var(--surface);width:100%;max-width:520px;padding:18px 16px calc(18px + env(safe-area-inset-bottom));border-radius:20px 20px 0 0}.g-sheet-title{margin:0 0 10px;font-size:1.15rem;font-weight:700}.g-big-input{border-bottom:3px solid var(--brass);align-items:baseline;gap:8px;margin-bottom:12px;display:flex}.g-app .g-big-input input{width:auto;min-width:0;color:var(--slate);background:0 0;border:0;outline:0;flex:1;padding:6px 0;font-family:Barlow Semi Condensed,Barlow,sans-serif;font-size:2.6rem;font-weight:700}.g-big-input span{color:var(--muted);font-size:1.1rem}@media (width>=640px){.g-option{grid-template-columns:240px 1fr}}@media (prefers-reduced-motion:reduce){.g-app *{transition:none!important;animation:none!important}}.g-note{border-left:4px solid var(--glaze);background:#e3eef0;border-radius:8px;margin:10px 0;padding:8px 12px}.g-note p{color:var(--glaze-deep);margin:4px 0;font-weight:600}.g-op-scan rect{stroke-dasharray:2% 1.2%}.g-outline{fill:none;stroke:var(--glaze-deep)}.g-sliver{fill-opacity:.7;fill:#c0392b!important}.g-op-draw{fill:#fff;stroke:var(--glaze);stroke-width:.4%}.g-op-draw.g-op-window{fill:#dcebee}.g-muted{color:var(--muted);font-size:.9rem;font-weight:500}.g-chip-tile{align-items:center;gap:8px;display:inline-flex}.g-chip-tile i{border:1px solid #0003;border-radius:4px;width:16px;height:16px}.g-band{border-top:1px dashed var(--grout);margin-top:12px;padding-top:10px}.g-app .g-text{width:auto;min-width:0;color:var(--slate);font:inherit;background:0 0;border:0;outline:0;flex:1;padding:12px 0;font-size:1.05rem;font-weight:600}.g-swatch-empty{color:var(--muted);background:#fff;place-items:center;display:grid}.g-warn{color:#a0301f;margin:6px 0 0;font-size:.85rem;font-weight:700}.g-elev-title{margin:2px 4px 6px;font-weight:700}.g-table{border-collapse:collapse;width:100%;font-size:.95rem}.g-table th{text-align:left;color:var(--muted);border-bottom:1px solid var(--grout);padding:4px 6px;font-size:.8rem;font-weight:600}.g-table td{vertical-align:top;border-bottom:1px solid #e6eae8;padding:8px 6px}.g-table td small{color:var(--muted);font-size:.78rem;display:block}.g-table td b{font-family:Barlow Semi Condensed,Barlow,sans-serif;font-size:1.15rem}.g-dot{vertical-align:-1px;border:1px solid #0003;border-radius:3px;width:12px;height:12px;margin-right:6px;display:inline-block}.g-card h3{margin-top:12px}.g-card h3:first-child{margin-top:0}.g-app small{letter-spacing:normal;text-transform:none;font-family:inherit}.g-3d-wrap .g-3d{height:min(62vh,520px)}.g-print{display:none}@media print{@page{size:A4;margin:12mm}:is(html:has(.g-app),body:has(.g-app)){background:#fff}.g-app{background:#fff;padding:0}.g-app>:not(.g-body),.g-body>:not(.g-print){display:none!important}.g-print{color:#111;font-size:10.5pt;display:block}.g-print-head h1{margin:0 0 2mm;font-size:18pt}.g-print-head p{color:#444;margin:0 0 6mm}.g-print-sheet{break-inside:avoid;page-break-inside:avoid;margin:0 0 8mm}.g-print-sheet h2{margin:0 0 1mm;font-size:13pt}.g-print-sheet>p{color:#333;margin:0 0 2mm}.g-print-sheet .g-plan{width:100%;max-height:150mm}.g-print-sheet+.g-print-sheet{break-before:page;page-break-before:always}.g-print-sheet{break-inside:auto;page-break-inside:auto}.g-print-draw{break-inside:avoid}.g-print-cutgrid{grid-template-columns:repeat(auto-fill,minmax(58mm,1fr));gap:2mm 6mm;margin-top:3mm;display:grid}.g-print-cuts{break-inside:avoid}.g-print-sub{margin:0 0 1mm;font-size:9.5pt;font-weight:700}.g-cuts td,.g-cuts th{font-size:8.5pt;padding:1mm 1.5mm!important}.g-cuts small{color:#666;font-size:7.5pt;display:block}.g-print .g-materials small{color:#555;font-size:8pt;display:block}.g-print-cap{color:#333;font-size:9.5pt}.g-print .g-card{border:0;padding:0}.g-print .g-table td,.g-print .g-table th{border-bottom:1px solid #ccc}}.g-op-label{fill:var(--glaze-deep);font-family:Barlow,sans-serif;font-weight:600}.g-op-draw.g-op-vanity,.g-op-draw.g-op-toilet,.g-op-draw.g-op-shower,.g-op-draw.g-op-penetration{fill:#fff;fill-opacity:.55;stroke-dasharray:1% .6%}.g-items{flex-direction:column;gap:6px;display:flex}.g-item{text-align:left;border:1px solid var(--grout);background:var(--surface);border-radius:10px;flex-wrap:wrap;align-items:center;gap:6px;padding:10px 12px;display:flex}.g-item.is-on{border-color:var(--glaze);box-shadow:0 0 0 2px #1f4e5a33}.g-item-flag{background:var(--warn-soft);color:var(--warn);border-radius:999px;margin-left:auto;padding:1px 8px;font-size:.78rem;font-weight:700}.g-rooms{max-height:86vh;overflow:auto}.g-item-open{text-align:left;background:0 0;border:0;flex-direction:column;flex:1;align-items:flex-start;gap:2px;padding:0;display:flex}.g-item-open small{color:var(--muted);font-size:.8rem}.g-setout{color:var(--glaze-deep);margin:6px 0 0;font-size:.85rem;font-weight:600}.g-table tfoot td{padding:8px 6px;font-weight:600}.g-bar-track{background:#e3e8e6;border-radius:4px;height:8px;margin-top:8px;overflow:hidden}.g-bar-track i{background:var(--glaze);height:100%;transition:width .2s;display:block}.g-shower-zone{fill:none;stroke:var(--brass);stroke-dasharray:2% 1%}.g-shower-env{stroke:var(--brass);stroke-dasharray:1% .8%}.g-shower-drain{fill:#5d6b6e;stroke:#fff;stroke-width:.3%}.g-shower-drain-line{stroke:#5d6b6e;stroke-linecap:round}.g-ptile{fill:color-mix(in srgb,var(--tint,#eee) 18%,#fff);stroke:#1d2729;vector-effect:non-scaling-stroke;stroke-width:.5px}.g-ptile.is-cut{fill:#fbe9c4}.g-ptile.is-sliver{fill:#f6c4bd}.g-cut-id{fill:#1d2729;font-family:Barlow Semi Condensed,Barlow,sans-serif;font-weight:700}.g-dim line{stroke:#333;vector-effect:non-scaling-stroke;stroke-width:.7px}.g-dim text{fill:#222;font-family:Barlow,sans-serif}.g-print-wall{fill:#1f4e5a;font-family:Barlow,sans-serif;font-weight:700}.g-save-bad{margin:8px 12px 0}.g-materials .g-table td small{color:var(--muted);font-size:.78rem;line-height:1.3;display:block}.g-materials .g-table td:last-child{text-align:right;white-space:nowrap}@media (width<=520px){.g-steps{gap:3px;padding:4px 10px 10px}.g-steps li{flex:none}.g-steps li:has(.is-on){flex:1 0 auto}.g-steps button{gap:0;padding:9px 8px;font-size:0}.g-steps button b{font-size:.75rem}.g-steps button.is-on{gap:6px;font-size:.9rem}}.g-seg-3 button{white-space:normal;padding-top:8px;padding-bottom:8px;font-size:.86rem;line-height:1.15}.g-tape-rows{flex-direction:column;gap:6px;margin-top:8px;display:flex}.g-tape-row{border:1px solid var(--grout);background:var(--surface);border-radius:10px;align-items:center;gap:10px;padding:8px 10px;display:flex}.g-tape-row.is-ok{background:#f2f8f3;border-color:#7fa98a}.g-tape-row.is-off{border-color:var(--warn);background:var(--warn-soft)}.g-tape-label{flex:1;min-width:0;font-size:.92rem;font-weight:600}.g-tape-label small{color:var(--muted);margin-top:2px;font-size:.8rem;font-weight:400;display:block}.g-app .g-tape-row .g-tape-box{flex:0 0 108px;width:108px;min-width:0;max-width:108px;padding:6px 8px}.g-app .g-tape-row .g-tape-box input{width:100%;min-width:0;font-size:1rem}.g-gapnote{fill:#1f4e5a;font-family:Barlow,sans-serif;font-weight:700}.g-arch{fill:#d8c3a0;stroke:#8a6d43;stroke-width:3px}.g-trim{stroke-linecap:square}.g-groove{stroke:#8a6d43;stroke-dasharray:18 10}.g-ffl line{stroke:#6b5a3a;fill:none}.g-ffl text{fill:#6b5a3a;font-weight:600}.g-strip{stroke-linecap:butt}.g-hole{fill:#fff;stroke:#b3261e}.g-hole-label{fill:#b3261e;font-weight:600}.f-app .g-body{max-width:720px;margin:0 auto;padding:0 14px}.f-progress{max-width:720px;margin:0 auto 6px;padding:0 16px}.f-progress-track{background:var(--grout);border-radius:3px;height:6px;overflow:hidden}.f-progress-track i{background:var(--glaze);border-radius:3px;height:100%;transition:width .25s;display:block}.f-progress-row{justify-content:space-between;align-items:center;gap:10px;margin-top:6px;font-size:.95rem;display:flex}.f-progress-row select{font:inherit;border:1px solid var(--grout);color:var(--slate);background:#fff;border-radius:8px;max-width:48%;padding:4px 6px;font-size:.85rem}.f-hero p{font-size:1.02rem}.f-choices{gap:10px;margin-top:8px;display:grid}.f-choice{text-align:left;border:2px solid var(--grout);background:#fff;border-radius:14px;width:100%;padding:16px;display:block;box-shadow:0 1px #0000000a}.f-choice b{margin-bottom:4px;font-size:1.08rem;display:block}.f-choice span{color:var(--muted);font-size:.93rem;line-height:1.35;display:block}.f-choice.is-on{border-color:var(--glaze);box-shadow:0 0 0 2px var(--glaze) inset;background:#eef5f6}.f-choices-tight .f-choice{padding:12px 14px}.f-choices-tight .f-choice b{margin:0;font-size:1rem}.f-steps-list{margin:6px 0 8px;padding-left:20px;line-height:1.45}.f-steps-list li{margin-bottom:6px}.f-ask{border:2px solid var(--glaze)}.f-ask-count{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin:0;font-size:.85rem}.f-ask h3{margin:2px 0 4px;font-size:1.4rem}.f-corners{grid-template-columns:1fr 1fr;gap:8px;margin-bottom:10px;display:grid}.f-corners .g-chip{text-align:center;justify-content:center;width:100%}.f-item{border-top:1px solid var(--grout);margin-top:10px;padding-top:10px}.f-item:first-of-type{border-top:0;margin-top:0;padding-top:0}.f-list{gap:6px;display:grid}.f-row{text-align:left;border:1px solid var(--grout);background:#fff;border-radius:12px;justify-content:space-between;align-items:center;gap:10px;width:100%;padding:12px 14px;display:flex}.f-row span{color:var(--muted);text-align:right;font-size:.9rem}.f-row.is-on{border-color:var(--glaze);box-shadow:0 0 0 1px var(--glaze) inset}.g-canvas-small{max-height:260px}.g-canvas-small svg{max-height:240px}.f-tile-head{align-items:center;gap:12px;margin-bottom:10px;display:flex}.f-swatch{border:1px solid #00000026;border-radius:10px;flex:none;width:64px;height:64px;box-shadow:0 1px 3px #0000001f}.f-tile-head h3{margin:0}.f-app .f-name{font:inherit;border:0;border-bottom:1px dashed var(--grout);width:100%;color:var(--slate);background:0 0;padding:2px 0;font-size:.95rem}.f-tag{background:var(--brass-soft);color:#7a5414;vertical-align:2px;border-radius:999px;margin-left:8px;padding:2px 8px;font-size:.75rem;font-weight:700;display:inline-block}.f-reasons{gap:4px;margin:8px 0;padding:0;list-style:none;display:grid}.f-reasons li{padding-left:24px;font-size:.95rem;line-height:1.35;position:relative}.f-reasons li:before{text-align:center;width:18px;font-weight:800;position:absolute;top:0;left:0}.f-reasons li.is-good:before{content:"✓";color:#2f7d4f}.f-reasons li.is-bad:before{content:"!";color:var(--warn)}.f-reasons li.is-bad{color:var(--warn)}.f-others{gap:8px;margin-top:8px;display:grid}.f-other{text-align:left;border:1px solid var(--grout);background:#fff;border-radius:12px;grid-template-columns:110px 1fr;gap:10px;width:100%;padding:10px;display:grid}.f-other-plan svg{width:100%;height:auto;max-height:120px}.f-other .f-reasons li{font-size:.85rem}.f-rules summary{cursor:pointer;color:var(--glaze);font-weight:600}.f-rules ol{color:var(--muted);margin:6px 0 0;padding-left:20px}@media print{.f-progress{display:none!important}}.f-app .g-plan .g-tile{stroke:#4a5658;stroke-width:1.2px;vector-effect:non-scaling-stroke;stroke-linejoin:round}.f-app .g-plan .g-cutmark{opacity:.55}.f-key{color:var(--muted);flex-wrap:wrap;gap:6px 14px;margin:4px 2px 0;font-size:.85rem;display:flex}.f-key i{vertical-align:-2px;background:#eceae4;border:1.2px solid #4a5658;border-radius:2px;width:14px;height:14px;margin-right:5px;display:inline-block}.f-key i.cut{background:repeating-linear-gradient(135deg,#eceae4 0 3px,#9aa3a1 3px 4px)}.f-key i.sliver{background:#d97a6c}.f-count td,.f-count th{text-align:right}.f-count td:first-child,.f-count th:first-child{text-align:left}.f-count .f-total td{border-top:2px solid var(--grout)}.f-order{margin:4px 0 0;padding-left:18px}.f-rowstart{border-top:1px solid #e3e6e5;margin-top:14px;padding-top:12px}.f-rowstart h4{margin:0 0 8px;font-size:15px}.f-seq{gap:10px;margin:8px 0 0;padding-left:22px;display:grid}.f-seq li b{display:block}.f-seq li span{color:#4a5553;font-size:14px;line-height:1.4}.f-walltile{margin:10px 0}.f-walltile b{margin-bottom:6px;display:block}.g-chip small{opacity:.7;margin-left:4px}.f-mytiles{margin:6px 0 4px}.f-mytile{gap:4px;display:inline-flex}.f-x{padding:0 10px}.f-price{margin-top:12px}.f-price summary{cursor:pointer;font-weight:600}.f-gap{border-top:1px solid var(--g-line,#e2e4e1);padding:10px 0 4px}.f-gap:first-of-type{border-top:0}.f-gap h4{margin:0 0 2px;font-size:15px}.f-gap .g-chips small{opacity:.75;margin-left:4px;font-weight:400}.f-gap-why{margin:6px 0 0;font-size:14px;line-height:1.4}.f-gap-why.is-good{color:#1f6b3a}.f-gap-why.is-bad{color:#9a3412}.f-gapnote{color:#1f4e5a;margin:6px 0 0;font-size:13.5px;font-weight:600}.f-edge{border-top:1px solid var(--g-line,#e2e4e1);margin-top:12px;padding-top:10px}.f-edge h4{margin:0 0 6px}.f-edge .f-tag{margin-left:8px}.f-measured{margin-top:.6rem}.f-subtable td small{color:#6b6f72;display:block}.g-cuts tr.is-warn td{background:#fff4e5}.f-check{align-items:flex-start;gap:.5rem;margin-top:.6rem;font-size:.92rem;display:flex}.f-photoread{margin-top:12px}.f-found{border-bottom:1px solid #e3e6e5;gap:2px;padding:8px 0;display:grid}.f-found span{color:#4a5553;font-size:14px}.f-found small{color:#8a5a2b}.f-found-list .g-row{margin-top:10px}.f-walltile .f-row{width:100%}.f-walltile .f-row small{opacity:.7;margin-left:4px;font-weight:400}.f-wallset{padding:8px 4px 12px}.f-remove{margin-top:10px}.f-found-pick{text-align:left;cursor:pointer;background:0 0;border:0;border-bottom:1px solid #e3e6e5;width:100%}.f-select{width:100%;font:inherit;background:#fff;border:1px solid #cfd5d3;border-radius:12px;padding:12px;font-size:16px}.f-tile-sum{margin:8px 0 0;font-weight:600}.f-mytiles h4{margin:14px 0 6px}.f-gaps{gap:6px;margin:4px 0 10px;padding-left:20px;font-size:14px;line-height:1.4;display:grid}.g-print-gaps{break-inside:avoid;border:1px solid #999;margin-top:8px;padding:6px 10px;font-size:9pt}.g-print-gaps ul{margin:2px 0;padding-left:16px}.f-advice{background:#f7faf9;border:1px solid #d5dedb;border-radius:12px;margin:10px 0;padding:8px 12px}.f-advice summary{cursor:pointer;font-size:14px}.f-best{color:#1f4b55;font-weight:600}.f-diff{color:#8a5a2b}.f-pc{margin:8px 0;font-size:14px}.f-pc.is-best b{color:#1f4b55}.f-pc ul{margin:4px 0;padding-left:18px}.f-pc li.is-good::marker{content:"+  ";color:#2d7a4f}.f-pc li.is-bad::marker{content:"–  ";color:#a14b2b}
