:root{--bg: #14171c;--panel: #1d222a;--panel-2: #232a34;--border: #313a47;--text: #e8ecf1;--muted: #9aa7b5;--accent: #4da3ff;--accent-2: #ffb454;--danger: #ff6b6b;font-family:Segoe UI,system-ui,sans-serif}*{box-sizing:border-box}html,body,#root{margin:0;height:100%;background:var(--bg);color:var(--text);overflow:hidden}.app{display:flex;flex-direction:column;height:100%}.toolbar{display:flex;align-items:center;gap:10px;padding:6px 12px;background:var(--panel);border-bottom:1px solid var(--border);flex:0 0 auto}.brand{font-weight:700;font-size:18px;letter-spacing:.5px}.brand span{color:var(--accent)}.project-name{background:var(--panel-2);border:1px solid var(--border);color:var(--text);border-radius:6px;padding:5px 10px;width:180px}.toolbar button{background:var(--panel-2);border:1px solid var(--border);color:var(--text);border-radius:6px;padding:6px 12px;cursor:pointer;font-size:13px}.toolbar button:hover:not(:disabled){border-color:var(--accent)}.toolbar button:disabled{opacity:.4;cursor:default}.seg{display:flex;border:1px solid var(--border);border-radius:6px;overflow:hidden}.seg button{border:none;border-radius:0}.seg button.on{background:var(--accent);color:#08131f;font-weight:600}.sip-toggle{display:flex;align-items:center;gap:6px;padding:6px 12px;border:1px solid var(--border);border-radius:6px;cursor:pointer;font-size:13px;-webkit-user-select:none;user-select:none}.sip-toggle.on{background:#3d2f14;border-color:var(--accent-2);color:var(--accent-2);font-weight:600}.walk-btn{color:var(--accent)!important;font-weight:600}.spacer{flex:1}.export-menu{position:relative}.export-menu .menu{position:absolute;top:110%;right:0;background:var(--panel-2);border:1px solid var(--border);border-radius:8px;display:flex;flex-direction:column;min-width:190px;z-index:50;overflow:hidden}.export-menu .menu button{border:none;border-radius:0;text-align:left}.export-menu .menu button:hover{background:var(--accent);color:#08131f}.main{display:flex;flex:1;min-height:0}.toolrail{display:flex;flex-direction:column;gap:4px;padding:8px 6px;background:var(--panel);border-right:1px solid var(--border);flex:0 0 auto}.toolrail button{display:flex;flex-direction:column;align-items:center;gap:2px;width:64px;padding:8px 4px;background:transparent;border:1px solid transparent;border-radius:8px;color:var(--muted);cursor:pointer}.toolrail button .icon{font-size:18px}.toolrail button .lbl{font-size:10px}.toolrail button:hover{color:var(--text);border-color:var(--border)}.toolrail button.on{background:var(--panel-2);color:var(--accent);border-color:var(--accent)}.workspace{flex:1;display:flex;min-width:0}.workspace.view-split>*{flex:1 1 50%;min-width:0}.workspace.view-2d>*,.workspace.view-3d>*{flex:1}.editor2d{position:relative;border-right:1px solid var(--border)}.canvas2d{width:100%;height:100%;display:block;background:#f4f2ec;touch-action:none}.canvas2d.tool-wall,.canvas2d.tool-window,.canvas2d.tool-door,.canvas2d.tool-measure{cursor:crosshair}.canvas2d.tool-pan{cursor:grab}.grid-major{stroke:#d8d4c8;stroke-width:1}.grid-minor{stroke:#e8e5db;stroke-width:1}.axis{stroke:#b04a4a;stroke-width:1.5}.slab2d{fill:#dcd9ce;stroke:#b9b3a2;stroke-dasharray:6 4}.wall{fill:#5a5f68;stroke:#33373d;stroke-width:1}.wall-sip{fill:#c69b52;stroke:#8a6a30}.wall.sel{fill:#4da3ff;stroke:#1d6fd1}.sip-joint{stroke:#6d5220;stroke-width:1}.win{fill:#bfe0f5;stroke:#4a89b8;stroke-width:1}.win-full{fill:#8fd0f8}.win.sel,.door.sel{stroke:#1d6fd1;stroke-width:2.5}.win-line{stroke:#4a89b8;stroke-width:1}.door{fill:#f4f2ec;stroke:#8a6a30;stroke-width:1}.door-leaf{stroke:#7a5c28;stroke-width:2}.door-arc{fill:none;stroke:#7a5c28;stroke-width:1;stroke-dasharray:4 3}.win-leaf{stroke:#3a7ba8;stroke-width:2.2}.win-arc{fill:none;stroke:#4a89b8;stroke-width:1;stroke-dasharray:4 3}.slide-arrow{fill:none;stroke:#3a7ba8;stroke-width:1.3;stroke-linejoin:round}.mullion{stroke:#2f6a92;stroke-width:2.6;stroke-linecap:butt}.dim{font-size:12px;fill:#4a4f57;text-anchor:middle;-webkit-user-select:none;user-select:none}.dim-preview,.dim-measure{fill:#1d6fd1;font-weight:600}.preview-wall{stroke:#4da3ff;stroke-width:4;stroke-linecap:round;opacity:.7}.measure-line{stroke:#d1791d;stroke-width:1.5;stroke-dasharray:6 3}.measure-pt{fill:#d1791d}.handle{fill:#fff;stroke:#1d6fd1;stroke-width:2;cursor:move}.hintbar{position:absolute;left:10px;bottom:10px;background:#14171cd9;color:var(--text);font-size:12px;padding:6px 12px;border-radius:8px;pointer-events:none}.zoombar{position:absolute;right:10px;bottom:10px;display:flex;align-items:center;gap:6px;background:#14171cd9;padding:4px 8px;border-radius:8px;font-size:12px;color:var(--muted)}.zoombar button{width:26px;height:26px;background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:6px;cursor:pointer}.view3d{position:relative;min-width:0;overflow:hidden}.view3d canvas{display:block}.walk-hint{position:absolute;top:10px;left:50%;transform:translate(-50%);background:#14171cd9;padding:6px 14px;border-radius:8px;font-size:12px;pointer-events:none}.sidebar{width:300px;flex:0 0 auto;background:var(--panel);border-left:1px solid var(--border);overflow-y:auto}.side-section{border-bottom:1px solid var(--border)}.side-title{width:100%;text-align:left;background:var(--panel-2);border:none;color:var(--text);font-weight:600;font-size:13px;padding:9px 12px;cursor:pointer}.side-body{padding:10px 12px}.props h3{margin:4px 0 8px;font-size:13px;color:var(--accent-2);text-transform:uppercase;letter-spacing:.5px}.row{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px;font-size:13px}.row label{color:var(--muted)}.num{display:flex;align-items:center;gap:4px}.num input{width:74px}.num em{color:var(--muted);font-style:normal;font-size:12px}input[type=number],input[type=text],input[type=password],select,textarea{background:var(--panel-2);border:1px solid var(--border);color:var(--text);border-radius:6px;padding:5px 8px;font-size:13px;max-width:170px}textarea{width:100%;max-width:none;resize:vertical;margin-bottom:8px}.spec{font-size:12px;color:var(--muted);line-height:1.5;background:var(--panel-2);border-radius:8px;padding:8px 10px}button.danger{background:transparent;border:1px solid var(--danger);color:var(--danger);border-radius:6px;padding:6px 12px;cursor:pointer;width:100%;margin-top:6px}button.danger:hover{background:var(--danger);color:#fff}button.primary{background:var(--accent);border:none;color:#08131f;font-weight:600;border-radius:6px;padding:8px 12px;cursor:pointer;width:100%}button.primary:disabled{opacity:.5}.error{color:var(--danger);font-size:12px}.ai-result{width:100%;border-radius:8px;margin-top:8px}.dim-img{opacity:.5}.btn-like{display:block;text-align:center;margin-top:6px;color:var(--accent);font-size:13px}.itm{stroke:#4a4436;vector-effect:non-scaling-stroke;stroke-width:1.2;fill-opacity:.92}.itm-detail{stroke:#4a4436;vector-effect:non-scaling-stroke;stroke-width:.8}.itm-line{stroke:#4a4436;vector-effect:non-scaling-stroke;stroke-width:1;fill:none}.item-sel-box{fill:none;stroke:#1d6fd1;stroke-dasharray:.08 .05;vector-effect:non-scaling-stroke;stroke-width:1.6}.canvas2d.placing{cursor:copy}.ctx-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:90}.ctx-menu{position:absolute;z-index:100;background:var(--panel-2);border:1px solid var(--border);border-radius:10px;box-shadow:0 8px 28px #00000073;padding:5px;min-width:210px;display:flex;flex-direction:column}.ctx-menu button{background:transparent;border:none;color:var(--text);text-align:left;padding:7px 10px;border-radius:6px;cursor:pointer;font-size:13px}.ctx-menu button:hover{background:var(--accent);color:#08131f}.ctx-menu button.danger-item{color:var(--danger)}.ctx-menu button.danger-item:hover{background:var(--danger);color:#fff}.ctx-menu hr{border:none;border-top:1px solid var(--border);margin:4px 6px}.ctx-title{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px;padding:5px 10px 2px}.ctx-resize{padding:8px}.ctx-resize .row input,.ctx-resize .row select{width:90px}.ctx-resize-actions{display:flex;gap:6px;margin-top:6px}.ctx-resize-actions button{flex:1;border:1px solid var(--border);border-radius:6px;padding:6px}.ctx-resize-actions button.primary{background:var(--accent);border:none;color:#08131f;font-weight:600}.furn-quick{display:flex;gap:6px;margin-bottom:8px}.furn-quick button{flex:1;background:var(--panel-2);border:1px solid var(--border);color:var(--text);border-radius:6px;padding:6px;cursor:pointer;font-size:12px}.furn-quick button:hover{border-color:var(--accent)}.furn-cat{margin-bottom:2px}.furn-cat-title{width:100%;text-align:left;background:transparent;border:none;color:var(--text);font-size:13px;font-weight:600;padding:6px 4px;cursor:pointer}.furn-grid{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:2px 0 8px}.furn-item{background:var(--panel-2);border:1px solid var(--border);color:var(--text);border-radius:6px;padding:6px;cursor:pointer;font-size:11.5px;text-align:left}.furn-item:hover{border-color:var(--accent)}.furn-item.on{background:var(--accent);color:#08131f;font-weight:600;border-color:var(--accent)}.level-seg button.on{background:var(--accent-2);color:#241a05}.level-seg .level-add{color:var(--accent);font-weight:700}.level-seg .level-del{color:var(--danger)}.level-seg .level-copy{color:var(--accent)}.style-select{max-width:140px}.wall-ghost{fill:#b9b4a6;opacity:.35;stroke:none;pointer-events:none}.stair-arrow{stroke:#b3541e;fill:none;vector-effect:non-scaling-stroke;stroke-width:1.6}.stair-arrow-head{fill:#b3541e;stroke:none}.room-name{font-size:13px;font-weight:700;fill:#3c4148;text-anchor:middle;-webkit-user-select:none;user-select:none}.room-area{font-size:11px;fill:#6a7078;text-anchor:middle;-webkit-user-select:none;user-select:none}.room-area.warn{fill:#c05555;font-style:italic}.room-label.on .room-name{fill:#1d6fd1}.canvas2d.tool-room{cursor:crosshair}.roof2d{fill:none;stroke:#a08f5f;stroke-width:1.2;stroke-dasharray:10 5}.roof2d-ridge{stroke:#a08f5f;stroke-width:1.2;stroke-dasharray:3 4}.roof-panels line{stroke:#b3a273;stroke-width:.8;opacity:.5;pointer-events:none}.claddings{pointer-events:none}.clad{stroke-width:3.5;stroke-linecap:butt}.clad-tinglado,.clad-siding,.clad-machihembrado{stroke-dasharray:5 2}.clad-zinc{stroke-dasharray:2 2}.clad-ladrillo{stroke-dasharray:7 2.5}.clad-piedra{stroke-dasharray:3 2 6 2}.clad-ceramica{stroke-dasharray:4 3.5}.clad-legend{pointer-events:none}.clad-legend>rect{fill:#fffdf7f0;stroke:#b9b3a2;stroke-width:1}.clad-legend text{font-size:11px;fill:#4a4f57;-webkit-user-select:none;user-select:none}.clad-legend-title{font-size:10px;font-weight:700;letter-spacing:.6px;fill:#7d838d}.clad-swatch{fill:#fff;stroke:#cfcabb;stroke-width:.8}.struct2d{pointer-events:none}.joist2d{stroke:#a8865a;stroke-width:1.1;opacity:.75}.beam2d{stroke:#8a6a30;stroke-width:2.2;stroke-dasharray:12 4;opacity:.85}.struct-label{font-size:10px;fill:#8a6a30;text-anchor:middle;-webkit-user-select:none;user-select:none}.void2d{pointer-events:none}.void2d polygon{fill:#5a5f6814;stroke:#7d838d;stroke-width:1.3;stroke-dasharray:6 4}.void2d text{font-size:10px;fill:#7d838d;text-anchor:middle;-webkit-user-select:none;user-select:none}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a0c1099;z-index:60;display:flex;align-items:center;justify-content:center}.despiece-modal{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:14px 16px;max-width:min(92vw,980px);max-height:90vh;overflow:auto}.despiece-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.despiece-head h3{margin:0}.despiece-actions{display:flex;gap:6px}.despiece-sheet-wrap{overflow:auto;border:1px solid var(--border);border-radius:8px;margin:8px 0}.dsp-bg{fill:#f7f5ef}.dsp-piece{fill:#ece3cc;stroke:#8a7a55;stroke-width:1}.dsp-piece.cut{fill:#f2e6c2}.dsp-piece.omit{fill:#e0ddd4;stroke-dasharray:4 3;opacity:.55}.dsp-win{fill:#cfe3ee;stroke:#5c8aa8;stroke-width:1}.dsp-door{fill:#ecd7b4;stroke:#a8743c;stroke-width:1}.dsp-title{font-size:13px;font-weight:700;fill:#3d3a30}.dsp-name{font-size:9.5px;font-weight:600;fill:#4a4436;text-anchor:middle}.dsp-dim{font-size:9px;fill:#6a6355;text-anchor:middle}.dsp-cota{stroke:#7d838d;stroke-width:1}.despiece-list{font-size:12px}.despiece-list table{border-collapse:collapse;width:100%;margin-top:6px}.despiece-list th,.despiece-list td{text-align:left;padding:3px 8px;border-bottom:1px solid var(--border)}.despiece-list th{color:var(--muted, #9aa0a8);font-weight:600}.terrain2d rect{fill:#7da05b;fill-opacity:.08;stroke:#6c8f4d;stroke-width:1.6;stroke-dasharray:14 5 3 5;pointer-events:none}.terrain2d text{font-size:11px;fill:#6c8f4d;-webkit-user-select:none;user-select:none;pointer-events:none}.setbacks line{stroke:#6c8f4d;stroke-width:1;stroke-dasharray:4 3}.setbacks text{font-size:10.5px;fill:#5d7f40;text-anchor:middle;-webkit-user-select:none;user-select:none}.setbacks g.warn line{stroke:#d64545;stroke-dasharray:none}.setbacks g.warn text{fill:#d64545;font-weight:700}.dimch{pointer-events:none}.dimch-line{stroke:#7d838d;stroke-width:1}.dimch-tick{stroke:#7d838d;stroke-width:1.4}.dimch-text{font-size:10.5px;fill:#4a4f57;text-anchor:middle;-webkit-user-select:none;user-select:none}.zoombar button.on{background:#2b5d8f;border-color:#3d78b5;color:#fff}.paste-zone{border:1.5px dashed var(--border);border-radius:8px;min-height:90px;display:flex;align-items:center;justify-content:center;text-align:center;padding:10px;margin:8px 0;font-size:12px;color:var(--muted, #9aa0a8);cursor:pointer;outline:none}.paste-zone:focus{border-color:#3d78b5;color:var(--text)}.paste-zone.has-img{padding:4px;min-height:0}.paste-zone img{max-width:100%;max-height:180px;border-radius:6px;display:block}.ai-notes{white-space:pre-wrap}.chat-log{max-height:180px;overflow-y:auto;border:1px solid var(--border);border-radius:8px;padding:6px 8px;margin:6px 0;font-size:12px}.chat-log p{margin:4px 0;white-space:pre-wrap}.chat-user{color:var(--text)}.chat-assistant{color:#9ec89e}.assistant-actions{display:flex;gap:6px;margin-top:6px}.assistant-actions .primary{flex:1}button.mic.rec{background:#8f2b2b;border-color:#b53d3d;color:#fff;animation:mic-pulse 1.2s infinite}@keyframes mic-pulse{50%{opacity:.65}}.agent-docs-actions{display:flex;flex-direction:column;gap:6px;margin:6px 0}.findings{list-style:none;padding:0;margin:6px 0;font-size:12px}.finding{border-left:3px solid var(--border);padding:5px 8px;margin-bottom:5px;border-radius:0 6px 6px 0;background:var(--panel-2);line-height:1.4}.finding.error{border-left-color:#d64545}.finding.warn{border-left-color:#d6a545}.finding.info{border-left-color:#4da3ff}.finding em{display:block;opacity:.8}.spec.ok{color:#7fae66}.audit-summary{border:1px solid var(--border);border-radius:6px;padding:6px 8px}.corpus-info{font-size:11.5px;margin:6px 0;color:var(--muted, #9aa0a8)}.corpus-info summary{cursor:pointer}.corpus-info ul{margin:4px 0 0 16px;padding:0}.agent-guide{max-height:300px;overflow:auto;font-size:10.5px;line-height:1.45;background:var(--panel-2);border:1px solid var(--border);border-radius:8px;padding:8px;white-space:pre-wrap;-webkit-user-select:text;user-select:text}.view3d-bar{position:absolute;left:10px;bottom:10px;display:flex;align-items:center;gap:6px;background:#14171cd9;padding:5px 8px;border-radius:8px}.view3d-bar button{width:30px;height:26px;background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:6px;cursor:pointer}.view3d-bar button:hover{border-color:var(--accent)}.sun-ctl{display:flex;align-items:center;gap:6px;color:var(--text);font-size:12px;margin-left:4px}.sun-ctl input[type=range]{width:110px;accent-color:var(--accent-2)}.budget-title{margin:10px 0 6px;font-size:12px;color:var(--accent-2);text-transform:uppercase;letter-spacing:.5px}.price-input{width:78px;max-width:78px;padding:3px 6px;font-size:12px}.thermal table{width:100%;border-collapse:collapse;font-size:12px;margin:8px 0}.thermal th,.thermal td{border-bottom:1px solid var(--border);padding:4px 6px;text-align:left}.thermal th{color:var(--muted)}.thermal td.ok{color:#6fcf7c;font-weight:600}.thermal td.fail{color:var(--danger);font-weight:600}.thermal select{max-width:190px}.sip-compute table{width:100%;border-collapse:collapse;font-size:12px;margin-bottom:8px}.sip-compute th,.sip-compute td{border-bottom:1px solid var(--border);padding:4px 6px;text-align:left}.sip-compute th{color:var(--muted);font-weight:600}.cloud-save{color:var(--accent)!important;font-weight:600}.account .row input{max-width:150px}.account-tabs{margin-bottom:10px}.account-tabs button{flex:1;background:var(--panel-2);border:none;color:var(--text);padding:6px 8px;font-size:13px;cursor:pointer}.account-tabs button.on{background:var(--accent);color:#08131f;font-weight:600}.account-who{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:150px}.account-h{margin:14px 0 6px;font-size:12px;color:var(--accent-2);text-transform:uppercase;letter-spacing:.5px}.link-btn{display:block;width:100%;background:none;border:none;color:var(--accent);font-size:12px;padding:6px 0;cursor:pointer;text-align:center}.link-btn:hover{text-decoration:underline}.cloud-list{list-style:none;margin:0;padding:0}.cloud-list li{display:flex;align-items:stretch;gap:4px;border:1px solid var(--border);border-radius:8px;margin-bottom:6px;overflow:hidden}.cloud-list li.on{border-color:var(--accent)}.cloud-open{flex:1;display:block;text-align:left;background:none;border:none;color:var(--text);padding:7px 9px;cursor:pointer;min-width:0}.cloud-open:hover{background:var(--panel-2)}.cloud-open strong{display:block;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cloud-open em{display:block;font-style:normal;font-size:11px;color:var(--muted);margin-top:2px}.cloud-del{background:none;border:none;border-left:1px solid var(--border);color:var(--muted);font-size:16px;padding:0 10px;cursor:pointer}.cloud-del:hover{color:var(--danger)}
