:root{--bg-primary: #1e1e2e;--bg-secondary: #2a2a3d;--bg-tertiary: #33334d;--bg-input: #1a1a2e;--border: #444466;--text-primary: #e0e0ef;--text-secondary: #a0a0bf;--accent: #6c8cff;--accent-hover: #8aa4ff;--danger: #ff5555;--success: #50fa7b;--warning: #ffb86c}*{margin:0;padding:0;box-sizing:border-box}html,body,#root{height:100%;overflow:hidden}body{font-family:Segoe UI,-apple-system,sans-serif;font-size:13px;color:var(--text-primary);background:var(--bg-primary)}.app{display:flex;flex-direction:column;height:100vh}.app-main{display:flex;flex:1;min-height:0}.canvas-panel{flex:2;border:1px solid var(--border);margin:6px;border-radius:4px;overflow:hidden;background:var(--bg-secondary)}.canvas-view{display:flex;flex-direction:column;width:100%;height:100%}.canvas-toolbar{display:flex;align-items:center;gap:8px;padding:4px 10px;background:var(--bg-tertiary);border-bottom:1px solid var(--border);font-size:12px;min-height:30px;flex-shrink:0}.toolbar-toggle{display:flex;align-items:center;gap:4px;color:var(--text-secondary);cursor:pointer;white-space:nowrap}.toolbar-toggle input{cursor:pointer}.toolbar-separator{width:1px;height:16px;background:var(--border);flex-shrink:0}.toolbar-field{display:flex;align-items:center;gap:3px;color:var(--text-secondary);font-size:11px;white-space:nowrap}.toolbar-field input{width:60px;background:var(--bg-input);border:1px solid var(--border);border-radius:3px;color:var(--text-primary);padding:2px 4px;font-size:11px}.toolbar-hint{color:var(--text-secondary);font-size:10px;font-style:italic;opacity:.7;margin-left:auto;white-space:nowrap}.canvas-container{width:100%;flex:1;overflow:hidden;position:relative}.canvas-svg{width:10000px;height:10000px}.canvas-placeholder{display:flex;align-items:center;justify-content:center;height:100%;color:var(--text-secondary);font-size:15px;font-style:italic}.building-nav{width:200px;min-width:200px;display:flex;flex-direction:column;background:var(--bg-secondary);border:1px solid var(--border);border-radius:4px;margin:6px 0 6px 6px;overflow:hidden}.building-nav-header{display:flex;align-items:center;gap:6px;padding:8px 10px;background:var(--bg-tertiary);border-bottom:1px solid var(--border);flex-shrink:0}.building-nav-title{font-size:12px;font-weight:600;color:var(--accent);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.building-nav-load-btn{padding:3px 8px;font-size:11px;background:var(--bg-secondary);color:var(--text-secondary);border:1px solid var(--border);border-radius:3px;cursor:pointer;white-space:nowrap;transition:all .15s}.building-nav-load-btn:hover{color:var(--accent);border-color:var(--accent)}.building-nav-tree{flex:1;overflow-y:auto;padding:4px 0}.building-group{margin-bottom:2px}.building-header{display:flex;align-items:center;gap:4px;padding:5px 10px;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .1s}.building-header:hover{background:var(--bg-tertiary)}.building-chevron{font-size:8px;color:var(--text-secondary);width:12px;text-align:center;flex-shrink:0}.building-name{font-size:11px;font-weight:600;color:var(--text-primary);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.building-floor-count{font-size:10px;color:var(--text-secondary);background:var(--bg-tertiary);border-radius:8px;padding:1px 5px;flex-shrink:0}.building-floors{padding-left:6px}.floor-item{display:flex;align-items:center;border-radius:3px;margin:1px 4px;transition:background .1s}.floor-item.active{background:var(--accent)}.floor-item.active .floor-name-text,.floor-item.active .floor-label-text{color:#fff}.floor-vis-btn{display:flex;align-items:center;justify-content:center;width:22px;height:22px;background:none;border:none;color:var(--text-secondary);font-size:9px;cursor:pointer;opacity:.3;flex-shrink:0;padding:0}.floor-vis-btn.visible,.floor-vis-btn:hover{opacity:1}.floor-select-btn{flex:1;display:flex;align-items:center;gap:4px;background:none;border:none;cursor:pointer;padding:3px 4px;min-width:0;text-align:left}.floor-label-text{font-size:11px;font-weight:600;color:var(--text-primary);flex-shrink:0}.floor-name-text{font-size:10px;color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.floor-processed-dot{width:5px;height:5px;background:var(--success);border-radius:50%;flex-shrink:0}.floor-item.active .floor-processed-dot{background:#fffc}.floor-remove-btn{background:none;border:none;color:var(--text-secondary);font-size:13px;cursor:pointer;opacity:0;padding:0 4px;line-height:1;transition:opacity .1s}.floor-item:hover .floor-remove-btn{opacity:.5}.floor-remove-btn:hover{opacity:1!important;color:var(--danger)}.add-floor-btn{display:block;width:calc(100% - 8px);margin:2px 4px;padding:3px 0;background:none;border:1px dashed var(--border);border-radius:3px;color:var(--text-secondary);font-size:10px;cursor:pointer;transition:all .15s}.add-floor-btn:hover{color:var(--accent);border-color:var(--accent)}.building-nav-footer{padding:6px 10px;border-top:1px solid var(--border);flex-shrink:0}.add-building-btn{width:100%;padding:4px 0;background:none;border:1px dashed var(--border);border-radius:3px;color:var(--text-secondary);font-size:11px;cursor:pointer;transition:all .15s}.add-building-btn:hover{color:var(--accent);border-color:var(--accent)}.sidebar{flex:1;display:flex;flex-direction:column;min-width:420px;max-width:520px;margin:6px 6px 6px 0}.tab-bar{display:flex;gap:1px;background:var(--border);border-radius:4px 4px 0 0;overflow:hidden}.tab-button{flex:1;padding:8px 16px;border:none;background:var(--bg-tertiary);color:var(--text-secondary);cursor:pointer;font-size:13px;font-weight:500;transition:background .15s,color .15s}.tab-button:hover{background:var(--bg-secondary);color:var(--text-primary)}.tab-button.active{background:var(--bg-secondary);color:var(--accent);border-bottom:2px solid var(--accent)}.tab-panel{flex:1;background:var(--bg-secondary);border:1px solid var(--border);border-top:none;border-radius:0 0 4px 4px;overflow:auto}.tab-content{padding:12px;display:flex;flex-direction:column;height:100%}.input-tab .svg-input{flex:1;min-height:200px;background:var(--bg-input);color:var(--text-primary);border:1px solid var(--border);border-radius:4px;padding:8px;font-family:Cascadia Code,Consolas,monospace;font-size:12px;resize:none}.input-controls{margin-top:12px}.input-form{display:flex;flex-direction:column;gap:8px}.form-row{display:flex;align-items:center;gap:8px}.form-row label{color:var(--text-secondary);font-size:12px;min-width:95px}.form-row input{background:var(--bg-input);border:1px solid var(--border);border-radius:3px;color:var(--text-primary);padding:4px 8px;font-size:12px;width:120px}.settings-group{border:1px solid var(--border);border-radius:4px;padding:8px 10px 10px;margin:0}.settings-group legend{font-size:11px;font-weight:600;color:var(--accent);padding:0 6px}.input-buttons{display:flex;gap:8px;margin-top:12px;justify-content:flex-end}.btn{padding:8px 20px;border:none;border-radius:4px;cursor:pointer;font-size:13px;font-weight:600;transition:background .15s}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-secondary{background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border)}.btn-secondary:hover:not(:disabled){background:var(--border)}.polygons-tab{overflow:hidden}.polygons-layout{display:flex;gap:12px;height:100%;min-height:0}.polygon-list-section{flex:1;display:flex;flex-direction:column;min-height:0}.polygon-properties-section{width:200px;display:flex;flex-direction:column}.section-label{display:block;font-size:12px;color:var(--text-secondary);margin-bottom:6px;font-weight:500}.polygon-list{flex:1;overflow-y:auto;border:1px solid var(--border);border-radius:4px;background:var(--bg-input)}.polygon-list-item{padding:4px 8px;cursor:pointer;display:flex;gap:8px;font-size:12px;border-bottom:1px solid var(--bg-tertiary);transition:background .1s}.polygon-list-item:hover{background:var(--bg-tertiary)}.polygon-list-item.selected{background:var(--accent);color:#fff}.polygon-index{color:var(--text-secondary);min-width:24px}.selected .polygon-index{color:#ffffffb3}.properties-panel{border:1px solid var(--border);border-radius:4px;padding:10px;background:var(--bg-input);display:flex;flex-direction:column;gap:6px}.properties-panel.disabled{opacity:.4;pointer-events:none}.properties-panel label{font-size:11px;color:var(--text-secondary);margin-top:4px}.properties-panel select,.properties-panel input[type=text]{width:100%;background:var(--bg-secondary);border:1px solid var(--border);border-radius:3px;color:var(--text-primary);padding:4px 6px;font-size:12px}.checkbox-row{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-secondary);margin-top:8px;cursor:pointer}.output-tab{gap:10px}.output-controls{display:flex;flex-direction:column;gap:8px}.output-floor-select{display:flex;align-items:center;gap:8px}.output-floor-select label{font-size:12px;color:var(--text-secondary)}.output-floor-select select{flex:1;background:var(--bg-input);border:1px solid var(--border);border-radius:3px;color:var(--text-primary);padding:4px 8px;font-size:12px}.output-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.warning-banner{background:#ff555526;border:2px solid var(--danger);color:var(--danger);padding:10px 16px;border-radius:4px;font-weight:600;font-size:13px}.output-text{flex:1;min-height:200px;background:var(--bg-input);color:var(--text-primary);border:1px solid var(--border);border-radius:4px;padding:8px;font-family:Cascadia Code,Consolas,monospace;font-size:11px;resize:none}.empty-state{color:var(--text-secondary);font-style:italic;text-align:center;padding:40px}.selection-count{color:var(--accent);font-weight:600}.mixed-hint{color:var(--text-secondary);font-size:11px;font-style:italic;margin-top:4px}.console-panel{height:130px;min-height:80px;margin:0 6px 6px;border:1px solid var(--border);border-radius:4px;background:var(--bg-input);overflow-y:auto}.console-output{padding:6px 10px;font-family:Cascadia Code,Consolas,monospace;font-size:11px}.console-line{color:var(--text-secondary);line-height:1.6}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-primary)}::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--text-secondary)}
