:root{--bg: #111214;--surface: #191b1e;--border: #2a2d31;--text: #e6e7e9;--muted: #9a9da3;--accent: #c88a4b;--accent-hover: #e0a45e;--on-accent: #111214;--danger: #c4553d;--steel: #6c8299;--wall: #5a5e66;--font: -apple-system, BlinkMacSystemFont, "Segoe UI", Inter, sans-serif;--mono: ui-monospace, "SF Mono", Menlo, monospace;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font:13px/1.45 var(--font)}button,select,input{font:inherit;color:inherit}button{background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:5px 10px;cursor:pointer}button:hover:not(:disabled){border-color:var(--muted)}button:disabled{color:var(--muted);opacity:.5;cursor:default}button.active{border-color:var(--accent);color:var(--accent)}button.danger{color:var(--danger);margin-top:12px}kbd{margin-left:6px;font:11px var(--mono);color:var(--muted)}code{font:12px var(--mono);color:var(--muted)}.muted{color:var(--muted)}.app{display:grid;grid-template-rows:auto 1fr 160px auto;height:100%}.app.issues-closed{grid-template-rows:auto 1fr auto}.toolbar{position:relative;display:flex;align-items:center;gap:16px;padding:8px 12px;border-bottom:1px solid var(--border)}.toolbar nav{display:flex;gap:6px}.toolbar .view-modes{position:absolute;left:50%;transform:translate(-50%)}button.icon{display:grid;place-items:center;padding:5px;line-height:0}.toolbar nav.segmented{gap:0}.segmented>button{border-radius:0;margin-left:-1px}.segmented>button:first-child{border-radius:6px 0 0 6px;margin-left:0}.segmented>button:last-child{border-radius:0 6px 6px 0}.segmented>button.active{position:relative}.menu{position:relative}.menu-button{display:flex;align-items:center;gap:6px}.menu-list{position:absolute;top:calc(100% + 4px);left:0;z-index:10;display:flex;flex-direction:column;min-width:200px;padding:4px;background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px #0006}.menu-list>button{border:none;background:none;border-radius:4px;padding:6px 10px;text-align:left}.menu-list>button:hover:not(:disabled){background:var(--border);color:var(--accent-hover)}.menu-list>hr{width:100%;margin:4px 0;border:none;border-top:1px solid var(--border)}.menu-heading{padding:4px 10px 2px;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.04em}.brand{display:flex;align-items:center;gap:8px;font-weight:600;letter-spacing:.02em}.brand img{height:26px}.brand-accent{color:var(--accent)}.workspace{display:grid;grid-template-columns:1fr 1fr 280px;min-height:0}.workspace.view-plan,.workspace.view-3d{grid-template-columns:1fr 280px}.workspace.view-plan .frame-pane,.workspace.view-3d .plan-pane{display:none}.pane{position:relative;min-width:0;min-height:0;border-right:1px solid var(--border)}.plan{display:block;width:100%;height:100%;touch-action:none;-webkit-user-select:none;user-select:none}.plan.tool-wall,.plan.tool-window,.plan.tool-floor-opening,.plan.tool-cantilever,.plan.tool-floor-beam,.plan.tool-door{cursor:crosshair}.grid-minor{fill:none;stroke:var(--surface)}.grid-major{fill:none;stroke:var(--border)}.wall{fill:none;stroke:var(--wall);stroke-linejoin:miter;stroke-linecap:square;pointer-events:none}.wall.selected{stroke:var(--accent)}.wall-hit{fill:none;stroke:transparent;pointer-events:stroke}.opening-gap{stroke:var(--bg)}.opening{stroke:var(--muted)}.opening.door{stroke-dasharray:60 40}.opening.selected{stroke:var(--accent-hover)}.preview{stroke:var(--accent);opacity:.5;pointer-events:none}.preview.misfit{stroke:var(--danger)}.draft{fill:none;stroke:var(--accent);opacity:.6;stroke-linejoin:miter;stroke-linecap:square;pointer-events:none}.cursor{fill:var(--accent-hover);pointer-events:none}.wall-length{fill:var(--muted);font-family:var(--mono);pointer-events:none}.wall-length.selected{fill:var(--accent)}.section-joint{stroke:var(--text);stroke-linecap:butt;pointer-events:none}.allowed{stroke:var(--steel);opacity:.35;stroke-linecap:butt;pointer-events:none}.drag-label{fill:var(--text);font-family:var(--mono);paint-order:stroke;stroke:var(--bg);stroke-width:.25em;pointer-events:none}.wall.below{stroke:var(--border)}.floor-opening.cantilever polygon{fill:var(--accent);fill-opacity:.08}.floor-opening.cantilever{stroke-dasharray:120 60}.floor-beam>line:first-child{stroke:var(--steel);opacity:.55;stroke-linecap:butt}.floor-beam.selected>line:first-child{stroke:var(--accent-hover);opacity:.8}.floor-beam-hit{stroke:transparent;pointer-events:stroke;cursor:move}.floor-beam-post{fill:var(--steel);pointer-events:none}.floor-beam-post.active{fill:var(--bg);stroke:var(--accent-hover);pointer-events:all;cursor:move}.draft.misfit{stroke:var(--danger)}.floor-opening{stroke:var(--muted)}.floor-opening polygon{fill:var(--bg);fill-opacity:.6;cursor:move}.floor-opening path{fill:none;pointer-events:none}.floor-opening.selected{stroke:var(--accent-hover)}.floor-opening.over,.floor-opening.over.selected{stroke:var(--danger)}.floor-opening.hatch polygon{pointer-events:none}.tool-floor-opening .floor-opening polygon{cursor:inherit}.resize-handle{fill:var(--bg);stroke:var(--accent-hover)}.rect-draft{fill:var(--accent);fill-opacity:.12;stroke:var(--accent);pointer-events:none}.rect-draft.misfit{fill:var(--danger);stroke:var(--danger)}.plan-tools,.storey-stack{position:absolute;left:8px;display:flex;flex-direction:column;gap:4px;padding:4px;background:color-mix(in srgb,var(--surface) 92%,transparent);border:1px solid var(--border);border-radius:8px}.plan-tools{top:8px}.storey-stack{bottom:8px}.storey-stack button{width:30px;height:30px;padding:0;border-color:transparent;background:none}.storey-stack button.storey{font:12px var(--mono);font-variant-numeric:tabular-nums;color:var(--muted)}.storey-stack button:hover:not(:disabled){border-color:var(--border);color:var(--text)}.storey-stack button.active{border-color:var(--accent);color:var(--accent)}.storey-stack button.icon{color:var(--muted)}.storey-stack button.remove:hover{color:var(--danger)}.storey-stack hr{width:100%;margin:0;border:none;border-top:1px solid var(--border)}.plan-tool{position:relative}.plan-tools button.icon{padding:6px;border-color:transparent;background:none}.plan-tools button.icon:hover:not(:disabled){border-color:var(--border)}.plan-tools button.icon.active{border-color:var(--accent)}.plan-kinds{position:absolute;top:-5px;left:calc(100% + 8px);display:flex;gap:4px;padding:4px;background:color-mix(in srgb,var(--surface) 92%,transparent);border:1px solid var(--border);border-radius:8px}.frame-view{background:var(--bg)}.grid-level-bar{position:absolute;top:8px;right:8px;display:flex;align-items:center;gap:4px;font-size:12px}.grid-level-bar button{padding:3px 8px;font-size:12px}.structure,.tree-open{position:absolute;top:8px;left:8px}.structure{display:flex;flex-direction:column;width:280px;max-height:calc(100% - 16px);background:color-mix(in srgb,var(--surface) 92%,transparent);border:1px solid var(--border);border-radius:8px;font-size:12px;overflow:hidden}.structure>header{display:flex;align-items:center;gap:8px;padding:6px 6px 6px 10px;border-bottom:1px solid var(--border);font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.structure>header>span{flex:1}.structure>footer{padding:6px 10px;border-top:1px solid var(--border);color:var(--muted)}.structure>footer label{display:flex;align-items:center;gap:6px;cursor:pointer}.structure>footer input{accent-color:var(--accent);margin:0}button.link{border:none;background:none;padding:0;color:var(--accent);text-transform:none;letter-spacing:0;font-weight:400}button.link:hover{color:var(--accent-hover)}.tree{flex:1;min-height:0;overflow-y:auto;padding:4px 0}.tree-row{display:flex;align-items:center;gap:4px;height:24px;padding-right:4px;cursor:default;-webkit-user-select:none;user-select:none}.tree-row:hover{background:var(--border)}.tree-row.selected{box-shadow:inset 2px 0 0 var(--accent);color:var(--accent)}.tree-row.current>.tree-label{font-weight:600}.tree-row.off>.tree-label,.tree-row.inherited>.tree-label,.tree-row.off>.tree-note,.tree-row.inherited>.tree-note{color:var(--muted);opacity:.6}.tree-row.off>.tree-label{text-decoration:line-through}.tree-label{flex:1;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.tree-note,.tree-count{flex:none;color:var(--muted);font:11px var(--mono);font-variant-numeric:tabular-nums}.tree-count{min-width:4ch;margin-left:4px;text-align:right;opacity:.7}.tree-chevron,.tree-icon{flex:none;display:grid;place-items:center;width:20px;height:20px;padding:0;border:none;background:none;color:var(--muted)}.tree-chevron:disabled{opacity:1}.tree-icon:hover:not(:disabled),.tree-chevron:hover:not(:disabled){color:var(--text)}.tree-row .isolate,.tree-row .eye[aria-pressed=true]{visibility:hidden}.tree-row:hover .isolate,.tree-row:hover .eye,.tree-row:focus-within .isolate,.tree-row:focus-within .eye{visibility:visible}.tree-row .eye[aria-pressed=false]{color:var(--accent)}.tree-open{padding:3px 8px;font-size:12px}.tree-badge{margin-left:8px;color:var(--accent)}.view-error{display:grid;place-content:center;height:100%;padding:24px;text-align:center}.view-error p{margin:4px 0}.inspector{padding:12px 14px;overflow-y:auto;background:var(--surface)}.inspector h3{margin:16px 0 4px;font-size:12px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.inspector h2{margin:0 0 12px;font-size:14px;font-weight:600}.field{display:flex;flex-direction:column;gap:4px;margin-bottom:10px}.field>span:first-child{color:var(--muted);font-size:12px}.field-input{display:flex;align-items:center;gap:6px}.field input,.field select{width:100%;background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:5px 8px}.field input:focus,.field select:focus{outline:none;border-color:var(--accent)}.field em{font-style:normal;color:var(--muted)}dl{display:grid;grid-template-columns:fit-content(45%) 1fr;gap:4px 12px;margin:12px 0}dl.stacked{grid-template-columns:1fr;gap:0}dl.stacked dd{margin-bottom:8px}dt{color:var(--muted)}dd{margin:0;overflow-wrap:anywhere}dd.calc,p.calc{color:var(--accent)}dd.over{color:var(--danger)}.segment{margin-bottom:10px}.section-joints{padding-left:10px;border-left:1px solid var(--border)}.section-joints p{margin:-4px 0 8px;font-size:12px}.section-joints>button{padding:3px 8px;font-size:12px}.field-row{display:flex;align-items:flex-end;gap:6px}.field-row>.field{flex:1}.field-row>button.remove{margin-bottom:10px;padding:5px 9px;color:var(--muted)}.field-row>button.remove:hover{color:var(--danger)}.layer{border-top:1px solid var(--border);padding-top:8px}.panel-tabs{position:sticky;top:-12px;z-index:1;display:flex;flex-wrap:wrap;gap:4px;margin:12px -14px 0;padding:8px 14px;background:var(--surface);border-bottom:1px solid var(--border)}.panel-tabs button{flex:1 1 auto;padding:4px 6px;font-size:12px}.panel-hint{margin:8px 0 4px;font-size:12px}.panel-section{border-bottom:1px solid var(--border)}.panel-section>summary{display:flex;align-items:center;gap:6px;padding:10px 0;font-size:12px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;cursor:pointer;list-style:none;-webkit-user-select:none;user-select:none}.panel-section>summary::-webkit-details-marker{display:none}.panel-section>summary:before{content:"▸";transition:transform .15s}.panel-section[open]>summary:before{transform:rotate(90deg)}.panel-section>summary:hover,.panel-section>summary:focus-visible{color:var(--text);outline:none}.panel-body{padding-bottom:12px}.panel-body>dl:first-child,.panel-body>h3:first-child{margin-top:0}.issues{display:flex;flex-direction:column;min-height:0;border-top:1px solid var(--border)}.issues header{display:flex;align-items:baseline;gap:6px;padding:6px 12px;font-weight:600}.issues header .close{margin-left:auto;border:none;background:none;padding:0 2px;color:var(--muted);font-size:16px;line-height:1}.issues header .close:hover{color:var(--accent-hover)}.issues ul{list-style:none;margin:0;padding:0 0 6px;overflow-y:auto}.issues li{display:flex;gap:10px;align-items:baseline;padding:3px 12px;cursor:pointer}.issues li:hover{background:var(--surface)}.issues .badge{flex:none;width:120px;font-size:12px}.issues .error .badge{color:var(--danger)}.issues .calc-required .badge{color:var(--accent)}.issues .warning .badge{color:var(--muted)}.issues .message{flex:1}.issues .source{flex:none;color:var(--muted);font-size:12px}.status{display:flex;gap:16px;padding:5px 12px;border-top:1px solid var(--border);color:var(--muted);font-size:12px}.status .issue-counts{display:flex;gap:16px;border:none;background:none;padding:0;color:inherit;font:inherit;text-transform:none;letter-spacing:0;cursor:pointer}.status .issue-counts:hover .toggle{color:var(--accent-hover)}.status .toggle{width:8px}.status .error{color:var(--danger)}.status .calc{color:var(--accent)}.status .disclaimer{margin-left:auto}table.piles{width:100%;margin:8px 0;border-collapse:collapse;font-family:var(--mono);font-size:11px;font-variant-numeric:tabular-nums}table.piles th{color:var(--muted);font-weight:400;text-align:right;border-bottom:1px solid var(--border);padding:2px 4px}table.piles td{text-align:right;padding:2px 4px}table.piles th:first-child,table.piles td:first-child{text-align:left}table.piles td.over{color:var(--danger)}.pile-blade{fill:none;stroke:var(--steel);stroke-dasharray:20 14;pointer-events:none}.pile-shaft{fill:var(--steel);pointer-events:none}.pile-blade.over,.pile-shaft.over{stroke:var(--danger)}.pile-shaft.over{fill:var(--danger)}.cloud-panel{position:absolute;top:100%;left:0;z-index:50;width:360px;max-height:75vh;overflow:auto;padding:16px;background:var(--surface);color:var(--text);border:1px solid var(--border);box-shadow:0 8px 24px #0002}.cloud-panel button,.cloud-panel a{margin:4px}.cloud-panel p{overflow-wrap:anywhere}.public-viewer{padding:24px;overflow:auto;height:100vh;background:var(--bg)}.public-viewer svg{background:#fff;border:1px solid var(--border);width:100%;height:auto}.cloud-panel a,.public-viewer a{color:var(--accent)}.project-library{width:min(780px,calc(100vw - 32px));max-height:85vh;overflow:auto;padding:0;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:12px;box-shadow:0 24px 80px #0006}.project-library::backdrop{background:#0009}.library-header{display:flex;align-items:center;justify-content:space-between;padding:24px 28px 20px;gap:16px}.library-eyebrow{color:var(--muted);font-size:10px;letter-spacing:.14em}.library-heading{min-width:0;flex:1}.library-header .library-heading h2{margin-top:6px}.library-header h2{margin:0;font-size:22px}.library-close{display:grid;place-items:center;flex-shrink:0;width:32px;height:32px;padding:0;line-height:1}.project-library fieldset{border:0;padding:0;margin:0;min-width:0}.library-toolbar{padding:0 28px 20px}.library-search{display:flex;align-items:center;flex:1;gap:8px;padding:0 12px;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--muted)}.library-search:focus-within{border-color:var(--accent)}.library-search input{width:100%;min-width:0;height:38px;border:0;background:transparent;color:var(--text);outline:none}.project-library .library-primary{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:40px;flex-shrink:0;line-height:20px;white-space:nowrap;background:var(--accent);color:var(--bg);border-color:var(--accent);padding:0 16px;font-weight:600}.project-library .library-primary:hover{filter:brightness(1.1)}.project-library .library-sources{overflow-x:auto;display:flex;gap:4px;padding:0 28px;border-bottom:1px solid var(--border)}.library-sources button{flex-shrink:0;white-space:nowrap;border:0;border-bottom:2px solid transparent;border-radius:0;padding:12px 14px;background:transparent;color:var(--muted)}.library-sources button[aria-pressed=true]{color:var(--text);border-bottom-color:var(--accent)}.library-sources span{margin-left:6px;font-size:11px;color:var(--muted)}.library-results{min-height:220px;padding:8px 28px 24px}.library-list{list-style:none;margin:0;padding:0}.library-row{display:flex;align-items:center;gap:14px;padding:18px 0;border-bottom:1px solid var(--border)}.library-row:last-child{border-bottom:0}.library-project-icon{flex-shrink:0;display:grid;place-items:center;width:42px;height:46px;border:1px solid var(--border);border-radius:8px;color:var(--muted)}.is-current .library-project-icon{color:var(--accent)}.library-project-info{min-width:0;flex:1;overflow-wrap:anywhere}.library-project-title{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.library-badge{color:var(--accent);background:var(--bg);border:1px solid var(--border);border-radius:4px;padding:2px 6px;font-size:10px}.library-project-info small{display:block;margin-top:6px;color:var(--muted);font-size:11px}.library-row-actions{display:flex;align-items:center;gap:8px}.library-more{position:relative}.library-more summary{display:grid;place-items:center;width:32px;height:32px;border:1px solid var(--border);border-radius:6px;cursor:pointer;font-size:20px;list-style:none}.library-more summary::-webkit-details-marker{display:none}.library-more summary:hover{border-color:var(--muted)}.library-action-menu{position:absolute;right:0;bottom:36px;min-width:170px;padding:5px;background:var(--surface);border:1px solid var(--border);border-radius:6px;box-shadow:0 8px 24px #0006;z-index:2}.library-action-menu button{display:block;width:100%;padding:9px 10px;border:0;text-align:left;background:transparent}.library-action-menu button:hover{background:var(--bg)}.library-action-menu .library-delete:not(:disabled){color:var(--danger)}.library-empty{padding:40px 16px;text-align:center}.library-empty p{color:var(--muted);line-height:1.6}.library-edit{padding:0 28px 32px}.library-edit p{margin:24px 0;color:var(--muted);line-height:1.6}.library-edit form{max-width:500px}.library-edit label{display:block;margin-bottom:8px;font-weight:500}.library-edit input{width:100%;padding:12px;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--text)}.library-form-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:24px}.library-footer{display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px;padding:16px 28px;border-top:1px solid var(--border);color:var(--muted);font-size:11px}.library-error{margin:0 28px 16px;color:var(--danger)}@media (max-width: 580px){.library-header,.library-toolbar,.library-results,.library-edit,.library-footer{padding-left:16px;padding-right:16px}.library-sources{padding:0 16px}.library-project-icon{display:none}}.library-action-dialog{width:min(460px,calc(100vw - 32px))}.library-action-dialog::backdrop{background:#0007}.library-action-dialog .library-header h2{margin:0;font-size:20px}.library-action-dialog .library-edit p{margin:0 0 24px;overflow-wrap:anywhere}.library-confirm-delete{min-height:40px;padding:0 16px;background:var(--danger);border-color:var(--danger);color:var(--text);font-weight:600}.library-create{display:flex;align-items:center;gap:14px;width:100%;padding:16px;margin:8px 0;border:1px dashed var(--border);border-radius:8px;background:transparent;text-align:left}.library-create:hover:not(:disabled){border-color:var(--accent);background:var(--bg)}.library-create:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.library-create-icon{display:grid;place-items:center;flex-shrink:0;width:40px;height:40px;color:var(--accent)}.library-create strong{display:block;color:var(--accent);font-weight:600}.library-create small{display:block;margin-top:4px;color:var(--muted);font-size:11px}.export-menu{margin-left:auto}.export-menu>button{width:32px;height:32px}.export-menu .menu-list{left:auto;right:0}.library-project-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:8px 0}.library-project-actions .library-create{min-width:0;margin:0}@media (max-width: 580px){.library-project-actions .library-create{flex-direction:column;align-items:flex-start;gap:8px;padding:12px}}.library-recovery{margin:0 28px 16px}.cloud-dialog{width:min(640px,calc(100vw - 32px))}.cloud-content{padding:0 24px 24px}.cloud-content fieldset{border:0;margin:0;padding:0;min-width:0}.cloud-status{color:var(--accent)}.cloud-caption,.cloud-account,.library-drafts-description{color:var(--muted);font-size:13px}.cloud-section,.cloud-conflict,.cloud-version-preview{margin:16px 0;padding:16px;border:1px solid var(--border);border-radius:12px}.cloud-conflict{border-color:var(--danger)}.cloud-actions,.cloud-account{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.cloud-content button{margin:4px 4px 4px 0}.cloud-library-link{margin-top:20px!important}.cloud-account{justify-content:space-between;padding:16px 24px;border-top:1px solid var(--border)}.library-recovery{margin-top:24px;border-top:1px solid var(--border)}.cloud-records{list-style:none;padding:0}.cloud-records>li{padding:12px 0;border-bottom:1px solid var(--border);overflow-wrap:anywhere}.cloud-records small{display:block}.cloud-version-preview svg{width:100%;max-height:240px;background:#fff}.cloud-share-url{display:block;overflow-wrap:anywhere}.cloud-content select{max-width:100%;display:block;margin:8px 0}
