:root{color-scheme:light;--font:"Segoe UI",system-ui,Arial,sans-serif;--mono:"Cascadia Mono",Consolas,"SF Mono",monospace;--chrome:#eceef1;--panel:#f7f8fa;--field:#ffffff;--line:#d3d7dd;--line-soft:#e3e6ea;--text:#1c2026;--text-2:#4d5560;--text-3:#7a828d;--accent:#0a62c9;--accent-soft:#dbe9fb;--accent-text:#ffffff;--danger:#b4282e;--danger-soft:#fbe3e4;--ok:#1d7a46;--hover:#e2e6eb;--canvas:#e4e7eb;--paper:#fdfdfc;--sheet:#ffffff;--sheet-ink:#1c2026;--sheet-guide:#9aa3ad;--grid-minor:#eceef0;--grid-major:#d5d9de;--wall:#2a3038;--outline:#11151a;--dim:#5a636e;--label:#1c2026;--label-2:#56606b;--room-living:#e5efe3;--room-bedroom:#e3e8f7;--room-kitchen:#f6ead6;--room-bathroom:#d9eef1;--room-utility:#e9e7e2;--room-office:#ece3f6;--room-storage:#ece8dd;--room-other:#eeece8}:root[data-theme=dark]{color-scheme:dark;--chrome:#16191d;--panel:#1c2025;--field:#121519;--line:#2f353d;--line-soft:#262b31;--text:#dfe3e8;--text-2:#aab2bc;--text-3:#7d8691;--accent:#4d9bff;--accent-soft:#1d3350;--accent-text:#0b1420;--danger:#ff6b70;--danger-soft:#3d1d20;--ok:#4fc283;--hover:#272c33;--canvas:#0f1215;--paper:#181c21;--sheet:#21262c;--sheet-ink:#c9d0d8;--sheet-guide:#5d6772;--grid-minor:#1f242a;--grid-major:#2b3139;--wall:#b8c0ca;--outline:#e8ecf0;--dim:#8f99a5;--label:#e6eaee;--label-2:#a3adb8;--room-living:#22302a;--room-bedroom:#232a3c;--room-kitchen:#352d20;--room-bathroom:#1d3236;--room-utility:#2b2a28;--room-office:#2e2539;--room-storage:#2f2c25;--room-other:#2a2a29}*{box-sizing:border-box}body,html{height:100%}body{margin:0;background:var(--chrome);color:var(--text);font:12px/1.35 var(--font);overflow:hidden}button,input,select{font:inherit;color:inherit}kbd{font:10px var(--mono);color:var(--text-3);border:1px solid var(--line);border-radius:3px;padding:0 3px;margin-left:6px;background:var(--panel)}[hidden]{display:none!important}.app{height:100vh;min-width:1024px;min-height:600px;display:flex;flex-direction:column}.menubar{height:36px;flex:none;display:flex;align-items:center;gap:8px;padding:0 8px;background:var(--chrome);border-bottom:1px solid var(--line)}.brand-mark{width:20px;height:20px;display:grid;place-items:center;background:var(--accent);color:var(--accent-text);border-radius:3px;font:700 12px var(--mono)}.project-name{width:220px;margin-left:4px;height:24px;padding:0 6px;border:1px solid#0000;border-radius:3px;background:#0000;font-weight:600}.project-name:hover{border-color:var(--line)}.project-name:focus{background:var(--field);border-color:var(--accent);outline:none}.spacer{flex:1}.cmd{height:24px;display:inline-flex;align-items:center;justify-content:center;padding:0 8px;border:1px solid#0000;border-radius:3px;background:#0000;cursor:pointer;white-space:nowrap}.cmd:hover:not(:disabled){background:var(--hover);border-color:var(--line)}.cmd:active:not(:disabled){background:var(--accent-soft)}.cmd:disabled{color:var(--text-3);cursor:default}.cmd:disabled kbd{opacity:.6}.cmd.icon{width:24px;padding:0;font:14px var(--mono)}.props .cmd{border-color:var(--line);width:100%}.cmd.danger{color:var(--danger);border-color:var(--line);width:100%;margin-top:6px}.cmd.danger:hover:not(:disabled){background:var(--danger-soft);border-color:var(--danger)}.cmd:focus-visible,.fold:focus-visible,.item:focus-visible,.panel-toggle:focus-visible,.tool:focus-visible{outline:2px solid var(--accent);outline-offset:-1px}.workbench{flex:1;min-height:0;display:grid;grid-template-columns:var(--left-width,216px) minmax(0,1fr) var(--right-width,248px)}.panel{position:relative;min-width:0;min-height:0;background:var(--panel);display:flex;flex-direction:column}.panel.left{border-right:1px solid var(--line)}.panel.right{border-left:1px solid var(--line)}.panel-body{flex:1;min-height:0;overflow:auto;display:flex;flex-direction:column}.panel-head{height:26px;flex:none;display:flex;align-items:center;gap:4px;padding:0 4px 0 8px;border-bottom:1px solid var(--line-soft);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:var(--text-3)}.panel.right .panel-head{padding:0 8px 0 4px}.panel-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.panel-toggle{width:20px;height:20px;flex:none;display:grid;place-items:center;padding:0;border:1px solid#0000;border-radius:3px;background:#0000;color:var(--text-2);cursor:pointer}.panel-toggle:hover{background:var(--hover);border-color:var(--line)}.panel-toggle:before{content:"";width:6px;height:6px;margin-left:3px;border:solid;border-width:0 0 2px 2px;transform:rotate(45deg)}.panel.left[data-open=false] .panel-toggle:before,.panel.right[data-open=true] .panel-toggle:before{margin:0 3px 0 0;transform:rotate(-135deg)}.panel[data-open=false] .panel-head{height:auto;padding:4px 0;justify-content:center;border-bottom:0}.panel[data-open=false] .panel-body,.panel[data-open=false] .panel-title,.panel[data-open=false] .resize-handle{display:none}.resize-handle{position:absolute;top:0;bottom:0;z-index:5;width:7px;cursor:col-resize;touch-action:none}.panel.left .resize-handle{right:-4px}.panel.right .resize-handle{left:-4px}.resize-handle.active,.resize-handle:hover{background:linear-gradient(to right,transparent 2px,var(--accent) 2px,var(--accent) 5px,transparent 5px)}body.resizing{cursor:col-resize;user-select:none}.block{padding:6px 8px 8px;border-bottom:1px solid var(--line-soft)}.block.grow{flex:1;border-bottom:0}.block-head{height:22px;display:flex;align-items:center;justify-content:space-between;padding:0 8px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:var(--text-3)}.block .block-head{padding:0}.block-head.sub{margin-top:8px}.fold{height:20px;display:inline-flex;align-items:center;gap:6px;margin-left:-4px;padding:0 4px;border:0;border-radius:3px;background:#0000;color:inherit;font:inherit;letter-spacing:inherit;text-transform:inherit;cursor:pointer}.fold:hover{background:var(--hover);color:var(--text-2)}.fold:before{content:"";width:5px;height:5px;margin:-3px 1px 0;border:solid;border-width:0 1.5px 1.5px 0;transform:rotate(45deg)}.fold[aria-expanded=false]:before{margin:0 2px 0 0;transform:rotate(-45deg)}.count{font:10px var(--mono)}.link{border:0;background:none;color:var(--accent);cursor:pointer;font-size:11px;font-weight:600;padding:0;text-transform:none;letter-spacing:0}.link:hover{text-decoration:underline}.list{display:flex;flex-direction:column}.item{height:22px;display:grid;grid-template-columns:10px minmax(0,1fr)auto;align-items:center;gap:6px;padding:0 6px;border:0;border-radius:3px;background:#0000;text-align:left;cursor:pointer}.item:hover{background:var(--hover)}.item.active{background:var(--accent);color:var(--accent-text)}.item.active small{color:inherit;opacity:.85}.item span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.item small{font:10px var(--mono);color:var(--text-3)}.item .swatch{width:10px;height:10px;border:1px solid var(--wall);border-radius:1px}.item .glyph{font:10px var(--mono);color:inherit;opacity:.7}.item.plain{grid-template-columns:minmax(0,1fr)auto}.empty{padding:2px 6px;color:var(--text-3);font-size:11px}.props{padding:8px;display:flex;flex-direction:column;gap:6px;border-bottom:1px solid var(--line-soft)}.props label{display:flex;flex-direction:column;gap:2px;font-size:10px;font-weight:600;color:var(--text-2)}.props input,.props select{height:24px;width:100%;padding:0 6px;border:1px solid var(--line);border-radius:3px;background:var(--field);font-size:12px;font-weight:400;color:var(--text)}.props input.length,.props input.mark,.props input[type=number]{font-family:var(--mono)}.sheet-warning{margin:6px 0 0;padding:4px 6px;border:1px solid var(--danger);border-radius:3px;background:var(--danger-soft);color:var(--danger);font-size:11px;line-height:1.35}.readout.warn{color:var(--danger);font-weight:700}#floorReadout{min-width:0;overflow:hidden;text-overflow:ellipsis}.props input:focus,.props select:focus,.props textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.props textarea{width:100%;padding:4px 6px;border:1px solid var(--line);border-radius:3px;background:var(--field);color:var(--text);font:12px/1.35 var(--font);resize:vertical}.props label.check{flex-direction:row;align-items:center;gap:6px;font-size:11px}.props label.check input{width:auto;height:auto;margin:0}.access-review{padding:4px 6px;border:1px solid var(--line);border-radius:3px;background:var(--accent-soft)}.access-review ul{margin:0;padding-left:16px;font-size:11px;line-height:1.4;color:var(--text)}.access-review .fine{margin-top:4px}.pair{display:grid;grid-template-columns:1fr 1fr;gap:6px}.stats{margin:2px 0 0;display:grid;grid-template-columns:auto 1fr;gap:1px 10px;font-size:11px}.stats dt{color:var(--text-3)}.stats dd{margin:0;text-align:right;font-family:var(--mono);color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.shortcut-list{margin:0;display:grid;grid-template-columns:auto 1fr;gap:4px 16px;font-size:12px}.shortcut-list dt{font:11px var(--mono);color:var(--text);white-space:nowrap}.shortcut-list dd{margin:0;color:var(--text-2)}.fine{margin:6px 0 0;font-size:10px;line-height:1.4;color:var(--text-3)}.review p{margin:0 0 6px;font-size:11px;line-height:1.4;color:var(--text-2)}.review .review-floor{margin-top:4px;font-weight:700;color:var(--text)}.review .review-blocker{color:var(--danger);font-weight:600}.review .review-opening{font:10px var(--mono)}.stage{min-width:0;min-height:0;display:flex;flex-direction:column}.toolbar{height:32px;flex:none;display:flex;align-items:center;gap:6px;padding:0 6px;background:var(--panel);border-bottom:1px solid var(--line)}.tools,.zoom{display:flex;align-items:center;gap:2px}.tool{height:24px;display:inline-flex;align-items:center;padding:0 8px;border:1px solid#0000;border-radius:3px;background:#0000;cursor:pointer}.tool:hover{background:var(--hover)}.tool.active{background:var(--accent);color:var(--accent-text)}.tool.active kbd{color:inherit;border-color:currentcolor;background:#0000;opacity:.8}.sep{width:1px;height:18px;background:var(--line)}.readout{font:11px var(--mono);color:var(--text-2);white-space:nowrap}.zoom .readout{width:44px;text-align:center}.tool-hint{color:var(--text-3);font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.viewport{position:relative;flex:1;min-height:0;overflow:hidden;background:var(--canvas)}.viewport svg{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none;user-select:none}.viewport[data-tool=select]{cursor:default}.viewport[data-tool=room]{cursor:crosshair}.viewport[data-tool=door],.viewport[data-tool=window]{cursor:cell}.viewport[data-tool=footprint],.viewport[data-tool=wall]{cursor:crosshair}.viewport.panning,.viewport[data-tool=pan]{cursor:grab}.viewport.dragging{cursor:grabbing}.viewport.over-room[data-tool=select]{cursor:move}.recovery-notice{flex:none;display:flex;align-items:center;gap:8px;padding:5px 8px;background:var(--accent-soft);border-bottom:1px solid var(--line);font-size:12px}.recovery-notice span{flex:1;min-width:0}.recovery-notice .cmd{border-color:var(--line)}.recovery-notice.warn{background:var(--danger-soft);color:var(--danger)}.statusbar{height:22px;flex:none;display:flex;align-items:center;gap:14px;padding:0 8px;background:var(--panel);border-top:1px solid var(--line)}.status{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-2)}.status.error{color:var(--danger);font-weight:600}.status.ok{color:var(--ok)}.muted{color:var(--text-3)}.plan text{font-family:var(--font);pointer-events:none}.plan .paper{fill:var(--paper)}.plan .sheet{fill:var(--sheet);stroke:var(--line);stroke-width:1}.plan .sheet-border,.plan .sheet-title{fill:none;stroke:var(--sheet-ink);stroke-width:1}.plan .sheet-area{fill:none;stroke:var(--sheet-guide);stroke-width:1;stroke-dasharray:6 4}.plan .sheet-area.overflow{stroke:var(--danger);stroke-width:2}.plan .sheet-text{fill:var(--sheet-ink);font-family:Arial,sans-serif}.plan .sheet-rule{stroke:var(--sheet-ink);stroke-width:1}.area-audit table{width:100%;border-collapse:collapse;table-layout:fixed;font-size:11px}.area-audit td,.area-audit th{padding:5px 3px;text-align:right;vertical-align:top;overflow-wrap:anywhere;border-bottom:1px solid var(--line-soft)}.area-audit td:first-child,.area-audit th:first-child{width:42%;text-align:left}.area-audit #regionList .item{grid-template-columns:minmax(0,1fr);height:auto;min-height:30px;gap:2px;padding:5px 6px}.area-audit #regionList .item span,.area-audit #regionStats dd{white-space:normal;overflow:visible;overflow-wrap:anywhere}.area-audit #regionList .item small{white-space:normal;overflow-wrap:anywhere}.area-audit #zoomRegionBtn{border-color:var(--line);width:100%}.area-audit .region-navigation{display:flex;justify-content:space-between}.area-audit #regionNumber{width:100%}.plan .unassigned-region{fill:none;stroke:var(--danger);stroke-width:2;pointer-events:none}.plan .unassigned-region.selected{stroke:var(--accent);stroke-width:3}.plan .unassigned-region .region-locator{stroke-dasharray:3 2}.plan .sheet-bar{fill:var(--sheet);stroke:var(--sheet-ink);stroke-width:1}.plan .sheet-bar.filled{fill:var(--sheet-ink)}.plan .sheet-overflow{fill:var(--danger);font:700 12px var(--font)}.plan .placed-dimension line{stroke:var(--sheet-ink)}.plan .placed-dimension text{fill:var(--sheet-ink);font-family:Arial,sans-serif}.plan .placed-dimension.selected line{stroke:var(--accent)}.plan .placed-dimension.selected text{fill:var(--accent);font-weight:700}.plan .placed-dimension.overflow line{stroke:var(--danger)}.plan .placed-dimension.overflow text{fill:var(--danger)}.plan .edge-start{stroke:var(--accent);stroke-width:3;stroke-linecap:round}.plan .grid-minor{stroke:var(--grid-minor);stroke-width:1}.plan .grid-major{stroke:var(--grid-major);stroke-width:1}.plan .room{stroke:var(--wall);stroke-width:2}.plan .room.selected{stroke:var(--accent);stroke-width:2.5}.plan .room-hover{fill:none;stroke:var(--accent);stroke-width:1;stroke-dasharray:3 2}.plan .kind-living{fill:var(--room-living)}.plan .kind-bedroom{fill:var(--room-bedroom)}.plan .kind-kitchen{fill:var(--room-kitchen)}.plan .kind-bathroom{fill:var(--room-bathroom)}.plan .kind-utility{fill:var(--room-utility)}.plan .kind-office{fill:var(--room-office)}.plan .kind-storage{fill:var(--room-storage)}.plan .kind-other{fill:var(--room-other)}.plan .outline{fill:none;stroke:var(--outline);stroke-width:3}.plan .room-label text{fill:var(--label);font-family:Arial,sans-serif}.plan .room-label .room-detail{fill:var(--label-2)}.plan .room-label .number-box{fill:none;stroke:var(--label)}.plan .room-label.selected .room-name,.plan .room-label.selected .room-number{fill:var(--accent)}.plan .room-label.overflow text{fill:var(--danger)}.plan .gap{stroke-linecap:butt}.plan .jamb,.plan .leaf,.plan .sash{stroke:var(--wall)}.plan .swing{fill:none;stroke:var(--wall);stroke-dasharray:3 2}.plan .arrow,.plan .panel,.plan .track{stroke:var(--wall)}.plan .travel{stroke:var(--wall);stroke-dasharray:3 2}.plan .pivot{fill:var(--wall)}.plan .door.selected .arrow,.plan .door.selected .jamb,.plan .door.selected .leaf,.plan .door.selected .panel,.plan .door.selected .swing,.plan .door.selected .track,.plan .door.selected .travel,.plan .window.selected .jamb,.plan .window.selected .sash{stroke:var(--accent)}.plan .door.selected .gap,.plan .window.selected .gap{stroke:var(--accent-soft)!important}.plan .door.selected .pivot{fill:var(--accent)}.plan .mark ellipse,.plan .mark polygon{fill:var(--paper);stroke:var(--sheet-ink)}.plan .mark text{fill:var(--sheet-ink);font-family:Arial,sans-serif}.plan .mark.selected ellipse,.plan .mark.selected polygon{stroke:var(--accent)}.plan .mark.selected text{fill:var(--accent);font-weight:700}.plan .mark.overflow ellipse,.plan .mark.overflow polygon{stroke:var(--danger)}.plan .door.overflow :is(.jamb,.leaf,.swing,.panel,.track,.travel,.arrow),.plan .window.overflow :is(.jamb,.sash){stroke:var(--danger)}.plan .door.overflow .pivot,.plan .mark.overflow text{fill:var(--danger)}.plan .dimension line{stroke:var(--dim);stroke-width:1}.plan .dimension text{fill:var(--dim);font:11px var(--mono)}.plan .dimension.selected line{stroke:var(--accent)}.plan .dimension.selected text{fill:var(--accent);font-weight:700}.plan .dimension .bg{fill:var(--canvas)}.plan .dimension.inside .bg{fill:var(--paper)}.plan .draft{fill:var(--accent-soft);fill-opacity:.6;stroke:var(--accent);stroke-width:1.5;stroke-dasharray:5 3}.plan .draft.invalid,.plan .ghost{fill:var(--danger-soft);fill-opacity:.55;stroke:var(--danger);stroke-width:1.5;stroke-dasharray:5 3}.plan .draft-label{fill:var(--accent);font:700 11px var(--mono)}.plan .draft-label.invalid{fill:var(--danger)}.plan .wall-hover{stroke:var(--accent);stroke-width:6;stroke-opacity:.35;stroke-linecap:round}.plan .wall-invalid{stroke:var(--danger);stroke-width:6;stroke-opacity:.45;stroke-linecap:round}.plan .door-preview{stroke:var(--accent);stroke-width:4}.plan .footprint{fill:none;stroke:var(--outline)}.plan .footprint.selected{stroke:var(--accent)}.plan .wall rect{fill:var(--wall)}.plan .wall.selected rect{fill:var(--accent)}.plan .footprint-draft{fill:none;stroke:var(--accent);stroke-width:2;stroke-dasharray:5 3}.plan .footprint-corner{fill:var(--accent)}.plan .inferred-footprint{fill:var(--accent-soft);fill-opacity:.3;stroke:var(--accent);stroke-width:2;stroke-dasharray:6 4}.plan .inferred-wall{fill:var(--accent);fill-opacity:.4;stroke:var(--accent);stroke-width:1;stroke-dasharray:3 2}.menus{display:flex;align-items:center;height:100%}.menu{position:relative}.menu-title{height:26px;padding:0 9px;border:0;border-radius:3px;background:#0000;cursor:default}.menu-title u{text-underline-offset:2px}.menu-title:hover{background:var(--hover)}.menu-title[aria-expanded=true]{background:var(--accent-soft)}.menu-item:focus-visible,.menu-title:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.menu-popup{position:absolute;top:calc(100% + 5px);left:0;z-index:50;min-width:230px;padding:4px;display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--line);border-radius:4px;box-shadow:0 8px 24px#00000038}.menu-item{height:26px;display:grid;grid-template-columns:14px minmax(0,1fr)auto;align-items:center;gap:6px;padding:0 8px;border:0;border-radius:3px;background:#0000;text-align:left;cursor:default}.menu-item:focus:not([aria-disabled=true]),.menu-item:hover:not([aria-disabled=true]){background:var(--accent);color:var(--accent-text);outline:none}.menu-item:focus:not([aria-disabled=true]) kbd,.menu-item:hover:not([aria-disabled=true]) kbd{color:inherit;border-color:currentcolor;background:#0000}.menu-item[aria-disabled=true]{color:var(--text-3)}.menu-item[aria-disabled=true] kbd{opacity:.6}.menu-item kbd{margin-left:18px}.menu-item[aria-checked=true] .menu-check:before{content:"";display:block;width:4px;height:8px;margin:-3px 0 0 4px;border:solid;border-width:0 2px 2px 0;transform:rotate(45deg)}.menu-sep{height:1px;margin:4px 2px;background:var(--line-soft)}.menu-popup.submenu{top:0;left:100%;min-width:160px}.menu-item[aria-expanded=true]:not(:hover):not(:focus){background:var(--accent-soft)}.menu-arrow:before{content:"";display:block;width:5px;height:5px;margin-right:2px;border:solid;border-width:1.5px 1.5px 0 0;transform:rotate(45deg)}.dialog{width:460px;max-height:calc(100vh - 48px);padding:16px 18px 14px;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--text);box-shadow:0 16px 40px#0000004d}.dialog::backdrop{background:#00000059}.dialog h2{display:flex;align-items:center;gap:8px;margin:0 0 10px;font-size:14px}.dialog p{margin:0 0 10px;line-height:1.5;color:var(--text-2)}.dialog strong{color:var(--text)}.dialog-actions{display:flex;justify-content:flex-end}.shortcuts[open]{display:flex;flex-direction:column}.shortcuts form{min-height:0;display:flex;flex-direction:column}.dialog-scroll{min-height:0;overflow:auto;margin-bottom:12px;padding-right:4px}.dialog-scroll .fine{margin:12px 0 0;font-size:11px}.cmd.primary{background:var(--accent);color:var(--accent-text);border-color:var(--accent);padding:0 14px}.cmd.primary:hover:not(:disabled){background:var(--accent);filter:brightness(1.08)}