:root{--bg:#eef1f5;--surface:#fff;--border:#dde2ea;--text:#1f2430;--muted:#6b7385;--accent:#2f6fed;--accent-soft:#e6eefe;--danger:#e5484d;--radius:8px;color:var(--text);font-family:Inter,Segoe UI,system-ui,sans-serif}*{box-sizing:border-box}html,body{background:var(--bg);height:100%;margin:0;overflow:hidden}body{grid-template-rows:52px 1fr 28px;display:grid}button{font:inherit;color:inherit;cursor:pointer}.topbar{background:var(--surface);border-bottom:1px solid var(--border);grid-template-columns:1fr auto 1fr;align-items:center;gap:16px;padding:0 14px;display:grid}.brand{color:var(--accent);align-items:center;gap:8px;min-width:170px;font-size:21px;text-decoration:none;display:flex}.brand span{color:var(--text)}.wordmark{letter-spacing:-.035em;font-weight:750}.views{background:var(--bg);border-radius:var(--radius);padding:3px;display:flex}.views button{color:var(--muted);background:0 0;border:0;border-radius:6px;padding:6px 16px;font-weight:500}.views button.active{background:var(--surface);color:var(--text);box-shadow:0 1px 3px #0000001f}.actions{justify-self:end;align-items:center;gap:6px;display:flex}.actions button{white-space:nowrap;border:1px solid var(--border);background:var(--surface);border-radius:6px;padding:5px 11px;font-size:13px}.actions button:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.actions button:disabled{opacity:.4;cursor:default}#btnUndo,#btnRedo{padding:2px 9px;font-size:16px}.menu-wrap{position:relative}#btnMenu[aria-expanded=true]{border-color:var(--accent);color:var(--accent)}.menu{z-index:50;background:var(--surface);border:1px solid var(--border);border-radius:8px;min-width:230px;padding:5px;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 10px 30px #00000026}.actions .menu button{text-align:left;border:0;border-radius:5px;justify-content:space-between;align-items:center;gap:12px;width:100%;padding:7px 10px;display:flex}.actions .menu button:hover,.actions .menu button:focus-visible{background:var(--bg);outline:none}.menu kbd{color:var(--muted);font-family:inherit;font-size:11px}.menu hr{border:0;border-top:1px solid var(--border);margin:4px 2px}.sep{background:var(--border);width:1px;height:22px;margin:0 4px}.main{grid-template-columns:92px 1fr 280px;min-height:0;display:grid}body.mode-3d .main{grid-template-columns:0 1fr 280px}body.mode-3d .toolbar{visibility:hidden}.toolbar{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;gap:3px;padding:8px 6px;display:flex;overflow-y:auto}.toolbar button{border-radius:var(--radius);color:var(--muted);background:0 0;border:0;flex-direction:column;align-items:center;gap:3px;padding:8px 2px 6px;font-size:11px;display:flex;position:relative}.toolbar button svg{fill:currentColor;stroke:currentColor;width:22px;height:22px}.toolbar button:hover{background:var(--bg);color:var(--text)}.toolbar button.active{background:var(--accent-soft);color:var(--accent)}.toolbar kbd{opacity:.6;font-family:inherit;font-size:9px;position:absolute;top:3px;right:5px}.tool-sep{background:var(--border);height:1px;margin:6px 8px}.stage{min-width:0;min-height:0;position:relative}.view{display:none;position:absolute;inset:0}.view.active{display:block}#plan{touch-action:none;display:block}#view3d canvas{display:block}.dim-editor{background:var(--surface);border:1px solid var(--accent);z-index:5;border-radius:7px;align-items:center;gap:2px;padding:3px;display:flex;position:absolute;transform:translate(-50%,-50%);box-shadow:0 4px 14px #141e322e}.dim-editor input{text-align:right;-moz-appearance:textfield;background:0 0;border:0;outline:none;width:64px;padding:3px 4px;font:600 13px Inter,Segoe UI,system-ui,sans-serif}.dim-editor input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.dim-editor input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.dim-editor .unit{color:var(--muted);padding-right:4px;font-size:12px}.dim-editor .anchors{border-left:1px solid var(--border);padding-left:3px;display:flex}.dim-editor .anchors button{cursor:pointer;width:24px;height:22px;color:var(--muted);background:0 0;border:0;border-radius:4px;font-size:13px}.dim-editor .anchors button:hover{background:var(--accent-soft)}.dim-editor .anchors button.active{background:var(--accent);color:#fff}.dim-editor .lock{border:0;border-left:1px solid var(--border);height:22px;color:var(--muted);cursor:pointer;background:0 0;place-items:center;margin-left:3px;padding:0 4px 0 6px;display:grid}.dim-editor .lock:hover{color:var(--text)}.dim-editor .lock.active{color:#b45309}.overlay3d{gap:8px;display:flex;position:absolute;top:14px;left:14px}.overlay3d button{border:1px solid var(--border);background:var(--surface);border-radius:var(--radius);padding:8px 14px;font-weight:500;box-shadow:0 2px 8px #0000001a}.overlay3d button.primary{background:var(--accent);border-color:var(--accent);color:#fff}.help3d,.walkhelp{color:#fff;border-radius:var(--radius);white-space:nowrap;pointer-events:none;background:#1f2430cc;padding:8px 14px;font-size:13px;position:absolute;bottom:14px;left:50%;transform:translate(-50%)}.walkhelp,.crosshair{display:none}body.walking .walkhelp,body.walking .crosshair{display:block}body.walking .help3d,body.walking .overlay3d{display:none}.crosshair{pointer-events:none;background:#fff;border-radius:50%;width:6px;height:6px;margin:-3px 0 0 -3px;position:absolute;top:50%;left:50%;box-shadow:0 0 0 1.5px #00000080}.panel{background:var(--surface);border-left:1px solid var(--border);padding:14px 16px;font-size:13px;overflow-y:auto}.panel h2{margin:0 0 12px;font-size:15px}.panel h3{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:18px 0 8px;font-size:11px}.field{grid-template-columns:1fr 110px;align-items:center;gap:8px;margin-bottom:8px;display:grid}.field label{color:var(--muted)}.field .input{border:1px solid var(--border);border-radius:6px;align-items:center;display:flex;overflow:hidden}.field .input:focus-within{border-color:var(--accent)}.field input,.field select{width:100%;font:inherit;background:0 0;border:0;outline:none;min-width:0;padding:6px 8px}.field select{border:1px solid var(--border);border-radius:6px}.field .unit{color:var(--muted);padding:0 8px;font-size:12px}.field.wide{grid-template-columns:1fr}.field.wide input{border:1px solid var(--border);border-radius:6px}.field.check{grid-template-columns:auto 1fr}.field.check input{width:auto}.value{text-align:right;font-weight:600}.btn{border:1px solid var(--border);background:var(--surface);border-radius:6px;width:100%;margin-top:6px;padding:7px}.btn:hover{border-color:var(--accent);color:var(--accent)}.btn.danger{color:var(--danger)}.btn.danger:hover{border-color:var(--danger);background:#fff0f0}.stats{grid-template-columns:1fr 1fr;gap:8px;display:grid}.stat{background:var(--bg);border-radius:var(--radius);padding:8px 10px}.stat b{font-size:17px;display:block}.stat span{color:var(--muted);font-size:11px}.room-list{margin:0;padding:0;list-style:none}.room-list li{cursor:pointer;border-radius:6px;align-items:center;gap:8px;padding:6px 8px;display:flex}.room-list li:hover{background:var(--bg)}.room-list .swatch{border:1px solid #00000026;border-radius:3px;width:12px;height:12px}.room-list .area{color:var(--muted);margin-left:auto}.shortcuts{color:var(--muted);margin:0;padding-left:16px;line-height:1.7}.statusbar{color:var(--muted);background:var(--surface);border-top:1px solid var(--border);white-space:nowrap;justify-content:space-between;align-items:center;padding:0 14px;font-size:12px;display:flex;overflow:hidden}.actions button.primary,.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.actions button.primary:hover,.btn.primary:hover{color:#fff;background:#255fd4}.actions button.order{background:var(--text);border-color:var(--text);color:#fff;white-space:nowrap;font-weight:600}.actions button.order:hover{color:#fff;background:#000;border-color:#000}.order-price:before{content:" · "}@media (width<=1180px){.order-price{display:none}}dialog{width:min(420px,100vw - 32px);color:var(--text);border:0;border-radius:12px;padding:22px 24px 18px;font-size:13px;box-shadow:0 20px 60px #00000040}dialog::backdrop{background:#14182173}dialog h2{margin:0 0 6px;font-size:17px}dialog .hint{color:var(--muted);margin:0 0 16px;line-height:1.5}dialog .field{grid-template-columns:1fr 170px}dialog .field.check{grid-template-columns:auto 1fr}.gen-summary{background:var(--bg);border-radius:var(--radius);margin:12px 0 4px;padding:10px 12px;line-height:1.6}.gen-summary .warn{color:#b4540a}dialog menu{justify-content:flex-end;gap:8px;margin:14px 0 0;padding:0;display:flex}dialog menu .btn{width:auto;margin:0;padding:7px 16px}.catalog{grid-template-columns:1fr 1fr;gap:6px;display:grid}.catalog button{border:1px solid var(--border);background:var(--surface);font:inherit;text-align:left;cursor:pointer;border-radius:6px;flex-direction:column;align-items:flex-start;gap:2px;padding:6px 8px;display:flex}.catalog button b{font-size:12px;font-weight:600}.catalog button span{color:var(--muted);font-size:11px}.catalog button:hover{border-color:var(--accent)}.catalog button.active{border-color:var(--accent);background:var(--accent-soft)}#props .hint{color:var(--muted);margin:4px 0 12px;font-size:12px;line-height:1.45}.addr{position:relative}.addr label{margin-bottom:4px}.suggest{z-index:5;background:var(--surface);border:1px solid var(--border);border-radius:6px;max-height:220px;margin:0;padding:0;list-style:none;position:absolute;top:100%;left:0;right:0;overflow:auto;box-shadow:0 8px 24px #00000026}.suggest:empty{display:none}.suggest li{cursor:pointer;padding:7px 10px}.suggest li:hover,.suggest li.active{background:var(--bg);color:var(--accent)}.or{color:var(--muted);align-items:center;gap:10px;margin:14px 0 4px;display:flex}.or:before,.or:after{content:"";border-top:1px solid var(--border);flex:1}dialog .hint.small{margin:6px 0 0;font-size:12px}.range{width:100%}.btn-row{grid-template-columns:1fr 1fr;gap:6px;display:grid}.btn.on{border-color:var(--accent);background:var(--accent);color:#fff}.bg-label{color:var(--muted);word-break:break-word;margin:0 0 8px;font-size:12px}.cloud-wrap{position:relative}.actions button.cloud{white-space:nowrap}.actions button.cloud.linked{color:#1d7a45}.actions button.cloud.error{border-color:var(--danger);color:var(--danger)}.nudge{z-index:40;background:var(--surface);border:1px solid var(--accent);border-radius:10px;width:290px;padding:14px;font-size:13px;line-height:1.45;position:absolute;top:calc(100% + 10px);right:0;box-shadow:0 10px 30px #0000002e}.nudge:before{content:"";background:var(--surface);border-left:1px solid var(--accent);border-top:1px solid var(--accent);width:12px;height:12px;position:absolute;top:-7px;right:28px;transform:rotate(45deg)}.nudge p{margin:0 0 10px}.nudge div{gap:6px;display:flex}.actions .nudge .btn{width:auto;margin:0;padding:6px 12px}#saveDialog .field.wide{margin-bottom:12px}#saveDialog .field.wide label{margin-bottom:4px}#saveDialog .field.wide input{padding:8px 10px}.save-error{color:#a12a2e;background:#fdecec;border-radius:6px;margin:0 0 10px;padding:8px 10px}.save-switch .linkbtn{color:var(--accent);background:0 0;border:0;padding:0;text-decoration:underline}.save-switch a{float:right;color:var(--muted)}
