@import"https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap";*{box-sizing:border-box}:root{font-size:clamp(13px,8px + .42vw,26px);--paper: #f1eee8;--panel: #fbfaf7;--panel-raised: #ffffff;--ink: #232a32;--ink-soft: #5a626e;--ink-faint: #979daa;--line: #e0dbd0;--line-strong: #c9c2b4;--accent: #2e5a7d;--accent-strong: #244a68;--accent-soft: #e5edf3;--danger: #a63d2f;--danger-soft: #f6e6e2;--warn: #b45309;--ok: #3e7d55;--shadow-soft: 0 1px 2px rgba(35, 42, 50, .06), 0 4px 16px rgba(35, 42, 50, .07);--shadow-pop: 0 2px 6px rgba(35, 42, 50, .12), 0 10px 28px rgba(35, 42, 50, .14);--radius: 8px;--radius-sm: 6px;--font-ui: "IBM Plex Sans", "Segoe UI", system-ui, sans-serif;--font-mono: "IBM Plex Mono", "Cascadia Mono", Consolas, monospace}html,body,#root{margin:0;padding:0;height:100%;font-family:var(--font-ui);color:var(--ink)}*{scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent}*::-webkit-scrollbar{width:8px;height:8px}*::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:4px}*::-webkit-scrollbar-track{background:transparent}::selection{background:var(--accent-soft)}.app{display:flex;height:100vh;width:100vw;overflow:hidden;background:var(--paper);color:var(--ink)}.panel{position:relative;flex:0 0 auto;height:100%;overflow:hidden;display:flex;flex-direction:column;background:var(--panel);border-right:1px solid var(--line)}.panel-right{border-right:none;border-left:1px solid var(--line)}.panel-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.625rem .75rem;border-bottom:1px solid var(--line);background:var(--panel-raised);min-height:2.75rem}.panel-title{font-size:.9375rem;font-weight:600;letter-spacing:.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.icon-btn{display:inline-flex;align-items:center;justify-content:center;background:transparent;border:1px solid transparent;border-radius:var(--radius-sm);color:var(--ink-faint);width:1.75rem;height:1.75rem;cursor:pointer;font-size:.9rem;padding:0;flex:0 0 auto;transition:background .15s,color .15s}.icon-btn:hover{background:var(--accent-soft);color:var(--accent)}.panel>.sidebar{height:auto;flex:1;border:none}.reopen-strip{flex:0 0 1.5rem;width:1.5rem;height:100%;display:flex;align-items:center;justify-content:center;background:var(--panel);border:none;border-right:1px solid var(--line);border-left:1px solid var(--line);color:var(--ink-faint);cursor:pointer;font-size:.85rem;padding:0;transition:background .15s,color .15s}.reopen-strip:hover{background:var(--accent-soft);color:var(--accent)}.sidebar{width:22rem;flex:0 0 22rem;overflow-y:auto;background:var(--panel);padding:.875rem 1rem 1.5rem;font-size:.8125rem;line-height:1.5}.sidebar h2{font-size:.6875rem;text-transform:uppercase;letter-spacing:.11em;font-weight:600;color:var(--ink-faint);margin:1.375rem 0 .5rem;padding-bottom:.3125rem;border-bottom:1px solid var(--line)}.sidebar section:first-of-type h2{margin-top:.25rem}.sidebar .meta{color:var(--ink-soft);margin:.125rem 0 0;font-size:.75rem;line-height:1.5}.layer-list{display:grid;grid-template-columns:1fr;gap:.125rem}.layer-list label{display:flex;gap:.5rem;align-items:center;cursor:pointer;-webkit-user-select:none;user-select:none;padding:.1875rem .375rem;border-radius:var(--radius-sm);transition:background .12s}.layer-list label:hover{background:var(--accent-soft)}.layer-list input[type=checkbox]{accent-color:var(--accent)}.layer-swatches{display:inline-flex;gap:2px;margin-left:auto}.swatch{width:.875rem;height:.625rem;border-radius:2px;border:1px solid rgba(0,0,0,.18);flex:0 0 auto}table.areas{width:100%;border-collapse:collapse}table.areas th,table.areas td{text-align:left;padding:.1875rem .375rem .1875rem 0;border-bottom:1px solid var(--line);font-variant-numeric:tabular-nums}table.areas th{font-size:.6875rem;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-faint);font-weight:600;border-bottom-color:var(--line-strong)}table.areas th:nth-child(n+2),table.areas td:nth-child(n+2){text-align:right;font-family:var(--font-mono);font-size:.75rem}.area-warn td{color:var(--warn)}.dim{color:var(--ink-faint);font-size:.7rem}.selection-json{margin-top:.375rem}.selection-json summary{cursor:pointer;color:var(--ink-faint);font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;-webkit-user-select:none;user-select:none}.selection pre{max-height:12.5rem;overflow:auto;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-sm);padding:.5rem;font-size:.7rem;font-family:var(--font-mono);margin:.375rem 0 0}button{font-family:var(--font-ui)}.actions{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.75rem}.actions button,.add-object button,.edit-panel button:not(.link):not(.danger),.shift-row button:not(.link):not(.danger){display:inline-flex;align-items:center;gap:.375rem;background:var(--accent);border:none;color:#fff;padding:.4375rem .75rem;border-radius:var(--radius-sm);cursor:pointer;font-size:.8125rem;font-weight:500;transition:background .15s,transform .08s}.actions button:hover,.add-object button:hover,.edit-panel button:not(.link):not(.danger):hover{background:var(--accent-strong)}.actions button:active,.add-object button:active{transform:translateY(1px)}.actions button.secondary{background:transparent;color:var(--ink-soft);border:1px solid var(--line-strong)}.actions button.secondary:hover{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}.edit-panel button.danger,.shift-row button.danger{display:inline-flex;align-items:center;gap:.375rem;background:transparent;color:var(--danger);border:1px solid var(--danger);padding:.4375rem .75rem;border-radius:var(--radius-sm);cursor:pointer;font-size:.8125rem;font-weight:500;transition:background .15s,color .15s}.edit-panel button.danger:hover,.shift-row button.danger:hover{background:var(--danger);color:#fff}button.link{background:none;border:none;color:var(--accent);text-decoration:underline;text-underline-offset:2px;padding:0;cursor:pointer;font-size:.75rem}button.link:hover{color:var(--accent-strong)}.canvas-wrap{flex:1;position:relative;background-color:var(--paper);background-image:linear-gradient(rgba(46,90,125,.055) 1px,transparent 1px),linear-gradient(90deg,rgba(46,90,125,.055) 1px,transparent 1px);background-size:2.25rem 2.25rem}.plan-canvas{width:100%;height:100%;display:block;cursor:grab;touch-action:none}.plan-canvas:active{cursor:grabbing}.floor-room{fill:#fdfcf8;stroke:none}.floor-room[data-selected]{fill:#fdf0dd}.floor-outdoor{fill:#e7edef;stroke:#b7c6cc;stroke-width:20}.floor-outdoor[data-selected]{fill:#dcebee}.shaft{fill:#f3d9dc;stroke:#b06a75;stroke-width:20}.shaft[data-selected]{stroke:#e07b00}.room-label text{font-size:320px;fill:#2a3440;font-family:var(--font-ui)}.room-label .room-name{font-weight:600}.room-label .room-code,.room-label .room-area{font-size:240px;fill:#5b6673}.annotation text{font-size:220px;fill:#7c4a03;font-style:italic}.user-object path{fill:#60a57938;stroke:#3e7d55;stroke-width:30}.user-object path[data-selected]{stroke:#e07b00;fill:#e07b0026}.user-object.editable,.fixture.editable,.door.editable,.wall-movable{cursor:move}.object-label text{font-size:240px;fill:#2e5e40;font-family:var(--font-ui);font-weight:600}.plan-canvas[data-mode=edit]{cursor:default}.mode-overlay{position:absolute;top:.875rem;left:50%;transform:translate(-50%);z-index:10;display:flex;align-items:stretch;background:var(--panel-raised);border:1px solid var(--line);border-radius:10px;padding:.25rem;box-shadow:var(--shadow-pop)}.mode-overlay button{display:inline-flex;align-items:center;gap:.4375rem;background:transparent;border:none;border-radius:7px;color:var(--ink-soft);padding:.4375rem .9375rem;cursor:pointer;font-size:.875rem;font-weight:600;transition:background .15s,color .15s}.mode-overlay button:hover{color:var(--accent)}.mode-overlay button.active{background:var(--accent);color:#fff}.mode-overlay .undo-btn{margin-left:.25rem;border-left:1px solid var(--line);border-radius:0 7px 7px 0;padding-left:.8125rem}.mode-overlay .undo-btn:disabled{opacity:.35;cursor:default}.mode-overlay .undo-btn:disabled:hover{color:var(--ink-soft)}.hint{color:var(--ink-soft);font-size:.75rem;margin:.375rem 0}.hint.locked{color:var(--danger)}.add-object,.edit-panel{display:flex;flex-direction:column;gap:.4375rem}.field{display:flex;flex-direction:column;gap:.1875rem;font-size:.7rem;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-faint);font-weight:600}.field input,.field select,.shift-row input{font-family:var(--font-ui);border:1px solid var(--line-strong);border-radius:var(--radius-sm);padding:.375rem .5rem;font-size:.8125rem;font-weight:400;letter-spacing:normal;text-transform:none;color:var(--ink);background:var(--panel-raised);transition:border-color .15s,box-shadow .15s}.field input:focus,.field select:focus,.shift-row input:focus,.object-filter input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.field input[type=color],.shift-row input[type=color]{padding:.125rem;height:1.9rem;width:3.25rem;cursor:pointer}.shift-row{display:flex;gap:.5rem;align-items:flex-end;flex-wrap:wrap}.shift-row label{display:flex;flex-direction:column;gap:.1875rem;font-size:.7rem;color:var(--ink-faint)}.shift-row input[type=number]{width:6rem;font-family:var(--font-mono)}.panel-tabs{display:flex;gap:.25rem;flex:1}.panel-tabs button{flex:1;background:transparent;border:none;border-radius:7px;color:var(--ink-soft);padding:.4375rem .625rem;cursor:pointer;font-size:.875rem;font-weight:600;transition:background .15s,color .15s}.panel-tabs button:hover{color:var(--accent)}.panel-tabs button.active{background:var(--accent);color:#fff}.object-filter{position:relative;margin-bottom:.375rem}.object-filter input{width:100%;font-family:var(--font-ui);border:1px solid var(--line-strong);border-radius:var(--radius-sm);padding:.375rem .5rem .375rem 1.9rem;font-size:.8125rem;background:var(--panel-raised);color:var(--ink)}.object-filter .search-icon{position:absolute;left:.5625rem;top:50%;transform:translateY(-50%);color:var(--ink-faint);font-size:.8rem;pointer-events:none;display:inline-flex}.object-list{list-style:none;margin:0;padding:0}.object-list li{display:flex;align-items:center;gap:.5rem;padding:.3125rem .4375rem;border-bottom:1px solid var(--line);cursor:pointer;border-radius:var(--radius-sm);transition:background .12s}.object-list li:hover{background:var(--accent-soft)}.object-list li.selected{background:#fdf0dd;outline:1px solid #e07b00}.obj-chip{width:.625rem;height:.625rem;border-radius:3px;flex:0 0 auto;border:1px solid rgba(0,0,0,.15)}.obj-name{font-size:.8125rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.obj-detail{color:var(--ink-faint);font-size:.7rem;font-family:var(--font-mono);white-space:nowrap;margin-left:auto}.price-banner{display:flex;flex-direction:column;gap:.1875rem;background:var(--ink);color:var(--panel);border-radius:var(--radius);padding:.75rem .875rem;margin-bottom:.875rem;box-shadow:var(--shadow-soft)}.price-banner span{font-size:.6875rem;text-transform:uppercase;letter-spacing:.09em;opacity:.7}.price-banner b{font-size:1.375rem;font-family:var(--font-mono);font-weight:600}.price-lines{list-style:none;margin:0;padding:0}.price-lines li{padding:.5rem 0;border-bottom:1px solid var(--line)}.price-line-head{display:flex;justify-content:space-between;align-items:baseline;gap:.5rem;font-size:.8125rem}.price-line-head b{font-family:var(--font-mono);font-size:.8125rem;white-space:nowrap}.price-calc{color:var(--ink-soft);font-size:.7rem;margin-top:.1875rem;line-height:1.45}.price-lines button.link{font-size:.7rem;margin-top:.25rem}.price-total{display:flex;justify-content:space-between;font-size:.875rem;padding:.5rem 0 .25rem;border-top:2px solid var(--line-strong);margin-top:.25rem}.price-notes{margin:.4375rem 0 0;padding-left:1rem;font-size:.7rem;color:var(--ink-soft)}.price-notes li{margin:.25rem 0}.pricing button.link{font-size:.75rem}.sidebar footer{margin-top:1.25rem;padding-top:.625rem;border-top:1px solid var(--line)}.zoom-controls{position:absolute;right:.875rem;bottom:.875rem;z-index:15;display:flex;flex-direction:column;gap:.25rem;background:var(--panel-raised);border:1px solid var(--line);border-radius:10px;padding:.25rem;box-shadow:var(--shadow-pop)}.zoom-controls .icon-btn{width:2rem;height:2rem;font-size:1rem;color:var(--ink-soft)}.zoom-controls .icon-btn:hover{background:var(--accent-soft);color:var(--accent)}@media(max-width:1200px){.sidebar{width:18rem;flex-basis:18rem}}@media(max-width:860px){.app.compact .panel{position:absolute;top:0;bottom:0;z-index:40;width:min(21rem,86vw);box-shadow:var(--shadow-pop)}.app.compact .panel-left{left:0}.app.compact .panel-right{right:0}.app.compact .sidebar{width:100%;flex-basis:auto}.app.compact .reopen-strip{position:absolute;top:.75rem;z-index:45;width:2.5rem;height:2.5rem;border:1px solid var(--line);border-radius:12px;background:var(--panel-raised);box-shadow:var(--shadow-pop)}.app.compact .reopen-strip.left{left:.75rem}.app.compact .reopen-strip.right{right:.75rem}.drawer-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;z-index:35;background:#232a3266;animation:fade-in .15s ease}@keyframes fade-in{0%{opacity:0}}.mode-overlay{top:.75rem;padding:.1875rem}.mode-overlay button{padding:.375rem .5rem;font-size:.8125rem}.mode-overlay .undo-btn .btn-label{display:none}.zoom-controls{bottom:1rem;right:1rem}}@media(max-width:520px){.mode-overlay .btn-label{display:none}}.mode-overlay .help-btn{margin-left:.25rem;padding:.4375rem .625rem;border-left:1px solid var(--line);border-radius:0 7px 7px 0;font-size:1rem;line-height:1}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:#232a3273;display:flex;align-items:center;justify-content:center;padding:1.5rem;animation:fade-in .15s ease}.help-modal{width:34rem;max-width:100%;max-height:85vh;display:flex;flex-direction:column;background:var(--panel-raised);border-radius:var(--radius);border:1px solid var(--line);box-shadow:var(--shadow-pop);overflow:hidden}.help-modal-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.875rem 1.125rem;border-bottom:1px solid var(--line);background:var(--panel);flex:0 0 auto}.help-modal-header h2{margin:0;font-size:1.0625rem;font-weight:600}.help-modal-body{overflow-y:auto;padding:.25rem 1.125rem 1.125rem}.help-modal-body section{margin-top:1.125rem}.help-modal-body section:first-child{margin-top:.875rem}.help-modal-body h3{font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;font-weight:600;color:var(--accent);margin:0 0 .5rem}.help-modal-body ul{margin:0;padding-left:1.125rem;font-size:.8125rem;line-height:1.55;color:var(--ink)}.help-modal-body li{margin:.25rem 0}.help-modal-body li::marker{color:var(--ink-faint)}@media(max-width:860px){.help-modal{width:100%;max-height:80vh}}
