:root{--color-bg:#e8e9e7;--color-canvas:#fbfbfa;--color-canvas-edge:#d7d9d6;--color-grid:#e4e6e3;--color-grid-major:#cbd0cb;--color-wall:#2c302f;--color-room-fill:#f7f8f6;--color-room-stroke:#9aa09a;--color-text:#202624;--color-text-muted:#66706b;--color-point:#256e91;--color-pending:#b56a18;--color-unconstrained:#aa4b2c;--color-selected:#1d607d;--color-flagged:#8d341e;--color-flagged-bg:#f8ede7;--color-panel-bg:#f5f6f4;--color-panel-raised:#fff;--color-border:#cfd3cf;--color-border-strong:#aeb6af;--color-focus:#0d6d98;--color-dimension:#386a82;--color-opening:#39735b;--color-fixture:#8a5f2a;--color-on-accent:#fff;--shadow-overlay:0 12px 28px #1d262229;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--font-ui:ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--font-numeric:"SFMono-Regular", Consolas, "Liberation Mono", monospace}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--color-bg:#202322;--color-canvas:#16181a;--color-canvas-edge:#2c302f;--color-grid:#242726;--color-grid-major:#363b39;--color-wall:#f2f3f0;--color-room-fill:#1c1f1e;--color-room-stroke:#6b716c;--color-text:#eceeec;--color-text-muted:#9aa29c;--color-point:#5cb0da;--color-pending:#e2963f;--color-unconstrained:#e2734a;--color-selected:#3fa0c7;--color-flagged:#ef7861;--color-flagged-bg:#3a2420;--color-panel-bg:#1d2020;--color-panel-raised:#262a29;--color-border:#343836;--color-border-strong:#565c58;--color-focus:#5cc2ea;--color-dimension:#8aa8b8;--color-opening:#55b98c;--color-fixture:#c69a6b;--color-on-accent:#0d1210;--shadow-overlay:0 12px 28px #00000073}}:root[data-theme=dark]{--color-bg:#202322;--color-canvas:#16181a;--color-canvas-edge:#2c302f;--color-grid:#242726;--color-grid-major:#363b39;--color-wall:#f2f3f0;--color-room-fill:#1c1f1e;--color-room-stroke:#6b716c;--color-text:#eceeec;--color-text-muted:#9aa29c;--color-point:#5cb0da;--color-pending:#e2963f;--color-unconstrained:#e2734a;--color-selected:#3fa0c7;--color-flagged:#ef7861;--color-flagged-bg:#3a2420;--color-panel-bg:#1d2020;--color-panel-raised:#262a29;--color-border:#343836;--color-border-strong:#565c58;--color-focus:#5cc2ea;--color-dimension:#8aa8b8;--color-opening:#55b98c;--color-fixture:#c69a6b;--color-on-accent:#0d1210;--shadow-overlay:0 12px 28px #00000073}*{box-sizing:border-box}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-ui);margin:0;font-size:14px;line-height:1.4}button,input,select{outline:none}button:focus-visible,input:focus-visible,select:focus-visible{border-color:var(--color-focus);box-shadow:0 0 0 2px color-mix(in srgb, var(--color-focus) 25%, transparent)}.app{grid-template-rows:auto minmax(0,1fr);grid-template-columns:auto minmax(0,1fr) auto;width:100vw;height:100vh;display:grid;position:relative;overflow:hidden}.topbar{background:var(--color-panel-bg);border-bottom:1px solid var(--color-border);grid-column:1/-1;justify-content:space-between;align-items:center;min-height:46px;display:flex}.filemenu,.exportmenu,.topbar-right{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);display:flex}.exportmenu select,.filemenu input,.properties input,.properties select,.prompt input,.prompt select{border:1px solid var(--color-border-strong);background:var(--color-panel-raised);min-height:30px;color:var(--color-text);font:inherit;border-radius:3px}.exportmenu select,.filemenu input{padding:4px 8px;font-size:12px}.filemenu input{width:200px;font-weight:600}.exportmenu button,.filemenu button{width:32px;height:32px;color:var(--color-text);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:4px;justify-content:center;align-items:center;display:flex}.exportmenu button:hover,.filemenu button:hover,.help-button:hover,.coach-actions button:hover{background:var(--color-canvas-edge)}.toolrail{gap:var(--space-1);padding:var(--space-2);background:var(--color-panel-bg);border-right:1px solid var(--color-border);flex-direction:column;display:flex}.toolrail button{align-items:center;gap:var(--space-2);min-height:34px;color:var(--color-text);white-space:nowrap;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:4px;padding:6px 9px;font-size:12px;font-weight:600;display:flex}.toolrail button:hover{background:var(--color-canvas-edge)}.toolrail button.active{background:var(--color-selected);color:var(--color-on-accent)}@media (width<=900px){.toolrail-label{display:none}.toolrail button{justify-content:center;width:36px;height:36px;padding:0}.sidebar,.measurements{width:292px}.filemenu input{width:148px}}@media (width<=680px){.filemenu,.exportmenu,.topbar-right{gap:var(--space-1);padding-inline:var(--space-2)}.filemenu input{width:112px}.exportmenu select{max-width:94px}.sidebar{width:254px}.coach{right:var(--space-2);width:min(280px, calc(100% - var(--space-4)))}}.center{flex-direction:column;min-width:0;display:flex;position:relative;overflow:hidden}.floortabs{align-items:center;gap:var(--space-2);min-height:38px;padding:5px var(--space-3);background:var(--color-panel-bg);border-bottom:1px solid var(--color-border);flex:none;display:flex}.floortabs button{align-items:center;gap:var(--space-1);border:1px solid var(--color-border);min-height:28px;color:var(--color-text);cursor:pointer;background:0 0;border-radius:3px;padding:3px 9px;font-size:12px;display:flex}.floortabs button.active{background:var(--color-selected);border-color:var(--color-selected);color:var(--color-on-accent)}.floortabs button:disabled{opacity:.4;cursor:default}.canvas{background:var(--color-canvas);width:100%;box-shadow:inset 0 0 0 1px var(--color-canvas-edge);touch-action:none;flex:auto;display:block}.grid line{stroke:var(--color-grid);stroke-width:var(--stroke-grid);vector-effect:non-scaling-stroke}.grid line.major{stroke:var(--color-grid-major);stroke-width:var(--stroke-grid-major)}.walls polygon{fill:var(--color-wall);stroke:var(--color-wall);vector-effect:non-scaling-stroke}.walls polygon.selected{stroke:var(--color-selected);stroke-width:var(--stroke-selected)}.rooms polygon{fill:var(--color-room-fill);stroke:var(--color-room-stroke);vector-effect:non-scaling-stroke}.rooms g.selected polygon{stroke:var(--color-selected);stroke-width:var(--stroke-selected)}.openings polygon.gap{fill:var(--color-room-fill);stroke:none}.openings line,.openings path{stroke:var(--color-opening);fill:none;vector-effect:non-scaling-stroke}.openings g.selected line,.openings g.selected path{stroke:var(--color-selected);stroke-width:var(--stroke-selected)}.fixtures polygon{fill:none;stroke:var(--color-fixture);vector-effect:non-scaling-stroke}.fixtures text{text-anchor:middle;fill:var(--color-fixture);-webkit-user-select:none;user-select:none;font-size:150px}.fixtures g.selected polygon{stroke:var(--color-selected);stroke-width:var(--stroke-selected)}.draft polyline{fill:none;stroke:var(--color-pending);stroke-dasharray:6 4;vector-effect:non-scaling-stroke}.draft circle{fill:var(--color-pending)}.points circle{fill:var(--color-point)}.points circle.pending{fill:var(--color-pending)}.points circle.unconstrained{fill:var(--color-unconstrained);stroke:var(--color-panel-raised);stroke-width:1px;stroke-dasharray:2 1}.points circle.selected{stroke:var(--color-selected);stroke-width:var(--stroke-selected);vector-effect:non-scaling-stroke}.label{text-anchor:middle;fill:var(--color-text);-webkit-user-select:none;user-select:none;font-size:200px}.dimensions line{stroke:var(--color-dimension);vector-effect:non-scaling-stroke}.dimensions text{text-anchor:middle;fill:var(--color-dimension);-webkit-user-select:none;user-select:none}.sidebar{background:var(--color-panel-bg);border-left:1px solid var(--color-border);flex-direction:column;width:336px;display:flex;overflow-y:auto}.measurements{width:336px;padding:var(--space-4) var(--space-4) var(--space-5);background:var(--color-panel-bg);border-left:1px solid var(--color-border);overflow-y:auto}.sidebar .measurements{border-left:none;width:auto;overflow-y:visible}.properties{width:auto;padding:var(--space-4);border-top:1px solid var(--color-border);font-size:12px}.properties h2,.measurements h2{margin:0 0 var(--space-3);letter-spacing:.04em;text-transform:uppercase;font-size:12px;font-weight:700}.properties .row{justify-content:space-between;align-items:center;gap:var(--space-2);padding:5px 0;display:flex}.properties .row>span:first-child{color:var(--color-text-muted)}.properties input,.properties select{width:140px;padding:4px 8px}.measurements .rms{color:var(--color-text-muted);font-family:var(--font-numeric);margin-bottom:var(--space-3);font-size:12px}.measurements .warn,.measurements .error{margin-bottom:var(--space-2);align-items:center;gap:6px;font-size:12px;line-height:1.35;display:flex}.measurements .warn{color:var(--color-unconstrained)}.measurements .error{color:var(--color-flagged)}.measurements table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:12px}.measurements th{text-align:left;letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-muted);border-bottom:1px solid var(--color-border-strong);padding:7px 5px;font-size:10px;font-weight:700}.measurements td{border-bottom:1px solid var(--color-border);cursor:pointer;padding:8px 5px}.measurements tr:hover td{background:color-mix(in srgb, var(--color-selected) 7%, transparent)}.measurements tr.selected td{background:color-mix(in srgb, var(--color-selected) 15%, transparent)}.measurements tr.flagged td{background:var(--color-flagged-bg)}.measurements tr.flagged td:first-child{box-shadow:inset 3px 0 0 var(--color-flagged);font-weight:700}.measurements td:nth-child(3),.measurements td:nth-child(4),.measurements th:nth-child(3),.measurements th:nth-child(4){text-align:right;font-family:var(--font-numeric);font-variant-numeric:tabular-nums;white-space:nowrap}.measurements tr.flagged td:nth-child(4):before{content:"! ";font-family:var(--font-ui);color:var(--color-flagged);font-weight:800}.measurements td svg{vertical-align:-2px;margin-right:4px}.prompt{top:var(--space-4);align-items:center;gap:var(--space-2);padding:var(--space-3);background:var(--color-panel-raised);border:1px solid var(--color-border-strong);box-shadow:var(--shadow-overlay);z-index:10;border-radius:4px;display:flex;position:absolute;left:50%;transform:translate(-50%)}.prompt label{color:var(--color-text-muted);white-space:nowrap;font-size:12px}.prompt input,.prompt select{padding:4px 8px;font-size:14px}.help-button{border:1px solid var(--color-border);min-height:32px;color:var(--color-text);cursor:pointer;background:0 0;border-radius:4px;align-items:center;gap:6px;padding:4px 9px;font-size:12px;display:flex}.theme-toggle{width:32px;height:32px;color:var(--color-text);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:4px;justify-content:center;align-items:center;display:flex}.theme-toggle:hover{background:var(--color-canvas-edge)}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.measurements-empty{color:var(--color-text-muted);font-size:12px}.empty-hint{pointer-events:none;text-anchor:middle;-webkit-user-select:none;user-select:none}.empty-hint text{fill:var(--color-text-muted);letter-spacing:.01em;font-size:14px}.empty-hint .empty-hint-sub{font-size:12px}.coach{top:var(--space-4);right:var(--space-4);width:280px;padding:var(--space-4);background:var(--color-panel-raised);border:1px solid var(--color-border);box-shadow:var(--shadow-overlay);z-index:5;border-radius:4px;font-size:12px;position:absolute}.coach-header{align-items:center;gap:var(--space-2);color:var(--color-text-muted);margin-bottom:var(--space-2);display:flex}.coach-dot{background:var(--color-selected);border-radius:50%;width:8px;height:8px}.coach h2{margin:0 0 6px;font-size:14px;font-weight:650}.coach p{margin:0 0 var(--space-3);color:var(--color-text)}.coach-checks{margin:0 0 var(--space-3);color:var(--color-text-muted);flex-direction:column;gap:4px;padding:0;list-style:none;display:flex}.coach-checks li.done{color:var(--color-text)}.coach-actions{justify-content:space-between;gap:var(--space-2);display:flex}.coach-actions button{border:1px solid var(--color-border);min-height:30px;color:var(--color-text);cursor:pointer;background:0 0;border-radius:4px;padding:5px 9px;font-size:12px}
