@font-face{font-family:DM Sans;font-style:normal;font-weight:100 1000;font-display:swap;src:url(/fonts/dm-sans.ttf) format("truetype")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400 500;font-display:swap;src:url(/fonts/ibm-plex-mono.ttf) format("truetype")}:root{font-family:DM Sans,system-ui,sans-serif;color:#253239;background:#eef0eb;font-synthesis:none;--sidebar-width: 310px;--accent: #c96237;--line: #dfe3df;--mono: "IBM Plex Mono", monospace}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,select{cursor:pointer}button{color:inherit;border:0;background:none;display:inline-flex;align-items:center;justify-content:center;gap:7px}button:disabled{opacity:.28;cursor:default}button:focus-visible,select:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid #cc714c;outline-offset:2px}svg{width:19px;height:19px;flex-shrink:0}button:hover:not(:disabled){background:#e8ebe6}select{border:0;background:transparent;color:inherit;font-size:12px;padding:7px 22px 7px 5px;max-width:220px}input,textarea{min-width:0}#app{height:100dvh;min-height:500px;display:flex;flex-direction:column;overflow:hidden}.app-header{height:66px;flex:0 0 66px;background:#18232b;color:#edf1eb;display:flex;align-items:center;padding:0 25px;gap:21px}.brand{display:flex;align-items:center;gap:10px;font-size:24px;font-weight:700;letter-spacing:-1px}.brand-mark{display:flex;align-items:center;justify-content:center;width:31px;height:34px;color:#edb08b}.brand-mark svg{width:29px;height:29px}.brand-light{font-weight:400;color:#c0cbc9}.beta{font-family:var(--mono);font-size:8px;letter-spacing:1.5px;border:1px solid #4c5b60;border-radius:3px;padding:4px 5px;margin-left:3px;color:#a8bab9}.header-divider{height:22px;width:1px;background:#3e4b50}.project-title{font-size:13px;color:#e0e7e1;gap:13px;max-width:280px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.project-title svg{width:13px}.app-header button:hover:not(:disabled){background:#2e3b40}.local-badge{font-family:var(--mono);font-size:8px;color:#a0b4ae;letter-spacing:.7px;display:flex;align-items:center;gap:7px;white-space:nowrap}.local-badge span{width:5px;height:5px;border-radius:100%;background:#91b397}.header-actions{display:flex;gap:8px;margin-left:auto;align-items:center}.text-button{font-size:12px;padding:8px 10px;border-radius:4px;white-space:nowrap}.text-button svg{width:15px;height:15px}.primary{background:#bd603d;color:#fff7ef;border:1px solid #b85834;border-radius:5px;padding:11px 15px;font-size:12px;font-weight:550;box-shadow:0 2px 4px #0000000b}.primary:hover:not(:disabled){background:#a94f2d!important}.primary.small{font-size:11px;padding:8px 12px}.primary svg{width:16px}.toolbar{min-height:66px;background:#fafbf7;display:flex;align-items:center;gap:8px;padding:9px 18px;border-bottom:1px solid #d7ddd5;z-index:5}.mode-control{display:flex;align-items:center;border:1px solid #d9dfd7;border-radius:5px;background:#f0f3ed;padding:3px 8px;flex-shrink:0;gap:3px}.mode-control>span{display:flex;color:#47564c}.mode-control select{font-weight:650;font-size:12px;max-width:135px}.tool-divider{width:1px;background:#dde2da;align-self:stretch;margin:9px 7px;flex-shrink:0}.mode-tools{display:flex;align-items:center;gap:3px;min-width:0;overflow-x:auto;scrollbar-width:thin}.tool-button{height:44px;padding:5px 9px;flex-direction:column;gap:3px;border-radius:4px;color:#66746d;flex-shrink:0;white-space:nowrap}.tool-button span{font-size:9px}.tool-button svg{width:18px;height:18px}.tool-button.active{background:#f1e5da;color:#a34e2d}.tool-button.active:hover{background:#ead6c5}.compact-control{display:flex;align-items:center;gap:5px;padding:0 6px;color:#758077;font-size:10px;white-space:nowrap}.compact-control select{font-family:var(--mono);font-size:11px;color:#3e5146;background:#f1f3ed;border:1px solid #dce1d7;border-radius:3px;min-width:55px}.toolbar-spacer{flex:1}.icon-button{width:31px;height:32px;border-radius:4px;flex-shrink:0}.icon-button svg{width:17px;height:17px}.fit-button{font-size:11px;white-space:nowrap;gap:6px;padding:7px 8px}.fit-button svg{width:16px}.toolbar-label{font-family:var(--mono);font-size:9px;color:#758077;padding:0 10px}.toolbar-hint{color:#89938a;font-size:11px;padding:0 15px;white-space:nowrap}.workspace{flex:1;display:flex;overflow:hidden;min-height:0}.viewport{position:relative;flex:1;min-width:0;overflow:hidden;background:#f1f3ee;touch-action:none}#canvas{display:block;width:100%;height:100%;outline:none}.annotations{position:absolute;inset:0;pointer-events:none;overflow:hidden}.annotations button{pointer-events:auto}.dimension-label{position:absolute;transform:translate(-50%,-50%);font:10px var(--mono);background:#f1f3ee;padding:3px 6px;border-radius:3px;color:#5b6a6e;white-space:nowrap}.dimension-label:hover{color:#ac4f2c}.dimension-label.selected{background:#f4e1d2;color:#b75025;box-shadow:0 0 0 1px #d99876}.red,.dimension-label.red{background:#ffe3dc;color:#bc2832!important}.vertex-dot{position:absolute;width:5px;height:5px;margin:-2.5px 0 0 -2.5px;border:1px solid #637b7d;background:#edf1ed;border-radius:50%}.vertex-dot.selected{width:10px;height:10px;margin:-5px 0 0 -5px;background:#c96237;border-color:#fff;box-shadow:0 0 0 2px #c9623755}.vertex-caption{position:absolute;font:9px var(--mono);background:#fafbf5e6;border-radius:3px;padding:3px 5px;color:#9f502d;white-space:nowrap}.snap-dot{position:absolute;width:10px;height:10px;margin:-5px 0 0 -5px;border:1px solid #cf6c3d;background:#f1b98c33}.preview-measure{position:absolute;transform:translate(-50%,-50%);background:#26373b;color:#fff;font:11px var(--mono);padding:5px 7px;border-radius:3px;white-space:nowrap}.floor-control{position:absolute;top:20px;left:22px;display:flex;align-items:center;gap:6px;padding:4px 7px 4px 11px;background:#fafbf6ef;border:1px solid #d9dfd5;border-radius:5px;box-shadow:0 2px 6px #29392b05}.floor-control select{font-size:11px;max-width:230px}.floor-control button{padding:4px;border-left:1px solid #dde2d7}.floor-control button svg{width:14px;height:14px}.floor-dot{background:#7f9c89;width:6px;height:6px;border-radius:50%}.view-tag{position:absolute;left:23px;top:77px;color:#9aa69a;letter-spacing:1.1px;font:8px var(--mono)}.compass{position:absolute;right:24px;top:24px;color:#849184;display:flex;align-items:center;flex-direction:column;gap:3px;font:9px var(--mono)}.compass svg{width:38px;height:38px;color:#738775}.empty-state{position:absolute;top:46%;left:50%;transform:translate(-50%,-50%);text-align:center;width:min(480px,80%);pointer-events:none}.empty-state>*{pointer-events:auto}.empty-state[hidden]{display:none}.empty-drawing{margin:0 auto 25px;width:67px;height:67px;display:grid;place-items:center;background:#e8ede4;border:1px solid #dce4d6;border-radius:16px;transform:rotate(-7deg)}.empty-drawing svg{width:32px;height:32px;color:#7d927b;transform:rotate(7deg)}.eyebrow{font:8px var(--mono);letter-spacing:2px;color:#8a9b84}.empty-state h1{font-size:29px;font-weight:450;letter-spacing:-1px;margin:15px 0;color:#34473d}.empty-state p{font-size:12px;line-height:1.9;color:#7f8d7e;margin:0 0 27px}.empty-state>div:not(.empty-drawing):not(.eyebrow){display:flex;justify-content:center;gap:9px}.empty-state>span{display:block;margin-top:19px;font:8px var(--mono);color:#99a692}.quiet-button{font-size:11px;color:#68796d;border:1px solid #dce1d7;border-radius:4px;padding:8px 10px}.sidebar-handle{flex:0 0 4px;cursor:col-resize;background:#e0e5dc;position:relative;z-index:6}.sidebar{flex:0 0 var(--sidebar-width);width:var(--sidebar-width);min-height:0;background:#fafbf7;display:flex;flex-direction:column;overflow:hidden}.properties-section{flex:0 0 53%;min-height:110px;overflow:hidden;display:flex;flex-direction:column}.panel-heading{padding:18px 19px 14px;display:flex;align-items:center;justify-content:space-between;flex:0 0 auto}.panel-heading>span:first-child{font:9px var(--mono);font-weight:500;letter-spacing:1.4px;color:#68766b}.panel-heading>span:last-child{font-size:9px;color:#a0aa9b}.properties{overflow-y:auto;flex:1;padding:0 19px 20px;scrollbar-width:thin;scrollbar-color:#d5dbcf transparent}.selection-empty{text-align:center;margin:27px 0 35px}.selection-empty>span{display:grid;place-items:center;color:#9ba998;margin-bottom:12px}.selection-empty>span svg{width:25px;height:25px}.selection-empty h2{font-size:13px;font-weight:500;color:#5f725f;margin:0 0 7px}.selection-empty p{font-size:10px;color:#95a18e;line-height:1.8;margin:0}.property-section{border-top:1px solid #e5e8df;padding:15px 0 8px}.property-section h3{font:8px var(--mono);letter-spacing:1.3px;color:#8a9781;font-weight:400;margin:0 0 14px}.project-stats{display:flex;justify-content:space-around;text-align:center;padding:0 0 8px}.project-stats strong{display:block;font:21px var(--mono);font-weight:400;color:#6c8069}.project-stats span{display:block;font-size:9px;color:#a0ad95;margin-top:6px}.check-field{font-size:10px;color:#819078;display:flex;align-items:center;gap:7px;margin:10px 0}.check-field input{accent-color:#b96540}.panel-splitter{flex:0 0 6px;background:#f0f2eb;border-top:1px solid #dce1d6;border-bottom:1px solid #e4e8dd;cursor:row-resize;position:relative}.panel-splitter:after{content:"";position:absolute;width:25px;height:1px;background:#c4cdbb;left:calc(50% - 12px);top:2px}.objects-section{flex:1;display:flex;flex-direction:column;min-height:140px}.objects-section .panel-heading{padding-bottom:10px}.filters{display:flex;gap:5px;padding:0 17px 12px;border-bottom:1px solid #e5e9df}.filter-button{width:29px;height:28px;color:#adb7a7;border:1px solid transparent;border-radius:4px}.filter-button svg{width:15px;height:15px}.filter-button.on{background:#eaf0e4;border-color:#dce5d3;color:#72856b}.objects{overflow:auto;flex:1;scrollbar-width:thin}.document-objects{border-bottom:1px solid #e6eade;padding:7px 0}.object-row{width:100%;padding:9px 18px;justify-content:flex-start;gap:10px;text-align:left;border-left:2px solid transparent;min-height:47px}.object-row:hover{background:#edf1e6!important}.object-row.selected{background:#f1e6db;border-left-color:#c46740}.object-row.selected:hover{background:#ebddcd!important}.object-icon{width:28px;height:28px;background:#edf1e8;border:1px solid #e2e8d9;border-radius:5px;color:#849578;display:grid;place-items:center}.object-icon svg{width:15px;height:15px}.object-row.selected .object-icon{color:#bd683e;background:#f3e3d4;border-color:#e5c9ae}.object-info{display:flex;flex-direction:column;gap:4px;flex:1}.object-info strong{font-size:10px;font-weight:500;color:#5a6b55}.object-info small{font:8px var(--mono);color:#9aa78e}.object-row>svg{width:13px;height:13px;color:#b7724b}.active-level{font:6px var(--mono);letter-spacing:.7px;color:#9ba98c}.object-group-title{font:8px var(--mono);letter-spacing:1px;color:#95a187;text-transform:uppercase;padding:14px 20px 6px;display:flex;justify-content:space-between}.list-empty{padding:20px;font-size:11px;color:#97a28b}.selected-title{display:flex;align-items:center;gap:10px;margin:8px 0 18px}.selected-symbol{display:grid;place-items:center;width:35px;height:35px;background:#f0e2d3;color:#b1693b;border:1px solid #e4d0b9;border-radius:6px}.selected-title>div{flex:1}.selected-title h2{font-size:14px;font-weight:500;margin:0 0 5px}.selected-title small{font:8px var(--mono);color:#9eaa91;letter-spacing:1px}.selected-title .icon-button{color:#9da891}.field{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:9px;font-size:10px;color:#7a8970}.field>span{flex:1;line-height:1.5}.field input,.field select{font:10px var(--mono);border:1px solid #dde3d3;border-radius:4px;background:#fffef8;color:#4a5d42;padding:7px 8px;width:115px;max-width:160px;min-height:29px}.field select{font-family:inherit;font-size:10px;width:140px}.field textarea{width:100%;font:11px var(--mono);padding:10px;background:#fffef8;border:1px solid #dce3d2;border-radius:4px;color:#4a5d42}.field:has(textarea){flex-direction:column;align-items:stretch}.apply-button{width:100%;padding:9px;border:1px solid #d8c2a8;border-radius:4px;font-size:10px;background:#f0e5d7;color:#9f602d;margin:9px 0 15px}.apply-button:hover{background:#e8d8c3!important}.dimension-reference{padding:9px 10px;border:1px solid #d9e1d0;border-radius:4px;width:100%;background:#f1f5eb;color:#6b815e;font:12px var(--mono);justify-content:space-between;margin-bottom:7px}.dimension-reference svg{width:15px;height:15px}.property-section .quiet-button{width:100%;font-size:9px;margin-bottom:7px}.endpoint-link{width:100%;justify-content:flex-start;padding:7px 0;font-size:10px;color:#7b8e6d}.endpoint-link svg{width:13px;height:13px}.constraint-row{display:flex;align-items:center;justify-content:space-between;border:1px solid #e1e6d7;border-radius:4px;margin-bottom:5px;background:#f3f6ee}.constraint-row button{padding:6px;font-size:9px;color:#819174}.constraint-row .constraint-name{flex:1;justify-content:flex-start}.constraint-row svg{width:12px;height:12px}.conflicted{background:#fce5df!important;color:#b43838!important;border-color:#ed9a90!important}.constraint-row.conflicted button{color:#b43838}.delete-button{width:100%;margin-top:15px;padding:9px;font-size:10px;color:#af7f65;border:1px solid #eaded0;border-radius:4px}.delete-button svg{width:13px;height:13px}.calculated,.property-note{font-size:10px;color:#93a081;line-height:2;padding:8px 0}.calculated strong{float:right;color:#6e805e;font-family:var(--mono);font-weight:400}.muted{font-size:11px;color:#8c9a7c;line-height:1.7}.viewport-bottom{position:absolute;bottom:19px;left:23px;right:22px;display:flex;justify-content:space-between;align-items:center;pointer-events:none}.coordinate-readout{font:9px var(--mono);color:#8b9c81;letter-spacing:.3px;background:#f1f3eecc;padding:5px}.coordinate-readout span{margin-left:15px}.zoom-controls{display:flex;align-items:center;background:#fafbf6;border:1px solid #dae1d3;border-radius:5px;box-shadow:0 2px 6px #23331805;pointer-events:auto}.zoom-controls button{width:30px;height:29px;color:#7c8f72}.zoom-controls svg{width:13px;height:13px}.zoom-controls span{font:9px var(--mono);min-width:45px;text-align:center;color:#7e9073}.statusbar{height:29px;flex:0 0 29px;background:#fafbf6;border-top:1px solid #dce3d5;display:flex;align-items:center;padding:0 21px;gap:20px;font-size:9px;color:#97a58b}.status-instruction{display:flex;align-items:center;gap:7px;white-space:nowrap}.status-instruction svg{width:12px;height:12px;color:#899d7b}#diagnostic{font-size:8px;color:#b2966b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#save-status{margin-left:auto;white-space:nowrap;display:flex;align-items:center;gap:7px;font-size:8px}.status-dot{width:5px;height:5px;background:#8ea87b;border-radius:50%}.status-dot.warning{background:#c9904c}.units{font:8px var(--mono);border-left:1px solid #e1e8d8;padding-left:17px;white-space:nowrap}.gpu-notice{position:absolute;bottom:65px;left:20px;right:20px;background:#fff6e7ef;border:1px solid #e8d6b6;padding:13px 16px;border-radius:5px;font-size:11px;color:#927a50;z-index:10}.gpu-notice button{font-size:10px;text-decoration:underline;padding:0 5px}.gpu-notice[hidden]{display:none}.conflict-banner{position:absolute;top:105px;left:20px;right:20px;display:flex;align-items:flex-start;gap:10px;background:#fff1e9f5;border:1px solid #e2a595;border-radius:5px;padding:13px;color:#a44834;z-index:12;box-shadow:0 3px 10px #6129090b}.conflict-banner[hidden]{display:none}.conflict-banner strong{font-size:11px;font-weight:600}.conflict-banner p{font-size:10px;line-height:1.7;margin:5px 0 0}.conflict-banner>button{margin-left:auto}.conflict-banner svg{width:15px;height:15px}.level-marker{position:absolute;transform:translateY(-50%);background:#f4f6eedf;border:1px solid #becdb3;border-radius:3px;padding:5px 7px;color:#738f62;font-size:9px}.level-marker strong{font:9px var(--mono);margin-left:8px}.level-marker svg{width:13px;height:13px}.height-handle{position:absolute;transform:translate(-50%,-50%);background:#fff2df;border:1px solid #cc9a64;border-radius:3px;padding:4px 6px;color:#a3743c;font:9px var(--mono);white-space:nowrap;cursor:ns-resize}.height-handle svg{width:12px;height:12px}.grade-handle{background:#edf2dd;border-color:#9bb178;color:#79934c}.toast{position:fixed;bottom:47px;left:50%;transform:translate(-50%);background:#27372c;color:#ecf1e5;font-size:11px;padding:12px 20px;border-radius:5px;box-shadow:0 4px 20px #17271522;z-index:99;max-width:80%}.toast[hidden]{display:none}dialog{border:1px solid #d8dfcc;border-radius:8px;padding:24px;width:min(480px,90vw);background:#fafbf5;box-shadow:0 20px 70px #14200e33;color:#546b48}dialog::backdrop{background:#1d2a235e;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.dialog-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.dialog-heading h2{font-size:20px;font-weight:500;margin:0}.dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:22px}dialog .field{font-size:12px;margin-bottom:13px}dialog .field input{font-size:12px;width:190px;max-width:250px}dialog p{font-size:12px;line-height:1.7}#dialog-error{color:#b74f34;font-size:11px}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(max-width:1100px){:root{--sidebar-width: 275px}.app-header{padding:0 15px;gap:13px}.local-badge,.beta{display:none}.tool-button{padding:5px 7px}.toolbar{padding:9px 10px;gap:3px}.toolbar-hint{display:none}.tool-divider{margin-left:3px;margin-right:3px}.fit-button span{display:none}.properties{padding-left:14px;padding-right:14px}.header-actions{gap:0}.field input{width:105px}.statusbar{padding:0 12px;gap:10px}#diagnostic{display:none}}@media(max-width:760px){.app-header{height:54px;flex-basis:54px}.brand{font-size:20px}.brand-mark{width:22px}.project-title{max-width:140px;font-size:11px}.header-actions #example,.header-actions #new{display:none}.header-actions .text-button{font-size:0;padding:8px}.primary.small{font-size:10px;padding:7px}.toolbar{min-height:60px}.mode-control{padding:2px}.mode-control select{width:105px;font-size:11px}.tool-button span{display:none}.tool-button{height:34px;padding:6px}.sidebar{flex-basis:245px;width:245px}.empty-state h1{font-size:23px}.empty-state>div:not(.empty-drawing):not(.eyebrow){flex-direction:column;align-items:center}.floor-control{left:10px;top:12px}.view-tag{left:12px;top:65px}.compass{right:10px}.status-instruction{max-width:50vw;overflow:hidden}.empty-state{width:90%}.coordinate-readout{font-size:8px}.coordinate-readout span{margin-left:5px}.viewport-bottom{left:8px;right:8px}.panel-heading{padding:15px 13px 10px}.filters{gap:2px;padding-left:10px;padding-right:10px}}
