:root{--green:#123b35;--lime:#ddf1bd;--bg:#f6f7f2;--muted:#687771;--line:#dce3da;--orange:#b6572b;--blue:#39728b}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:#193a34;font:15px system-ui,-apple-system,sans-serif}header{background:var(--green);color:white;display:flex;align-items:center;justify-content:space-between;padding:15px 20px;position:sticky;top:0;z-index:10}.brand{display:flex;gap:11px;align-items:center;font-size:23px;font-weight:750;letter-spacing:-.6px}.brandmark{border:1px solid #729284;border-radius:11px;padding:0 9px;color:var(--lime);font-size:34px}.brand small{display:block;font-size:8px;letter-spacing:2.3px;color:var(--lime);margin-top:2px}button,input,select,textarea{font:inherit}button{cursor:pointer;border:0;border-radius:12px;padding:12px 16px;background:var(--green);color:white;font-weight:650;min-height:44px}button:disabled{opacity:.4;cursor:default}button.secondary{background:#e8ede4;color:var(--green)}button.outline{background:transparent;border:1px solid var(--line);color:var(--green)}button.danger{background:#f8e8df;color:#953a28}button.icon{background:#ffffff12;padding:7px 13px;font-size:23px;color:white}button.small{padding:7px 11px;font-size:12px;min-height:36px}button.active{background:var(--green);color:var(--lime)}main{max-width:1060px;margin:auto;padding:22px 18px 110px}h1{font-size:27px;letter-spacing:-1px;margin:4px 0 9px}h2{font-size:18px;margin:0 0 15px;letter-spacing:-.3px}h3{font-size:15px;margin:0 0 10px}p{line-height:1.5}.eyebrow{text-transform:uppercase;letter-spacing:1.8px;font-size:10px;font-weight:750;color:var(--muted)}.muted,small{color:var(--muted)}.sub{margin:0 0 22px;color:var(--muted);font-size:13px}.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.between{justify-content:space-between}.card{background:white;border:1px solid var(--line);border-radius:18px;padding:18px;margin-bottom:15px;overflow:hidden}.hero{background:var(--green);color:white;border:0;position:relative}.hero .muted,.hero .eyebrow{color:#b7c9bd}.hero h1{font-size:31px}.hero strong{font-size:34px;letter-spacing:-1px}.hero .badge{color:var(--lime);border-color:#44675b}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.stat{background:#f0f3eb;padding:14px;border-radius:12px}.stat b{display:block;font-size:23px;letter-spacing:-.7px}.stat span{font-size:11px;color:var(--muted)}.badge{border:1px solid var(--line);border-radius:30px;font-size:11px;padding:5px 9px;white-space:nowrap}.room{display:flex;align-items:center;gap:12px;padding:15px 0;border-bottom:1px solid var(--line)}.room:last-child{border-bottom:0}.room .swatch{width:40px;height:40px;border-radius:11px;display:grid;place-items:center;font-size:20px;flex-shrink:0}.room .info{flex:1}.room .info b{display:block}.room .info small{font-size:11px}.room button{padding:7px 12px}.empty{text-align:center;padding:28px 10px}.empty .symbol{font-size:44px}.tabs{display:flex;gap:7px;overflow:auto;padding:1px 0 12px}.tabs button{white-space:nowrap;padding:9px 12px;font-size:12px;background:white;color:var(--green);border:1px solid var(--line)}.tabs button.active{background:var(--green);color:white}nav{position:fixed;bottom:0;left:0;right:0;background:#fffffff5;border-top:1px solid var(--line);display:flex;justify-content:center;padding:7px 6px max(9px,env(safe-area-inset-bottom));z-index:20;backdrop-filter:blur(10px)}nav button{background:none;color:var(--muted);padding:5px 4px;border-radius:10px;font-size:10px;font-weight:550;width:20%;max-width:150px}nav button span{display:block;font-size:21px;margin-bottom:3px}nav button.active{background:#eaf0e2;color:var(--green)}label{display:block;font-size:12px;font-weight:650;margin-bottom:12px}input,select,textarea{display:block;width:100%;border:1px solid #cfd9ce;background:#fff;color:#193a34;border-radius:9px;padding:11px 10px;margin-top:5px;min-width:0}input[type=checkbox]{display:inline;width:20px;margin-right:8px}input[type=color]{height:43px;padding:4px}textarea{resize:vertical;min-height:80px}input:focus,select:focus,textarea:focus{outline:2px solid #7d9d68;outline-offset:1px}.help{font-size:12px;color:var(--muted);line-height:1.5}.notice{background:#f5f0df;border-left:3px solid #c3a45c;padding:12px;font-size:12px;line-height:1.5;border-radius:4px;margin:12px 0}.toolbar{display:flex;gap:7px;flex-wrap:wrap;margin:10px 0}.toolbar button{font-size:12px;padding:8px 11px}.planbox{border:1px solid var(--line);border-radius:14px;background:#fafbf7;overflow:hidden;position:relative}.planbox svg{width:100%;height:390px;display:block;touch-action:none;user-select:none}.legend{font-size:11px;display:flex;gap:12px;flex-wrap:wrap;padding:10px}.dot{display:inline-block;width:9px;height:9px;border-radius:3px;margin-right:4px}.photo-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.photo-grid img{width:100%;height:140px;object-fit:cover;border-radius:10px}.photo-grid figure{margin:0}.photo-grid figcaption{font-size:11px}.photosmall{max-width:90px}.total{font-size:26px;font-weight:750;letter-spacing:-.8px}.money{text-align:right;white-space:nowrap}.listline{padding:11px 0;border-bottom:1px solid var(--line);display:flex;gap:10px;align-items:center}.listline:last-child{border-bottom:0}.listline .grow{flex:1;min-width:0}.listline b{font-size:13px}.listline small{display:block;font-size:11px}.listline input{margin-top:0}dialog{border:0;border-radius:20px;padding:24px;max-width:650px;width:calc(100% - 28px);max-height:90vh;overflow:auto;background:var(--bg);color:var(--green)}dialog::backdrop{background:#102e29aa;backdrop-filter:blur(3px)}dialog h2{margin-top:0}.actions{display:flex;justify-content:flex-end;gap:9px;margin-top:18px;flex-wrap:wrap}.divider{border:0;border-top:1px solid var(--line);margin:20px 0}#toast{position:fixed;bottom:90px;left:50%;transform:translateX(-50%);background:#123b35;color:white;padding:12px 20px;border-radius:12px;z-index:100;display:none;max-width:90%;font-size:13px}table{border-collapse:collapse;width:100%;font-size:12px}th,td{text-align:left;padding:9px 5px;border-bottom:1px solid var(--line)}th{font-size:10px;text-transform:uppercase;color:var(--muted)}.scroll{overflow:auto}.tile-label{font-size:7px;pointer-events:none}.check{display:flex;align-items:center;font-weight:400}.check input{width:18px;flex-shrink:0}.price-input{width:90px;padding:8px;font-size:13px}.cutlist{max-height:230px;overflow:auto}.danger-text{color:#a3442b}.inline-note{font-size:10px;margin:5px 0}.report-only{display:none}a{color:var(--green)}@media(min-width:760px){.columns{display:grid;grid-template-columns:1.2fr 1fr;gap:18px}.planbox svg{height:490px}.grid.four{grid-template-columns:repeat(4,minmax(0,1fr))}.photo-grid{grid-template-columns:repeat(3,1fr)}main{padding-top:28px}}@media(max-width:380px){main{padding:16px 12px 105px}.grid.three{grid-template-columns:1fr 1fr}.stat b{font-size:20px}h1{font-size:24px}.card{padding:14px}}@media print{header,nav,button,.no-print,#toast{display:none!important}body{background:white;font-size:11px}main{padding:0}.card{break-inside:avoid;border-radius:0}.report-only{display:block}svg{max-height:350px}.planbox svg{height:330px}input,select{border:0}h1{font-size:23px}}

[hidden]{display:none!important}
.editor-top{align-items:flex-start}.editor-tools{display:flex;gap:7px;overflow-x:auto;padding:4px 0 12px}.editor-tools button{white-space:nowrap;font-size:12px;padding:9px 12px;flex-shrink:0}.editor-hint{padding:11px 13px;background:#e9efdf;border-radius:11px;font-size:12px;line-height:1.5;margin-bottom:10px}.editor-canvas{position:relative}.editor-canvas svg,.editor-canvas canvas{height:clamp(330px,54dvh,650px);width:100%;display:block;touch-action:none}.zoom-tools{position:absolute;right:10px;bottom:10px;display:flex;align-items:center;gap:3px;background:#fffffff0;border-radius:11px;padding:4px;border:1px solid var(--line)}.zoom-tools button{background:#eef2e8;color:var(--green);font-size:19px;padding:5px 11px;min-width:36px;min-height:38px}.zoom-tools span{font-size:10px;padding:0 3px}.layer-panel .check{font-size:12px}.layer-panel input[type=range]{padding:0;border:0}.layer-panel label{margin:4px 0 10px}.opening-shape{cursor:grab}nav button{width:16.6667%;font-size:9px}main{padding-bottom:112px}.listline .money{max-width:100px}.listline{flex-wrap:wrap}.listline .grow{min-width:100px}.draft-controls{margin-top:12px}.editor-canvas text{pointer-events:none}#scene3d{background:#f4f6ef}@media(min-width:760px){.editor-tools{flex-wrap:wrap}.editor-canvas svg,.editor-canvas canvas{height:560px}}@media print{.editor-tools,.zoom-tools,.editor-hint,.layer-panel{display:none}}
#toast{pointer-events:none}
.dimension-diagram{display:block;width:100%;height:auto;max-height:320px;background:#f9faf5;border-radius:12px;margin:10px 0}.frame-drawing{padding:12px;margin:14px 0;border-color:#b8cda8}.frame-drawing h3{font-size:13px}#openingDiagram{margin-top:10px}#frameDrawing{scroll-margin-top:12px}

.frame-drawing{position:sticky;top:-12px;z-index:4;background:#fff;box-shadow:0 3px 12px #183b3512}.frame-drawing .dimension-diagram{max-height:190px}
.floor-gesture-hint{padding:0 12px 55px;margin:10px 0 0}.editor-canvas [data-edge] text{pointer-events:auto;cursor:pointer}.editor-canvas [data-zone]{cursor:pointer}.layer-panel canvas:focus{outline:2px solid #86a578}.planbox:has(#tileSvg){position:relative}.layer-panel .toolbar{margin-top:0}
.section-plan svg{width:100%;height:230px;display:block;touch-action:none;background:#f3f6ed;border-radius:12px}.section-drawing{overflow:hidden;border:1px solid #d2dfc9;border-radius:12px}.section-drawing svg{width:100%;height:310px;display:block;touch-action:none}.section-thumbnail svg{width:100%;max-height:230px;display:block}.section-drawing [data-profile-point]{cursor:grab}.section-drawing text{pointer-events:none}[data-section-u],[data-section-z]{max-width:190px}#alignmentGuides{pointer-events:none}.editor-canvas [data-shared-wall]{pointer-events:none}

.designer-layout{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(300px,.85fr);gap:18px;align-items:start}.designer-aside{position:sticky;top:105px}.designer-preview,#designerDrawing svg{width:100%;height:300px;display:block;background:#f4f7ee;border-radius:12px}.designer-layout form{min-width:0}.designer-aside .stat b{font-size:22px}details{margin-top:12px}summary{cursor:pointer;font-weight:650;font-size:13px}@media(max-width:760px){.designer-layout{display:flex;flex-direction:column-reverse}.designer-aside{position:static;width:100%}.designer-preview,#designerDrawing svg{height:220px}.designer-layout form{width:100%}}

.fabrication-svg{display:block;width:100%;height:auto;max-height:none}.report-scene{display:block;width:100%;height:auto;max-height:650px;object-fit:contain}.report-photo{max-width:100%;max-height:420px;object-fit:contain}.dimension-table{width:100%;border-collapse:collapse}.dimension-table th,.dimension-table td{padding:8px;border-bottom:1px solid #dce3da;text-align:left;vertical-align:top}.report-plan svg{width:100%;height:440px}#sceneInspector p{margin:7px 0}@media print{@page{size:A4;margin:12mm}.print-section{break-before:page;break-inside:avoid}.print-section:first-of-type{break-before:auto}.material-section{break-inside:auto}.dimension-table{font-size:11px;table-layout:fixed}.dimension-table th,.dimension-table td{padding:5px;overflow-wrap:anywhere}.dimension-table thead{display:table-header-group}.dimension-table tr{break-inside:avoid}.material-section .dimension-table th:first-child{width:27%}.material-section .dimension-table th:nth-child(2){width:45%}.material-section .dimension-table th:nth-child(3){width:13%}.fabrication-svg{max-height:none!important;height:auto!important}.report-scene{max-height:150mm;width:100%;object-fit:contain}.report-photo{max-height:130mm}.print-section h2{break-after:avoid}main{max-width:none}.card{overflow:visible}.scroll{overflow:visible}}

.project-gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:18px}.project-tile{border:1px solid var(--line);border-radius:18px;overflow:hidden;background:white}.project-tile-open{display:block;width:100%;padding:0;text-align:left;border-radius:0;background:white;color:var(--green)}.project-tile-open:hover{background:#f1f5e9}.project-tile img{display:block;width:100%;aspect-ratio:16/10;object-fit:contain;background:#f4f6ef}.project-tile-info{padding:18px}.project-tile-info h2{margin:8px 0;overflow-wrap:anywhere}.project-tile-info p{font-weight:400;color:var(--muted);margin:8px 0 16px}.project-open-label{font-size:13px}.project-preview img{display:block;width:100%;height:320px;object-fit:contain;background:#f4f6ef;border-radius:12px}.project-preview h2{margin:0}#allProjectsButton{margin-left:auto;margin-right:8px;background:#ffffff18;color:white}nav[hidden]{display:none!important}@media(max-width:560px){.project-gallery{grid-template-columns:1fr}.project-preview img{height:240px}#allProjectsButton{font-size:10px;padding:8px}.brand{font-size:19px}.brandmark{font-size:27px}}

.foundation-svg{display:block;width:100%;height:auto;max-height:none}.foundation-legend{font-size:12px}.foundation-legend p{margin:8px 0}.foundation-legend .swatch{display:inline-block;width:13px;height:13px;vertical-align:middle;margin-right:8px;border-radius:3px}@media print{.foundation-svg{max-height:190mm!important;height:auto!important}}

/* Keep validation feedback in the dialog top layer and fit reduced mobile viewports. */
.form-error{background:#fae8df;color:#873a29;border-left:3px solid #a94a30;padding:12px;border-radius:6px;font-size:13px}.form-error[hidden]{display:none}dialog{max-height:90dvh;overscroll-behavior:contain}dialog h2{overflow-wrap:anywhere}@media(max-width:560px){dialog{padding:18px}.frame-drawing{position:static}}
