:root{--bg: #0f1115;--panel: #171a21;--panel-2: #1f2430;--border: #2a3040;--text: #e6e9ef;--muted: #8b93a7;--accent: #4f9dff;--accent-2: #38d39f;--danger: #ff5c5c}*{box-sizing:border-box}html,body,#root{margin:0;height:100%;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px}.app{display:grid;grid-template-columns:300px 1fr;grid-template-rows:52px 1fr;grid-template-areas:"header header" "sidebar main";height:100%}.header{grid-area:header;display:flex;align-items:center;gap:16px;padding:0 16px;background:var(--panel);border-bottom:1px solid var(--border)}.header h1{font-size:16px;margin:0;font-weight:600}.header .logo{color:var(--accent)}.modes{display:flex;gap:4px;margin-left:auto}.modes button{background:var(--panel-2);border:1px solid var(--border);color:var(--muted);padding:6px 14px;border-radius:6px;cursor:pointer}.modes button.active{color:var(--text);border-color:var(--accent);background:#1c2740}.sidebar{grid-area:sidebar;background:var(--panel);border-right:1px solid var(--border);overflow-y:auto;padding:12px}.main{grid-area:main;position:relative;overflow:hidden}.section{margin-bottom:18px}.section h3{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:0 0 8px}button.btn{background:var(--accent);border:none;color:#fff;padding:8px 12px;border-radius:6px;cursor:pointer;font-weight:500;width:100%}button.btn.secondary{background:var(--panel-2);border:1px solid var(--border);color:var(--text)}button.btn.ghost{background:transparent;border:1px solid var(--border);color:var(--muted)}button.btn:disabled{opacity:.45;cursor:not-allowed}button.btn+button.btn{margin-top:6px}.room-item{display:flex;align-items:center;gap:8px;padding:8px;border-radius:6px;cursor:pointer;border:1px solid transparent}.room-item:hover{background:var(--panel-2)}.room-item.active{background:#1c2740;border-color:var(--accent)}.room-item .name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.room-item .del{color:var(--muted);background:none;border:none;cursor:pointer}.room-item .del:hover{color:var(--danger)}.field{margin-bottom:10px}.field label{display:block;font-size:12px;color:var(--muted);margin-bottom:4px}.field input[type=text],.field input[type=number]{width:100%;background:var(--panel-2);border:1px solid var(--border);color:var(--text);padding:6px 8px;border-radius:6px}.field input[type=range]{width:100%}.hint{color:var(--muted);font-size:12px;line-height:1.5}.badge{display:inline-block;padding:2px 8px;border-radius:99px;font-size:11px;background:var(--panel-2);border:1px solid var(--border)}.badge.ok{color:var(--accent-2);border-color:var(--accent-2)}.badge.warn{color:#ffc04d;border-color:#ffc04d}.empty{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;color:var(--muted);text-align:center;padding:40px}.pano-wrap{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column}.pano-toolbar{display:flex;gap:8px;align-items:center;padding:10px 14px;background:var(--panel);border-bottom:1px solid var(--border)}.pano-canvas-host{flex:1;overflow:auto;background:#0a0c10;position:relative}.canvas3d{position:absolute;top:0;right:0;bottom:0;left:0}.overlay-help{position:absolute;bottom:14px;left:14px;right:14px;background:#141820d9;border:1px solid var(--border);padding:10px 14px;border-radius:8px;font-size:12px;color:var(--muted);pointer-events:none}.scale-list .pair{display:flex;align-items:center;gap:8px;font-size:12px;padding:4px 0}.scale-list .pair .dist{color:var(--accent-2)}.file-drop{display:none}.overlay-panel{position:absolute;top:14px;left:14px;width:280px;max-height:calc(100% - 28px);overflow-y:auto;background:#141820eb;border:1px solid var(--border);border-radius:10px;padding:14px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:5}.panel-inline{background:var(--panel-2);border:1px solid var(--border);border-radius:8px;padding:10px}.divider{height:1px;background:var(--border);margin:14px 0}small.dim{color:var(--muted)}
