:root{--bg-color: #1a1a1a;--bg-color-secondary: #222222;--panel-bg: #2a2a2a;--panel-bg-hover: #333333;--panel-bg-active: #3a3a3a;--surface-inset: #1a1a1a;--text-primary: #cccccc;--text-secondary: #858585;--text-muted: #5a5a5a;--accent-color: #00bcd4;--accent-hover: #00a5bb;--accent-muted: rgba(0, 188, 212, .15);--accent-glow: rgba(0, 188, 212, .25);--border-color: #383838;--border-color-strong: #505050;--danger-color: #f44336;--danger-hover: #d32f2f;--btn-secondary-bg: transparent;--btn-secondary-border: #505050;--btn-secondary-hover-bg: #333333;--scrollbar-thumb: #555;--scrollbar-track: transparent;--box-shadow: 0 1px 3px rgba(0, 0, 0, .5);--border-radius: 1px;--font-family: "Segoe UI", system-ui, -apple-system, sans-serif;--font-mono: "Consolas", "SF Mono", "Fira Code", monospace;--overlay-color: rgba(0, 188, 212, .08);--app-bar-height: 36px;--sidebar-width: 280px;--status-bar-height: 24px;--floating-panel-width: 280px;--login-grid-color: rgba(0, 188, 212, .03);--login-grid-color-strong: rgba(0, 188, 212, .06);--canvas-bg-r: .1;--canvas-bg-g: .1;--canvas-bg-b: .1;--grid-emissive-r: .3;--grid-emissive-g: .3;--grid-emissive-b: .3;--fov-fill: rgba(0, 188, 212, .2);--fov-stroke: rgba(0, 188, 212, .5);--fov-center-stroke: rgba(0, 188, 212, .7);--slice-active-color: #2563eb;--kbd-color: #e8b84a;--kbd-bg: rgba(232, 184, 74, .1);--kbd-border: rgba(232, 184, 74, .3);--help-color: #e8b84a;--help-bg: rgba(232, 184, 74, .1);--help-border: rgba(232, 184, 74, .3)}body.theme-light{--bg-color: #f0f0f0;--bg-color-secondary: #e8e8e8;--panel-bg: #ffffff;--panel-bg-hover: #f5f5f5;--panel-bg-active: #ebebeb;--surface-inset: #f0f0f0;--text-primary: #1e1e1e;--text-secondary: #616161;--text-muted: #9e9e9e;--accent-color: #0078d4;--accent-hover: #006abc;--accent-muted: rgba(0, 120, 212, .12);--accent-glow: rgba(0, 120, 212, .2);--border-color: #d1d1d1;--border-color-strong: #b0b0b0;--danger-color: #e63946;--danger-hover: #cc333f;--btn-secondary-bg: transparent;--btn-secondary-border: #c0c0c0;--btn-secondary-hover-bg: #e8e8e8;--scrollbar-thumb: #bbb;--scrollbar-track: transparent;--box-shadow: 0 1px 3px rgba(0, 0, 0, .1);--overlay-color: rgba(0, 120, 212, .06);--login-grid-color: rgba(0, 120, 212, .03);--login-grid-color-strong: rgba(0, 120, 212, .06);--canvas-bg-r: .94;--canvas-bg-g: .94;--canvas-bg-b: .94;--grid-emissive-r: .55;--grid-emissive-g: .55;--grid-emissive-b: .55;--fov-fill: rgba(120, 120, 120, .25);--fov-stroke: rgba(100, 100, 100, .5);--fov-center-stroke: rgba(80, 80, 80, .7);--kbd-color: var(--text-muted);--kbd-bg: var(--bg-color-secondary);--kbd-border: var(--border-color);--help-color: var(--text-muted);--help-bg: var(--bg-color-secondary);--help-border: var(--border-color)}*{margin:0;padding:0;box-sizing:border-box;font-family:var(--font-family)}body,html{width:100%;height:100%;overflow:hidden;background-color:var(--bg-color);color:var(--text-primary)}.login-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:linear-gradient(var(--login-grid-color) 1px,transparent 1px),linear-gradient(90deg,var(--login-grid-color) 1px,transparent 1px),linear-gradient(var(--login-grid-color-strong) 1px,transparent 1px),linear-gradient(90deg,var(--login-grid-color-strong) 1px,transparent 1px),var(--bg-color);background-size:20px 20px,20px 20px,100px 100px,100px 100px;background-attachment:fixed;display:flex;justify-content:center;align-items:center;z-index:1000}.login-overlay.landing-page{flex-direction:column;align-items:stretch;justify-content:flex-start;overflow:hidden;box-sizing:border-box;height:100vh}.login-overlay.hidden{display:none}.landing-header{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;padding:.6rem 2rem;background:var(--panel-bg);border-bottom:1px solid var(--border-color);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.landing-header-left{display:flex;align-items:center;gap:.5rem;color:var(--accent-color)}.landing-body{display:flex;flex:1;min-height:0;align-items:center;gap:2rem;padding:0 3rem;max-width:1100px;margin:0 auto;width:100%;box-sizing:border-box}.landing-hero{display:flex;flex-direction:column;align-items:flex-start;flex:0 0 340px;padding:1rem 0}.landing-title{font-size:1.6rem;font-weight:700;color:var(--text-primary);letter-spacing:-.02em;line-height:1.2;margin:0 0 .6rem}.landing-subtitle{font-size:.82rem;color:var(--text-secondary);line-height:1.5;margin:0 0 1.25rem}.landing-auth{display:flex;flex-direction:column;gap:0;width:100%;max-width:280px}.landing-features{display:grid;grid-template-columns:repeat(2,1fr);gap:.6rem;flex:1;min-width:0;box-sizing:border-box}.landing-feature{background:var(--panel-bg);border:1px solid var(--border-color);border-left:2px solid var(--accent-color);border-radius:var(--border-radius);padding:.6rem .75rem;transition:transform .15s,box-shadow .15s}.landing-feature:hover{transform:translateY(-1px);box-shadow:0 2px 8px var(--accent-glow)}.landing-feature svg{color:var(--accent-color);margin-bottom:.3rem;display:block}.landing-feature h3{font-size:.75rem;font-weight:600;color:var(--text-primary);margin:0 0 .15rem}.landing-feature p{font-size:.68rem;color:var(--text-secondary);line-height:1.35;margin:0}.landing-footer{text-align:center;padding:.6rem 2rem;border-top:1px solid var(--border-color);font-size:.65rem;color:var(--text-muted);flex-shrink:0}.landing-footer a{color:var(--accent-color);text-decoration:none}.landing-footer a:hover{text-decoration:underline}@media(max-width:768px){.landing-body{flex-direction:column;padding:1rem 1.5rem;gap:1rem;overflow-y:auto}.landing-hero{flex:none;align-items:center;text-align:center}.landing-auth{max-width:280px;margin:0 auto}.landing-features{grid-template-columns:repeat(2,1fr)}}@media(max-width:480px){.landing-body{padding:1rem}.landing-features{grid-template-columns:1fr}.landing-title{font-size:1.3rem}.landing-subtitle{font-size:.78rem}.landing-header{padding:.6rem 1rem}}.login-brand-right{display:flex;align-items:center;gap:.4rem}.login-app-name{font-size:1.1rem;font-weight:600;color:var(--text-primary);letter-spacing:.02em}.login-version{font-size:.6rem;font-family:var(--font-mono);color:var(--text-muted);background:var(--bg-color-secondary);padding:.1rem .4rem;border:1px solid var(--border-color);border-radius:var(--border-radius)}#google-signin-btn{display:flex;justify-content:center}.login-divider{display:flex;align-items:center;margin:.75rem 0;gap:.75rem}.login-divider:before,.login-divider:after{content:"";flex:1;height:1px;background:var(--border-color)}.login-divider span{color:var(--text-muted);font-size:.75rem}.ms-signin-btn{display:flex;align-items:center;justify-content:center;gap:.75rem;width:280px;height:40px;margin:0 auto;padding:0 12px;background:var(--panel-bg);color:var(--text-primary);border:1px solid var(--border-color);border-radius:4px;font-size:14px;font-family:Google Sans,Segoe UI,system-ui,-apple-system,Roboto,Arial,sans-serif;font-weight:400;letter-spacing:.25px;cursor:pointer;transition:background .1s,box-shadow .1s;box-sizing:border-box}.ms-signin-btn:hover{background:var(--panel-bg-hover);box-shadow:0 1px 3px #00000014}.app-bar{position:fixed;top:0;left:0;right:0;height:var(--app-bar-height);display:flex;align-items:center;gap:.25rem;padding:0 .5rem;background:var(--panel-bg);border-bottom:1px solid var(--border-color);z-index:500}.app-bar.hidden{display:none}.app-bar-left{display:flex;align-items:center;gap:.35rem;min-width:0;flex-shrink:1;overflow:hidden}.app-bar-logo{color:var(--accent-color);flex-shrink:0}.app-bar-model-name{font-weight:500;font-size:.75rem;font-family:var(--font-mono);color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:220px}.app-bar-tools{display:flex;align-items:center;gap:.15rem;margin-left:auto;position:relative}.app-bar-separator{width:1px;height:18px;background:var(--border-color);margin:0 .25rem}.app-bar-right{display:flex;align-items:center;gap:.35rem;margin-left:.25rem}.app-bar-user{display:flex;align-items:center;gap:.3rem}.icon-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;background:none;border:1px solid transparent;border-radius:var(--border-radius);color:var(--text-secondary);cursor:pointer;transition:all .1s;flex-shrink:0}.icon-btn:hover{color:var(--text-primary);background:var(--panel-bg-hover);border-color:var(--border-color)}.icon-btn.active{color:var(--accent-color);background:var(--accent-muted);border-color:var(--accent-color)}.user-avatar{width:20px;height:20px;border-radius:50%;object-fit:cover}.user-name{font-size:.7rem;font-weight:500;color:var(--text-primary)}.btn-theme-toggle{display:flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;background:none;border:1px solid var(--border-color);border-radius:var(--border-radius);color:var(--text-secondary);cursor:pointer;transition:color .1s,border-color .1s}.btn-theme-toggle svg{width:12px;height:12px}.btn-theme-toggle:hover{color:var(--accent-color);border-color:var(--accent-color)}.btn-signout{font-family:var(--font-family);font-size:.65rem;font-weight:500;background:none;border:1px solid var(--border-color);border-radius:var(--border-radius);padding:.15rem .4rem;cursor:pointer;color:var(--text-secondary);transition:color .1s,border-color .1s}.btn-signout:hover{color:var(--danger-color);border-color:var(--danger-color)}.file-menu-dropdown{position:absolute;top:100%;right:0;margin-top:2px;background:var(--panel-bg);border:1px solid var(--border-color);border-radius:var(--border-radius);box-shadow:0 4px 16px #0006;z-index:510;min-width:180px;padding:.25rem 0}.file-menu-dropdown.hidden{display:none}.file-menu-item{display:flex;align-items:center;gap:.5rem;width:100%;padding:.4rem .75rem;font-size:.75rem;font-weight:400;color:var(--text-primary);background:none;border:none;border-radius:0;cursor:pointer;text-align:left;transition:background .1s}.file-menu-item:hover{background:var(--panel-bg-hover)}.file-menu-item.hidden{display:none}.file-menu-item svg{color:var(--text-secondary);flex-shrink:0}.left-sidebar{position:fixed;top:var(--app-bar-height);left:0;bottom:var(--status-bar-height);width:var(--sidebar-width);background:var(--panel-bg);border-right:1px solid var(--border-color);z-index:400;display:flex;flex-direction:column;overflow:hidden;transform:translate(0);transition:transform .2s ease}.left-sidebar.hidden{transform:translate(-100%);pointer-events:none}.sidebar-section{display:flex;flex-direction:column;overflow:hidden}.sidebar-tree-section{flex:2;min-height:100px}.sidebar-floor-section{flex:1;min-height:80px}.sidebar-section-header{display:flex;align-items:center;gap:.35rem;padding:.4rem .6rem;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-secondary);border-bottom:1px solid var(--border-color);flex-shrink:0;-webkit-user-select:none;user-select:none}.sidebar-splitter{height:4px;cursor:ns-resize;background:var(--border-color);flex-shrink:0;transition:background .15s;position:relative}.sidebar-splitter:after{content:"";position:absolute;inset:-4px 0;cursor:ns-resize}.sidebar-splitter:hover,.sidebar-splitter.dragging{background:var(--accent-color)}.tree-view-container{flex:1;overflow-y:auto;font-size:.8rem;line-height:1.4;background:var(--bg-color-secondary);padding:.5rem}.tree-view-container::-webkit-scrollbar{width:4px}.tree-view-container::-webkit-scrollbar-track{background:var(--scrollbar-track)}.tree-view-container::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:2px}.tree-view-container ul{list-style:none;padding-left:1rem;margin:0}.tree-view-container ul li{padding:1px 0}.tree-view-container ul li span{cursor:pointer}.tree-view-container ul li span:hover{color:var(--accent-color);text-decoration:underline}.tree-view-container .highlighted-node{background:var(--accent-muted);border-radius:2px}.floor-plan-toolbar{padding:.35rem .6rem;flex-shrink:0}.floor-plan-toolbar .storey-select{width:100%}.fp-popout-toggle{display:flex;align-items:center;justify-content:center;width:22px;height:22px;border:1px solid var(--border-color);border-radius:var(--border-radius);background:var(--panel-bg);cursor:pointer;color:var(--text-secondary);flex-shrink:0;transition:background .15s,color .15s;margin-left:auto}.fp-popout-toggle:hover{color:var(--text-primary);background:var(--panel-bg-hover)}.fp-popout-toggle input{display:none}.fp-popout-toggle.active{background:var(--accent-color);color:#fff;border-color:var(--accent-color)}.storey-select{width:100%;padding:.35rem .5rem;font-family:var(--font-family);font-size:.78rem;border:1px solid var(--border-color);border-radius:var(--border-radius);background:var(--bg-color-secondary);color:var(--text-primary);cursor:pointer;outline:none}.storey-select:disabled{opacity:.5;cursor:not-allowed}.floor-plan-container{position:relative;flex:1;width:100%;background:var(--bg-color-secondary);overflow:hidden;cursor:crosshair}.floor-plan-container.loading:after{content:"Generating…";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:var(--bg-color-secondary);color:var(--text-secondary);font-size:.8rem;z-index:6}.floor-plan-img{width:100%;display:block;pointer-events:none}.floor-plan-overlay{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:4}.floor-plan-pointer{position:absolute;width:10px;height:10px;background:var(--danger-color);border:2px solid white;border-radius:50%;transform:translate(-50%,-50%);pointer-events:none;display:none;box-shadow:0 0 4px #0006;z-index:5}#myCanvas{position:absolute;top:var(--app-bar-height);left:0;right:0;bottom:0;width:100%;height:calc(100% - var(--app-bar-height));z-index:1}body.sidebar-open #myCanvas{left:var(--sidebar-width);width:calc(100% - var(--sidebar-width))}body.status-bar-visible #myCanvas{bottom:var(--status-bar-height);height:calc(100% - var(--app-bar-height) - var(--status-bar-height))}body.sidebar-open.status-bar-visible #myCanvas{left:var(--sidebar-width);width:calc(100% - var(--sidebar-width));bottom:var(--status-bar-height);height:calc(100% - var(--app-bar-height) - var(--status-bar-height))}#navcube-canvas{position:fixed;bottom:calc(var(--status-bar-height) + 1rem);right:1rem;width:100px;height:100px;z-index:10;pointer-events:auto;display:none}#navcube-arrow-overlay{position:fixed;bottom:calc(var(--status-bar-height) + 1rem);right:1rem;width:100px;height:100px;z-index:11;pointer-events:none;display:none}#overview-canvas{position:fixed;bottom:calc(var(--status-bar-height) + 1rem + 100px + .5rem);right:1rem;width:100px;height:100px;z-index:10;pointer-events:none;background:var(--panel-bg);border:1px solid var(--border-color);border-radius:var(--border-radius);box-shadow:var(--box-shadow)}.floating-panel{position:fixed;top:calc(var(--app-bar-height) + .5rem);right:.5rem;width:var(--floating-panel-width);background:var(--panel-bg);border:1px solid var(--border-color);border-radius:var(--border-radius);box-shadow:0 4px 16px #00000059;z-index:450;display:flex;flex-direction:column;max-height:calc(100vh - var(--app-bar-height) - var(--status-bar-height) - 1rem);overflow:hidden;opacity:1;transform:translateY(0);transition:opacity .15s ease,transform .15s ease}.floating-panel.hidden{display:none;opacity:0;transform:translateY(-8px)}.floating-panel-header{display:flex;align-items:center;gap:.35rem;padding:.4rem .6rem;border-bottom:1px solid var(--border-color);background:var(--bg-color-secondary);flex-shrink:0;font-size:.75rem;font-weight:600;color:var(--text-primary);-webkit-user-select:none;user-select:none}.floating-panel-header .kbd-hint{margin-right:auto}.floating-panel-close{display:flex;align-items:center;justify-content:center;width:20px;height:20px;padding:0;margin-left:auto;font-size:1rem;color:var(--text-secondary);background:none;border:1px solid transparent;border-radius:var(--border-radius);cursor:pointer;line-height:1;transition:all .15s}.floating-panel-close:hover{color:var(--danger-color);border-color:var(--danger-color);background:#f4433614}.floating-panel-body{padding:.5rem;overflow-y:auto;display:flex;flex-direction:column;gap:.35rem}.empty-state{font-size:.7rem;color:var(--text-muted);text-align:center;padding:.75rem .5rem;margin:0;font-style:italic;line-height:1.4}.status-bar{position:fixed;bottom:0;left:0;right:0;height:var(--status-bar-height);display:flex;align-items:center;gap:1.5rem;padding:0 .75rem;background:var(--panel-bg);border-top:1px solid var(--border-color);z-index:400}.status-bar.hidden{display:none}.status-bar-group{display:flex;align-items:center;gap:.4rem}.status-bar-label{font-size:.6rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;width:2.5rem;flex-shrink:0}.status-bar-slider{width:100px;height:3px;-webkit-appearance:none;appearance:none;background:var(--border-color);border-radius:0;outline:none;cursor:pointer}.status-bar-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:8px;height:8px;background:var(--accent-color);border-radius:0;cursor:pointer}.status-bar-slider::-moz-range-thumb{width:8px;height:8px;background:var(--accent-color);border:none;border-radius:0;cursor:pointer}.status-bar-val{font-size:.6rem;font-family:var(--font-mono);color:var(--text-secondary);width:2rem;text-align:right;flex-shrink:0}@media(max-width:480px){.status-bar{gap:.5rem;padding:0 .4rem}.status-bar-slider{width:60px}.status-bar-label{width:auto}}.overlay{position:fixed;top:var(--app-bar-height);left:0;width:100%;height:calc(100% - var(--app-bar-height));display:flex;justify-content:center;align-items:center;z-index:20;pointer-events:none}.overlay.hidden{display:none}.glass-panel{background:var(--panel-bg);border:1px solid var(--border-color);border-top:2px solid var(--accent-color);border-radius:var(--border-radius);padding:1.5rem;box-shadow:var(--box-shadow);pointer-events:auto;max-width:440px;width:90%}.text-center{text-align:center}h1,h3{margin-bottom:.5rem;font-weight:500}h4{font-weight:500;color:var(--text-primary)}p{color:var(--text-secondary);margin-bottom:1.5rem;line-height:1.5;font-size:.95rem}.upload-icon{color:var(--text-muted);margin-bottom:.35rem}.dropzone{border:1px solid var(--border-color);border-radius:var(--border-radius);padding:1.25rem 1rem;cursor:pointer;background:var(--surface-inset);transition:border-color .1s,box-shadow .1s}.dropzone:hover,.dropzone.drag-over{border-color:var(--accent-color);box-shadow:inset 0 0 0 1px var(--accent-color)}.dropzone-title{font-size:.85rem;font-weight:500;color:var(--text-primary);margin-bottom:.15rem}.dropzone-hint{font-size:.7rem;color:var(--text-muted)}.upload-actions{margin-top:.5rem}.file-load-header{text-align:left;margin-bottom:.75rem;padding-bottom:.5rem;border-bottom:1px solid var(--border-color)}.file-load-title{font-size:.8rem;font-weight:600;color:var(--text-primary);text-transform:uppercase;letter-spacing:.05em}.file-load-section-label{font-size:.6rem;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);text-align:left;margin:.75rem 0 .3rem;padding-left:.1rem}#file-input{display:none}.url-load-row{display:flex;gap:.35rem;width:100%}#url-input{flex:1;padding:.35rem .5rem;background:var(--surface-inset);border:1px solid var(--border-color);border-radius:var(--border-radius);color:var(--text-primary);font-size:.8rem;font-family:var(--font-mono);outline:none}#url-input:focus{border-color:var(--accent-color)}#url-input::placeholder{color:var(--text-muted)}.url-load-row .btn-primary{white-space:nowrap;padding:.35rem .75rem}.actions{display:flex;gap:.5rem;margin-top:.75rem;margin-bottom:.5rem}.kbd-hint{font-family:var(--font-mono);font-size:.55rem;padding:.05rem .2rem;border:1px solid var(--kbd-border);border-radius:2px;background:var(--kbd-bg);color:var(--kbd-color);margin-left:.2rem;vertical-align:middle;opacity:.5}.pov-actions button{padding:.4rem;font-size:.8rem;flex:1}.pov-altitude-row{display:flex;align-items:center;gap:.35rem}.pov-altitude-label{font-size:.75rem;color:var(--text-secondary);min-width:2.5rem}.altitude-slider{flex:1;cursor:pointer;accent-color:var(--accent-color)}.altitude-slider:disabled{opacity:.4;cursor:not-allowed}.pov-num-input{width:3.5rem;font-family:var(--font-mono);font-size:.8rem;color:var(--text-primary);background:var(--bg-color-secondary);border:1px solid var(--border-color);border-radius:var(--border-radius);padding:.15rem .3rem;text-align:right;-moz-appearance:textfield}.pov-num-input::-webkit-outer-spin-button,.pov-num-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.pov-num-input:disabled{opacity:.4;cursor:not-allowed}.pov-unit{font-size:.75rem;color:var(--text-secondary);min-width:.8rem}.slice-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.3rem}.slice-grid button{padding:.3rem;font-size:.8rem}.slider-container{display:flex;flex-direction:column;gap:.3rem;margin-bottom:.35rem}.slider-container label{font-size:.75rem;color:var(--text-secondary)}.btn-active{background-color:var(--accent-color)!important;color:#fff!important;border-color:var(--accent-color)!important}.btn-fp-active{background-color:var(--danger-color)!important;color:#fff!important;border-color:var(--danger-color)!important}.btn-slice-active{background-color:var(--slice-active-color)!important;color:#fff!important;border-color:var(--slice-active-color)!important}.btn-slice-selected{background-color:var(--danger-color)!important;color:#fff!important;border-color:var(--danger-color)!important}.viewpoints-list{display:flex;flex-direction:column;gap:.35rem}.viewpoint-item{display:flex;align-items:center;justify-content:space-between;padding:.45rem .65rem;background:var(--bg-color-secondary);border:1px solid var(--border-color);border-radius:var(--border-radius);font-size:.8rem;cursor:pointer;transition:background .15s}.viewpoint-item:hover{background:var(--panel-bg-hover)}.viewpoint-item .vp-name{font-weight:500}.viewpoint-item .vp-delete{background:none;border:none;cursor:pointer;color:var(--danger-color);font-size:.85rem;padding:0 .25rem;line-height:1}input[type=range]{-webkit-appearance:none;appearance:none;width:100%;background:transparent}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;height:14px;width:14px;border-radius:50%;background:var(--accent-color);cursor:pointer;margin-top:-5px;box-shadow:0 1px 3px #0000004d}input[type=range]::-webkit-slider-runnable-track{width:100%;height:4px;cursor:pointer;background:var(--border-color-strong);border-radius:var(--border-radius)}input[type=range]:disabled::-webkit-slider-thumb{background:var(--text-muted)}button{font-family:var(--font-family);font-weight:500;border:none;border-radius:var(--border-radius);padding:.4rem .75rem;cursor:pointer;transition:background .1s,border-color .1s,color .1s;font-size:.8rem}button:focus-visible{outline:1px solid var(--accent-color);outline-offset:1px}.btn-primary{background-color:var(--accent-color);color:#fff;border:1px solid var(--accent-color)}.btn-primary:hover{background-color:var(--accent-hover);border-color:var(--accent-hover)}.btn-secondary{background-color:var(--btn-secondary-bg);color:var(--text-primary);border:1px solid var(--btn-secondary-border)}.btn-secondary:hover{background-color:var(--btn-secondary-hover-bg);border-color:var(--border-color-strong)}.btn-danger{background-color:var(--danger-color);color:#fff;width:100%}.btn-danger:hover{background-color:var(--danger-hover)}.loading{position:fixed;bottom:calc(var(--status-bar-height) + 1rem);left:1rem;background:var(--panel-bg);padding:.5rem 1rem;border-radius:var(--border-radius);border:1px solid var(--border-color);border-left:2px solid var(--accent-color);display:flex;align-items:center;gap:.5rem;box-shadow:var(--box-shadow);color:var(--text-primary);font-weight:500;font-size:.75rem;pointer-events:auto;z-index:500}body.sidebar-open .loading{left:calc(var(--sidebar-width) + 1rem)}.loading.hidden{display:none}.spinner{width:14px;height:14px;border:2px solid var(--border-color);border-top-color:var(--accent-color);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}body.dragover:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:var(--overlay-color);z-index:100;pointer-events:none;border:2px solid var(--accent-color);box-sizing:border-box}.format-badge{display:inline-block;font-size:.55rem;font-family:var(--font-mono);font-weight:700;letter-spacing:.5px;padding:.05rem .3rem;border-radius:2px;text-transform:uppercase;vertical-align:middle}.format-badge.hidden{display:none}.format-ifc{background:#ffaa0026;color:#e6a000;border:1px solid rgba(255,170,0,.3)}.format-xkt{background:#00c87826;color:#00c878;border:1px solid rgba(0,200,120,.3)}.save-status{font-size:.6rem;font-family:var(--font-mono);color:var(--accent-color)}.save-status.hidden,#load-saved-btn.hidden,#download-xkt-btn.hidden,#download-ifc-btn.hidden,#convert-xkt-btn.hidden{display:none}.floor-plan-float{position:fixed;top:120px;width:320px;height:360px;min-width:200px;min-height:200px;background:var(--panel-bg);border:1px solid var(--border-color);border-radius:var(--border-radius);box-shadow:0 8px 32px #0006;z-index:600;display:flex;flex-direction:column;overflow:hidden;resize:both}.floor-plan-float.hidden{display:none}.floor-plan-float-header{display:flex;align-items:center;gap:.5rem;padding:.4rem .5rem;border-bottom:1px solid var(--border-color);cursor:grab;flex-shrink:0;-webkit-user-select:none;user-select:none}.floor-plan-float-header:active{cursor:grabbing}.floor-plan-float-header .storey-select-float{flex:1;font-size:.8rem;padding:.3rem .5rem;cursor:pointer}.floor-plan-float-body{flex:1;overflow:hidden;background:var(--bg-color-secondary);cursor:crosshair;position:relative;display:flex;align-items:center;justify-content:center}.help-panel{position:fixed;top:120px;left:400px;width:340px;max-height:420px;background:var(--panel-bg);border:1px solid var(--border-color);border-radius:var(--border-radius);box-shadow:0 8px 32px #0000004d;z-index:600;display:flex;flex-direction:column;overflow:hidden}.help-panel.hidden{display:none}.help-panel-header{display:flex;align-items:center;justify-content:space-between;padding:.6rem .85rem;background:var(--bg-color-secondary);border-bottom:1px solid var(--border-color);cursor:grab;-webkit-user-select:none;user-select:none}.help-panel-header:active{cursor:grabbing}.help-panel-title{font-weight:500;font-size:.85rem;color:var(--text-primary)}.help-panel-close{display:flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;font-size:1.1rem;font-weight:400;color:var(--text-secondary);background:none;border:1px solid transparent;border-radius:var(--border-radius);cursor:pointer;line-height:1;transition:all .15s}.help-panel-close:hover{color:var(--danger-color);border-color:var(--danger-color);background:#f4433614}.help-panel-body{padding:.85rem;overflow-y:auto;font-size:.8rem;line-height:1.55;color:var(--text-primary)}.help-panel-body h4{font-size:.82rem;margin-bottom:.35rem;margin-top:.65rem}.help-panel-body h4:first-child{margin-top:0}.help-panel-body p{font-size:.8rem;margin-bottom:.5rem;line-height:1.55;color:var(--text-secondary)}.help-panel-body ul{margin:0 0 .5rem 1.1rem;padding:0;color:var(--text-secondary);font-size:.8rem}.help-panel-body li{margin-bottom:.2rem}.help-panel-body kbd{display:inline-block;padding:.1rem .35rem;font-size:.72rem;font-family:var(--font-mono);background:var(--bg-color-secondary);border:1px solid var(--border-color);border-radius:2px}.btn-user-guide{width:28px;height:28px}.confirm-modal{position:fixed;inset:0;z-index:10000;display:flex;align-items:center;justify-content:center;animation:modal-fade-in .15s ease}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}.confirm-modal.hidden{display:none}.confirm-modal-backdrop{position:absolute;inset:0;background:#00000080}.confirm-modal-dialog{position:relative;background:var(--panel-bg);border:1px solid var(--border-color);border-radius:4px;padding:1rem 1.25rem;min-width:320px;max-width:400px;box-shadow:0 8px 32px #0006;animation:modal-dialog-in .15s ease}@keyframes modal-dialog-in{0%{opacity:0;transform:scale(.95) translateY(-10px)}to{opacity:1;transform:scale(1) translateY(0)}}.confirm-modal-header{font-size:.85rem;font-weight:600;color:var(--text-primary);margin-bottom:.5rem}.confirm-modal-message{font-size:.8rem;color:var(--text-secondary);margin:0 0 1rem;line-height:1.4}.confirm-modal-actions{display:flex;gap:.5rem;justify-content:flex-end}.confirm-modal-actions .btn-secondary,.confirm-modal-actions .btn-danger{padding:.35rem .85rem;font-size:.78rem;border-radius:3px;cursor:pointer}.tool-wheel{position:fixed;z-index:520;width:200px;height:200px;transform:translate(-50%,-50%);pointer-events:none}.tool-wheel.hidden{display:none}.tool-wheel-ring{position:absolute;inset:0;border-radius:50%;overflow:hidden;box-shadow:0 4px 24px #0006;pointer-events:auto}.tool-wheel-center{position:absolute;width:52px;height:52px;border-radius:50%;background:var(--panel-bg);border:2px solid var(--border-color);top:50%;left:50%;transform:translate(-50%,-50%);z-index:2;pointer-events:auto}.tool-wheel-sector{position:absolute;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:var(--panel-bg);cursor:pointer;transition:background .1s;pointer-events:auto}.tool-wheel-sector[data-pos=top]{clip-path:polygon(50% 50%,0 0,100% 0)}.tool-wheel-sector[data-pos=right]{clip-path:polygon(50% 50%,100% 0,100% 100%)}.tool-wheel-sector[data-pos=bottom]{clip-path:polygon(50% 50%,100% 100%,0 100%)}.tool-wheel-sector[data-pos=left]{clip-path:polygon(50% 50%,0 100%,0 0)}.tool-wheel-sector.active,.tool-wheel-sector:hover{background:var(--accent-color)}.tool-wheel-sector.active .tool-wheel-label,.tool-wheel-sector:hover .tool-wheel-label{color:#fff}.tool-wheel-sector.active svg,.tool-wheel-sector:hover svg{stroke:#fff}.tool-wheel-label{position:absolute;display:flex;flex-direction:column;align-items:center;gap:2px;font-family:var(--font-family);font-size:.65rem;font-weight:500;color:var(--text-primary);pointer-events:none;-webkit-user-select:none;user-select:none}.tool-wheel-sector[data-pos=top] .tool-wheel-label{top:18%;left:50%;transform:translate(-50%)}.tool-wheel-sector[data-pos=right] .tool-wheel-label{top:50%;right:14%;transform:translateY(-50%)}.tool-wheel-sector[data-pos=bottom] .tool-wheel-label{bottom:18%;left:50%;transform:translate(-50%)}.tool-wheel-sector[data-pos=left] .tool-wheel-label{top:50%;left:8%;transform:translateY(-50%)}.tool-wheel-ring:after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(to bottom right,transparent calc(50% - .5px),var(--border-color-strong) calc(50% - .5px),var(--border-color-strong) calc(50% + .5px),transparent calc(50% + .5px)),linear-gradient(to top right,transparent calc(50% - .5px),var(--border-color-strong) calc(50% - .5px),var(--border-color-strong) calc(50% + .5px),transparent calc(50% + .5px))}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:0}::selection{background:var(--accent-muted);color:var(--text-primary)}input:focus-visible,select:focus-visible{outline:1px solid var(--accent-color);outline-offset:0}.toast-container{position:fixed;bottom:40px;left:50%;transform:translate(-50%);display:flex;flex-direction:column-reverse;gap:.5rem;z-index:10001;pointer-events:none}.toast{pointer-events:auto;display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border-radius:var(--border-radius);font-size:.75rem;color:var(--text-primary);background:var(--panel-bg);border:1px solid var(--border-color);box-shadow:var(--box-shadow);animation:toast-in .2s ease;max-width:420px;line-height:1.4}.toast.toast-error{border-left:3px solid var(--danger-color)}.toast.toast-success{border-left:3px solid #4caf50}.toast.toast-info{border-left:3px solid var(--accent-color)}.toast-dismiss{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:1rem;padding:0 0 0 .5rem;line-height:1;flex-shrink:0}.toast-dismiss:hover{color:var(--text-primary)}@keyframes toast-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes toast-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(10px)}}.loading-content{display:flex;align-items:center;gap:.5rem}.loading-progress-track{width:200px;height:3px;background:var(--border-color);border-radius:2px;margin-top:.5rem;overflow:hidden}.loading-progress-bar{height:100%;background:var(--accent-color);border-radius:2px;width:0%;transition:width .3s ease}.loading-progress-bar.indeterminate{width:30%;animation:indeterminate 1.5s ease-in-out infinite}@keyframes indeterminate{0%{transform:translate(-100%)}to{transform:translate(400%)}}body.theme-transitioning,body.theme-transitioning *,body.theme-transitioning *:before,body.theme-transitioning *:after{transition:background-color .2s ease,color .2s ease,border-color .2s ease,box-shadow .2s ease!important}.status-bar-tool-indicator{display:flex;align-items:center;gap:.25rem;padding:0 .5rem;border-left:1px solid var(--border-color);margin-left:auto}.status-bar-tool-name{font-size:.65rem;color:var(--accent-color);font-weight:500;text-transform:uppercase;letter-spacing:.03em}.status-bar-tool-cancel{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:.85rem;padding:0;line-height:1}.status-bar-tool-cancel:hover{color:var(--danger-color)}
