@import url(https://fonts.googleapis.com/css2?family=Google+Sans:wght@300;400;500;600;700&display=swap);:root{--primary-color:#58a6ff;--secondary-color:#238636;--secondary-text-color:#ffffff;--primary-hover:#79b8ff;--secondary-hover:#2ea043;--primary-muted:rgba(88, 166, 255, 0.2);--secondary-muted:rgba(35, 134, 54, 0.2);--primary-dark:rgba(88, 166, 255, 0.08);--header-text:#ffffff;--header-btn-bg:rgba(255, 255, 255, 0.15);--header-btn-border:rgba(255, 255, 255, 0.25);--header-btn-hover:rgba(255, 255, 255, 0.25);--bg-base:#0d1117;--bg-surface:#161b22;--bg-elevated:#21262d;--border-color:#30363d;--text-primary:#f0f6fc;--text-secondary:#c9d1d9;--text-muted:#8b949e;--shadow-color:rgba(0, 0, 0, 0.5);--input-bg:#0d1117;--input-border:#30363d}:root[data-theme=light]{--bg-base:#f6f8fa;--bg-surface:#ffffff;--bg-elevated:#f0f2f5;--border-color:#d0d7de;--text-primary:#1f2328;--text-secondary:#424a53;--text-muted:#656d76;--shadow-color:rgba(0, 0, 0, 0.12);--input-bg:#ffffff;--input-border:#b0b8c1}:root{--layer-panel-width:320px;--chat-panel-width:500px;--layer-rail-width:56px;--map-left-offset:var(--layer-panel-width)}body:has(.layer-panel.collapsed){--map-left-offset:var(--layer-rail-width)}body.chat-left:has(.chat-panel.open){--map-left-offset:calc(var(--layer-panel-width) + var(--chat-panel-width))}body.chat-left:has(.chat-panel.open):has(.layer-panel.collapsed){--map-left-offset:calc(var(--layer-rail-width) + var(--chat-panel-width))}@layer base{*{margin:0;padding:0;box-sizing:border-box}}@layer base{*{scrollbar-width:thin;scrollbar-color:rgba(139,148,158,0.25) transparent}}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:rgba(139,148,158,.25);border-radius:100px}::-webkit-scrollbar-thumb:hover{background:rgba(139,148,158,.45)}::-webkit-scrollbar-corner{background:0 0}[data-tip]{position:relative}[data-tip]::after{content:attr(data-tip);position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%) translateY(4px);background:var(--bg-elevated);color:var(--text-primary);font-size:11px;font-weight:500;padding:5px 10px;border-radius:6px;white-space:nowrap;border:1px solid var(--border-color);box-shadow:0 4px 16px rgba(0,0,0,.35);opacity:0;pointer-events:none;transition:all .2s cubic-bezier(.16, 1, .3, 1);z-index:9999}[data-tip]::before{content:'';position:absolute;bottom:calc(100% + 4px);left:50%;transform:translateX(-50%) translateY(4px);border:5px solid transparent;border-top-color:var(--bg-elevated);opacity:0;pointer-events:none;transition:all .2s cubic-bezier(.16, 1, .3, 1);z-index:9999}[data-tip]:hover::after,[data-tip]:hover::before{opacity:1;transform:translateX(-50%) translateY(0)}input:focus,select:focus,textarea:focus{outline:0;border-color:var(--primary-color)!important;box-shadow:0 0 0 3px var(--primary-muted),0 0 0 1px rgba(88,166,255,.3)}body{font-family:'Google Sans','Product Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif;overflow:hidden;background:var(--bg-base);color:var(--text-secondary)}.auth-container{display:flex;justify-content:center;align-items:center;min-height:100vh;background:var(--bg-base);padding:20px}.auth-box{background:var(--bg-surface);padding:40px;border-radius:15px;box-shadow:0 20px 60px var(--shadow-color);width:fit-content;min-width:400px;max-width:90vw;border:1px solid var(--border-color)}.app-branding{text-align:center;margin-bottom:24px;padding-bottom:20px;border-bottom:1px solid var(--border-color)}.app-name{font-size:2.5rem;font-weight:600;letter-spacing:-.5px;margin-bottom:8px;animation:fadeInUp .8s ease-out}.app-name .geo{color:var(--primary-color);display:inline-block;animation:slideInLeft .6s ease-out}.app-name .sphere{color:#7ee787;display:inline-block;animation:slideInRight .6s ease-out .2s both}.app-tagline{font-size:.85rem;color:var(--text-muted);letter-spacing:2px;text-transform:uppercase;font-weight:400;animation:fadeIn 1s ease-out .5s both}@keyframes fadeInUp{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInLeft{from{opacity:0;transform:translateX(-20px)}to{opacity:1;transform:translateX(0)}}@keyframes slideInRight{from{opacity:0;transform:translateX(20px)}to{opacity:1;transform:translateX(0)}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}.auth-box h2{color:var(--text-secondary);margin-bottom:24px;text-align:center;font-size:1.1rem;font-weight:400}.form-group{margin-bottom:20px}.form-group label{display:block;margin-bottom:8px;color:var(--text-primary);font-weight:500;font-size:15px}.form-group input,.form-group select,.form-group textarea{width:100%;padding:12px;border:1px solid var(--input-border);border-radius:8px;font-size:15px;box-sizing:border-box;font-family:inherit;background:var(--input-bg);color:var(--text-primary)}.form-group textarea{resize:vertical;min-height:60px}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:0;border-color:var(--secondary-color)}.btn{padding:12px 24px;border:none;border-radius:8px;font-size:16px;font-weight:600;cursor:pointer;transition:all .3s}.btn-primary{background:var(--secondary-color);color:var(--secondary-text-color);width:100%}.btn-primary:hover{transform:translateY(-2px);box-shadow:0 5px 15px var(--secondary-muted);background:var(--secondary-hover)}.btn-dashboard:active,.btn-logout:active,.btn-table:active,.btn-upload:active,.btn:active,.type-btn:active,.type-toggle-btn:active{transform:scale(.96) translateY(0)!important;box-shadow:0 1px 3px rgba(0,0,0,.2)!important;transition-duration:80ms!important}.btn-secondary{background:var(--bg-elevated);color:var(--text-secondary);margin-top:10px;width:100%;border:1px solid var(--border-color)}.btn-secondary:hover{background:var(--border-color)}.error-message{background:#3d1e1e;color:#f85149;padding:10px;border-radius:5px;margin-bottom:15px;display:none;border:1px solid #6e2c2c}.success-message{background:#1e3d1e;color:#3fb950;padding:10px;border-radius:5px;margin-bottom:15px;display:none;border:1px solid #2c6e2c}.auth-switch{text-align:center;margin-top:20px;color:var(--text-muted)}.auth-switch a{color:var(--secondary-color);text-decoration:none;font-weight:600}.auth-switch a:hover{text-decoration:underline}.auth-footer{text-align:center;margin-top:20px;padding-top:15px;border-top:1px solid var(--border-color);font-size:11px;color:var(--text-muted)}.auth-footer span a{color:var(--text-muted);text-decoration:none;transition:color .3s}.auth-footer span a:hover{color:var(--primary-color)}.auth-footer a{color:var(--text-muted);text-decoration:none;font-size:12px;transition:color .3s}.auth-footer a:hover{color:var(--secondary-color)}.layer-panel-footer{padding:10px 15px;text-align:center;border-top:1px solid var(--border-color);background:var(--bg-base);margin-top:auto;font-size:11px;color:var(--text-muted)}.layer-panel-footer a{color:var(--text-muted);text-decoration:none;font-size:11px;transition:color .3s}.layer-panel-footer a:hover{color:var(--primary-color)}.map-container{display:none;width:100vw;height:100vh;position:relative}.map-header{position:absolute;top:0;left:0;right:0;height:60px;background:var(--header-bg,#161b22);backdrop-filter:blur(10px);box-shadow:0 2px 10px var(--shadow-color);display:flex;justify-content:space-between;align-items:center;padding:0 20px;z-index:1000;border-bottom:none}.map-header h1{color:var(--header-text);font-size:22px;display:flex;align-items:center;gap:10px}.globe-spin{height:30px;width:30px;vertical-align:middle}.header-actions{display:flex;align-items:center;gap:15px}.btn-upload{background:var(--secondary-color);color:#fff;padding:10px 20px;border-radius:8px;border:none;cursor:pointer;font-weight:600;font-size:14px;transition:all .3s}.btn-upload:hover{background:var(--secondary-hover);transform:translateY(-2px)}.user-menu{display:flex;align-items:center;gap:10px}.user-name{font-weight:600;color:var(--header-text)}.btn-logout{background:#da3633;color:#fff;padding:8px 16px;border:none;border-radius:6px;cursor:pointer;font-weight:500;font-size:14px}.btn-logout:hover{background:#f85149}.btn-dashboard{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:8px;background:var(--header-btn-bg);border:1px solid var(--header-btn-border);color:var(--header-text);text-decoration:none;font-size:18px;transition:all .3s}.btn-dashboard:hover{background:var(--header-btn-hover);border-color:var(--header-btn-border)}.layer-panel{position:absolute;left:0;top:60px;bottom:0;width:var(--layer-panel-width);background:var(--bg-base);backdrop-filter:blur(10px);box-shadow:2px 0 10px var(--shadow-color);z-index:900;display:flex;flex-direction:column;transition:transform .3s ease,width .3s ease;border-right:1px solid var(--border-color)}.layer-panel.collapsed{transform:translateX(-100%)}.layer-panel-rail{position:absolute;left:0;top:60px;bottom:0;width:var(--layer-rail-width);background:var(--bg-base);border-right:1px solid var(--border-color);box-shadow:2px 0 10px var(--shadow-color);z-index:895;display:none;flex-direction:column;align-items:stretch;padding:10px 0;overflow:hidden}.layer-panel.collapsed~.layer-panel-rail{display:flex}.layer-rail-action-btn,.layer-rail-expand-btn{width:36px;height:36px;margin:4px auto;background:0 0;border:1px solid var(--border-color);border-radius:8px;cursor:pointer;color:var(--text-secondary,#c9d1d9);font-size:14px;display:flex;align-items:center;justify-content:center;transition:background .15s,color .15s,transform .15s,border-color .15s;padding:0}.layer-rail-action-btn:hover,.layer-rail-expand-btn:hover{background:var(--primary-muted,rgba(88,166,255,.12));color:var(--primary-color,#58a6ff);border-color:var(--primary-color,#58a6ff);transform:scale(1.05)}.layer-rail-divider{height:1px;background:var(--border-color);margin:8px 10px;flex-shrink:0}.layer-rail-list{flex:1 1 auto;overflow-y:auto;overflow-x:hidden;padding:2px 0 8px;display:flex;flex-direction:column;align-items:center;gap:4px;scrollbar-width:thin}.layer-rail-list::-webkit-scrollbar{width:4px}.layer-rail-list::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:2px}.layer-rail-item{position:relative;width:44px;height:44px;border-radius:10px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:20px;background:0 0;border:1px solid transparent;border-left:3px solid transparent;transition:background .15s,border-color .15s,transform .15s;flex-shrink:0;user-select:none;opacity:.85}.layer-rail-item .rail-item-icon{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;line-height:0;color:var(--text-primary,#e6edf3)}.layer-rail-item .rail-item-icon svg{display:block}.layer-rail-item:hover .rail-item-icon{color:var(--rail-accent,var(--primary-color,#58a6ff))}.layer-rail-item:hover{background:rgba(255,255,255,.06);border-color:var(--border-color);border-left-color:var(--rail-accent,var(--primary-color,#58a6ff));transform:scale(1.04);opacity:1}.layer-rail-item .rail-item-count{position:absolute;right:-2px;top:-2px;min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:var(--rail-accent,var(--primary-color,#58a6ff));color:#fff;font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center;line-height:1;box-shadow:0 0 0 2px var(--bg-base);pointer-events:none}.layer-rail-inner-divider{height:1px;background:var(--border-color);margin:8px 10px;flex-shrink:0;opacity:.6}#externalLayersSection.rail-highlight,#streetViewLayersSection.rail-highlight,.layer-panel [id^=section-].rail-highlight{animation:railHighlightPulse 1.4s ease-out;border-radius:6px}.layer-rail-item .rail-item-tooltip{position:absolute;left:calc(100% + 10px);top:50%;transform:translateY(-50%);background:var(--bg-elevated,#21262d);color:var(--text-primary,#e6edf3);border:1px solid var(--border-color);padding:6px 10px;border-radius:6px;font-size:12px;white-space:nowrap;pointer-events:none;opacity:0;transition:opacity .12s ease-out;z-index:1000;max-width:280px;overflow:hidden;text-overflow:ellipsis;box-shadow:0 4px 12px var(--shadow-color)}.layer-rail-item:hover .rail-item-tooltip{opacity:1}.layer-rail-footer{border-top:1px solid var(--border-color);padding:8px 0 4px;flex-shrink:0}.layer-rail-empty{color:var(--text-muted,#6e7681);font-size:10px;text-align:center;padding:12px 6px;line-height:1.4;opacity:.7}@keyframes railHighlightPulse{0%{background-color:rgba(88,166,255,.3);box-shadow:0 0 0 2px rgba(88,166,255,.45)}60%{background-color:rgba(88,166,255,.12);box-shadow:0 0 0 2px rgba(88,166,255,.18)}100%{background-color:transparent;box-shadow:none}}.layer-item.rail-highlight{animation:railHighlightPulse 1.4s ease-out;border-radius:8px}.layer-panel-resize-handle{position:absolute;right:-4px;top:0;bottom:0;width:8px;cursor:col-resize;z-index:901;background:0 0;transition:background .15s}.layer-panel-resize-handle.active,.layer-panel-resize-handle:hover{background:var(--primary-muted)}.layer-panel-resize-handle::after{content:'';position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:3px;height:40px;border-radius:2px;background:var(--primary-muted);transition:background .15s}.layer-panel-resize-handle.active::after,.layer-panel-resize-handle:hover::after{background:var(--secondary-color)}.layer-panel-header{padding:15px 20px;border-bottom:1px solid var(--border-color);display:flex;justify-content:space-between;align-items:center}.layer-panel-header-left{display:flex;align-items:center;gap:10px}.layer-panel-header h3{color:var(--text-secondary);margin:0}.btn-upload-small{width:28px;height:28px;border-radius:6px;background:var(--secondary-color);color:#fff;border:none;cursor:pointer;font-size:18px;font-weight:700;display:flex;align-items:center;justify-content:center;transition:all .3s}.btn-upload-small:hover{background:var(--secondary-hover);transform:scale(1.05)}.layer-panel-tabs{display:flex;border-bottom:1px solid var(--border-color);background:var(--bg-surface)}.layer-tab{flex:1;padding:12px 15px;background:0 0;border:none;color:var(--text-muted);font-size:13px;font-weight:500;cursor:pointer;transition:all .3s;border-bottom:2px solid transparent}.layer-tab:hover{color:var(--text-secondary);background:var(--bg-elevated)}.layer-tab.active{color:var(--text-primary);border-bottom-color:var(--secondary-color);background:var(--bg-base)}.layer-tab-content{flex:1;overflow-y:auto;display:none;flex-direction:column}.layer-tab-content.active{display:flex}.basemap-options{padding:15px;display:flex;flex-direction:column;gap:20px}.basemap-section h4{color:var(--text-secondary);font-size:13px;font-weight:600;margin:0 0 12px 0;padding-bottom:8px;border-bottom:1px solid var(--bg-elevated)}.basemap-item{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--bg-surface);border:1px solid var(--border-color);border-radius:8px;cursor:pointer;transition:all .3s;margin-bottom:8px}.basemap-item:hover{background:var(--bg-elevated);border-color:var(--secondary-color)}.basemap-item input[type=radio]{accent-color:var(--secondary-color)}.basemap-item label{color:var(--text-secondary);font-size:13px;cursor:pointer;flex:1}.custom-wms-list{margin-bottom:15px}.custom-wms-item{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:var(--bg-surface);border:1px solid var(--border-color);border-radius:6px;margin-bottom:8px}.custom-wms-item span{color:var(--text-secondary);font-size:12px;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.custom-wms-item button{background:#da3633;color:#fff;border:none;border-radius:4px;padding:4px 8px;font-size:11px;cursor:pointer;margin-left:8px}.add-wms-form{display:flex;flex-direction:column;gap:8px}.wms-input{padding:10px 12px;background:var(--input-bg);border:1px solid var(--input-border);border-radius:6px;color:var(--text-secondary);font-size:12px}.wms-input:focus{outline:0;border-color:var(--secondary-color)}.btn-add-wms{padding:10px 15px;background:var(--secondary-color);color:#fff;border:none;border-radius:6px;font-size:13px;font-weight:500;cursor:pointer;transition:all .3s}.btn-add-wms:hover{background:var(--secondary-hover)}.wms-input option{background:var(--bg-base);color:var(--text-secondary)}.layer-select-dropdown{position:absolute;top:100%;left:0;right:0;max-height:200px;overflow-y:auto;background:var(--bg-elevated);border:1px solid var(--input-border);border-top:none;border-radius:0 0 6px 6px;z-index:100;box-shadow:0 4px 12px rgba(0,0,0,.3)}.layer-select-option{padding:8px 12px;cursor:pointer;font-size:12px;border-bottom:1px solid var(--border-color)}.layer-select-option:last-child{border-bottom:none}.layer-select-option:hover{background:var(--bg-surface)}.layer-select-option .layer-option-id{color:var(--text-primary);font-weight:500}.layer-select-option .layer-option-title{color:var(--text-muted);font-size:11px;margin-top:2px}.custom-wms-item .service-badge{font-size:10px;padding:2px 6px;border-radius:3px;margin-left:6px;font-weight:500;flex-shrink:0}.service-badge.wms{background:#1f6feb;color:#fff}.service-badge.wmts{background:#8b5cf6;color:#fff}.layer-panel-header h3+span{color:var(--text-secondary);font-size:18px}.btn-toggle-panel{background:0 0;border:none;cursor:pointer;font-size:20px;color:var(--text-secondary)}.layer-list{flex:1;overflow-y:auto;padding:10px}.layer-item{background:var(--bg-surface);border:1px solid var(--border-color);border-left:3px solid transparent;border-radius:10px;padding:15px;margin-bottom:10px;transition:all .25s cubic-bezier(.16, 1, .3, 1);cursor:pointer}.layer-item:hover{border-color:var(--border-color);border-left-color:var(--secondary-color);background:rgba(35,134,54,.02);transform:translateX(2px);box-shadow:0 4px 16px rgba(0,0,0,.15)}.layer-item.active{background:var(--bg-surface)}.drag-handle{cursor:grab;color:var(--text-muted);font-size:14px;flex-shrink:0;padding:2px 2px;user-select:none;line-height:1;letter-spacing:1px}.drag-handle:hover{color:var(--text-secondary)}.drag-handle:active{cursor:grabbing}.layer-item.dragging{opacity:.4;border-style:dashed;border-color:var(--secondary-color)}.layer-item.drag-over-top{border-top:2px solid var(--secondary-color)!important;padding-top:6px}.layer-item.drag-over-bottom{border-bottom:2px solid var(--secondary-color)!important;padding-bottom:6px}.layer-item.selected{border-color:var(--secondary-color);border-width:2px;padding:14px;background:color-mix(in srgb,var(--secondary-color) 14%,var(--bg-surface));color:var(--text-primary)}.layer-item.selected .layer-name{color:var(--text-primary)}.layer-group{background:var(--bg-base);border:1px solid var(--border-color);border-left:3px solid #667eea;border-radius:8px;margin-bottom:8px;overflow:hidden}.layer-group.dragging{opacity:.4;border-style:dashed}.layer-group.drag-over-top{border-top:2px solid var(--secondary-color)!important}.layer-group.drag-over-bottom{border-bottom:2px solid var(--secondary-color)!important}.layer-group-header{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--bg-surface);cursor:default}.layer-group-header .group-collapse-toggle{font-size:10px;color:var(--text-muted);width:14px;text-align:center}.layer-group-header .group-name{font-size:13px;font-weight:600;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}.layer-group-body{padding:4px 4px 4px 16px}.layer-group-body .layer-item{margin-bottom:3px;border-radius:6px}.drop-indicator{height:2px;background:var(--secondary-color);border-radius:1px;margin:-1px 0;pointer-events:none}.layer-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.layer-name{font-weight:600;color:var(--text-secondary);font-size:15px}.layer-toggle{display:flex;align-items:center;gap:8px}.toggle-switch{position:relative;width:44px;height:24px;background:0 0;border:2px solid #5a6170;border-radius:12px;cursor:pointer;transition:all .25s cubic-bezier(.4, 0, .2, 1)}.toggle-switch.on{background:var(--secondary-color);border-color:var(--secondary-color)}.toggle-switch::after{content:'';position:absolute;top:50%;left:4px;width:16px;height:16px;background:#8b949e;border-radius:50%;transform:translateY(-50%);transition:all .25s cubic-bezier(.4, 0, .2, 1)}.toggle-switch.on::after{left:calc(100% - 20px);width:18px;height:18px;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.25)}.layer-info{font-size:13px;color:var(--text-muted)}.layer-actions{display:flex;gap:8px;margin-top:10px}.btn-layer-action{flex:1;padding:6px;border:1px solid var(--border-color);border-radius:6px;font-size:12px;cursor:pointer;transition:all .3s;background:var(--bg-elevated);color:var(--text-secondary)}.btn-layer-action:hover{background:var(--border-color)}.btn-layer-action.danger{background:#3d1e1e;color:#f85149;border-color:#6e2c2c}.btn-layer-action.danger:hover{background:#4d2525}#mapWrapper{position:absolute;left:var(--layer-panel-width);top:60px;right:0;bottom:0;display:flex;transition:left .3s ease,right .3s ease,bottom .25s ease}#mapWrapper.full-width{left:var(--layer-rail-width)}#mapWrapper.chat-open{right:var(--chat-panel-width)}#mapWrapper.attr-panel-open{bottom:300px}#mapWrapper.attr-panel-expanded{bottom:50vh}#map-left{flex:1;position:relative;min-width:0}#map-right{flex:1;position:relative;min-width:0}.split-divider{width:5px;background:var(--border-color);cursor:col-resize;flex-shrink:0;position:relative;z-index:10}.split-divider.dragging,.split-divider:hover{background:var(--secondary-color)}.split-pane-label{position:absolute;top:10px;left:50%;transform:translateX(-50%);background:var(--bg-base);color:var(--text-muted);padding:4px 14px;border-radius:12px;font-size:12px;font-weight:600;z-index:5;pointer-events:none;text-transform:uppercase;letter-spacing:1px}.layer-side-badge{display:inline-block;font-size:9px;font-weight:700;padding:1px 6px;border-radius:4px;margin-left:6px;text-transform:uppercase;letter-spacing:.5px;vertical-align:middle}.layer-side-badge.left{background:#1f6feb;color:#fff}.layer-side-badge.right{background:#da3633;color:#fff}.split-route-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:1999}.split-route-dialog{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:var(--bg-surface);border:1px solid var(--border-color);border-radius:12px;padding:24px;z-index:2000;box-shadow:0 16px 48px var(--shadow-color);text-align:center;min-width:300px}.split-route-dialog h3{color:#e6edf3;margin:0 0 8px;font-size:16px}.split-route-dialog .route-layer-name{color:var(--text-muted);font-size:13px;margin-bottom:20px}.split-route-dialog .route-buttons{display:flex;gap:12px;justify-content:center}.split-route-dialog .route-btn{padding:10px 28px;border-radius:8px;border:1px solid var(--border-color);cursor:pointer;font-weight:600;font-size:14px;transition:all .2s}.split-route-dialog .route-btn:hover{transform:translateY(-1px);box-shadow:0 4px 12px var(--shadow-color)}.split-route-dialog .route-btn.left{background:#1f6feb;color:#fff;border-color:#388bfd}.split-route-dialog .route-btn.right{background:#da3633;color:#fff;border-color:#f85149}.analysis-target-control{position:absolute;bottom:10px;left:50%;transform:translateX(-50%);background:var(--bg-base);border:1px solid var(--border-color);border-radius:8px;padding:6px 10px;display:flex;align-items:center;gap:6px;z-index:5;font-size:11px;color:var(--text-muted)}.analysis-target-control span{font-weight:600}.analysis-target-control .target-btn{padding:3px 10px;border-radius:4px;border:1px solid var(--border-color);background:var(--bg-elevated);color:var(--text-muted);cursor:pointer;font-size:11px;transition:all .2s}.analysis-target-control .target-btn:hover{border-color:var(--secondary-color);color:#e6edf3}.analysis-target-control .target-btn.active{background:var(--secondary-color);border-color:var(--secondary-hover);color:#fff}#splitViewBtn.active{background:var(--secondary-color);border-color:var(--secondary-hover);color:#fff}.ask-ai-btn{position:absolute;bottom:30px;right:30px;width:60px;height:60px;background:var(--secondary-color);border-radius:50%;border:2px solid var(--secondary-hover);cursor:pointer;box-shadow:0 4px 20px var(--secondary-muted);z-index:800;display:flex;align-items:center;justify-content:center;transition:all .3s;color:#fff;font-size:24px}.ask-ai-btn:hover{transform:scale(1.1);box-shadow:0 6px 30px var(--secondary-muted);background:var(--secondary-hover)}.ask-ai-btn.chat-open{right:calc(var(--chat-panel-width) + 30px)}.chat-panel{position:absolute;right:0;top:60px;bottom:0;width:var(--chat-panel-width);background:var(--bg-base);box-shadow:-2px 0 10px var(--shadow-color);z-index:850;display:flex;flex-direction:column;transform:translateX(100%);transition:transform .3s ease,width .3s ease;border-left:1px solid var(--border-color);overflow:hidden;font-family:Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif}#chatThreeCanvas{position:absolute;top:0;left:0;width:100%;height:100%;z-index:0;pointer-events:none;opacity:.6}.chat-canvas-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(7,11,20,.2);z-index:0;pointer-events:none}.chat-panel.open{transform:translateX(0)}.chat-panel-resize-handle{position:absolute;left:-4px;top:0;bottom:0;width:8px;cursor:col-resize;z-index:851;background:0 0;transition:background .15s}.chat-panel-resize-handle.active,.chat-panel-resize-handle:hover{background:var(--primary-muted)}.chat-panel-resize-handle::after{content:'';position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:3px;height:40px;border-radius:2px;background:var(--primary-muted);transition:background .15s}.chat-panel-resize-handle.active::after,.chat-panel-resize-handle:hover::after{background:var(--secondary-color)}.panel-resizing #cesiumContainer,.panel-resizing #mapWrapper,.panel-resizing #potreeContainer,.panel-resizing .ask-ai-btn,.panel-resizing .attribute-table-panel,.panel-resizing .chat-panel,.panel-resizing .layer-panel,.panel-resizing .measurement-tools,.panel-resizing .potree-measurement-tools,.panel-resizing .selection-tools,.panel-resizing .view-toggle-tools{transition:none!important}body.chat-left .chat-panel{left:var(--layer-panel-width);right:auto;transform:translateX(-100%);border-left:none;border-right:1px solid var(--border-color);box-shadow:2px 0 10px var(--shadow-color);transition:transform .3s ease,width .3s ease,left .3s ease}body.chat-left .chat-panel.open{transform:translateX(0)}body.chat-left:has(.layer-panel.collapsed) .chat-panel{left:var(--layer-rail-width)}body.chat-left .chat-panel-resize-handle{left:auto;right:-4px}body.chat-left #cesiumContainer.chat-open,body.chat-left #mapWrapper.chat-open,body.chat-left #potreeContainer.chat-open{left:calc(var(--layer-panel-width) + var(--chat-panel-width));right:0}body.chat-left #cesiumContainer.chat-open.full-width,body.chat-left #mapWrapper.chat-open.full-width,body.chat-left #potreeContainer.chat-open.full-width{left:calc(var(--layer-rail-width) + var(--chat-panel-width));right:0}body.chat-left .attribute-table-panel.chat-open{left:calc(var(--layer-panel-width) + var(--chat-panel-width));right:0}body.chat-left .attribute-table-panel.chat-open.sidebar-collapsed,body.chat-left .layer-panel.collapsed~.attribute-table-panel.chat-open{left:calc(var(--layer-rail-width) + var(--chat-panel-width));right:0}body.chat-left .ask-ai-btn{right:auto;left:calc(var(--map-left-offset) + 30px);bottom:190px}body.chat-left .ask-ai-btn.attr-panel-open{bottom:490px}body.chat-left .ask-ai-btn.attr-panel-expanded{bottom:calc(50vh + 190px)}body.chat-left .ask-ai-btn.timeline-open{bottom:280px}body.chat-left .ask-ai-btn.attr-panel-open.timeline-open{bottom:580px}body.chat-left .ask-ai-btn.attr-panel-expanded.timeline-open{bottom:calc(50vh + 280px)}.chat-position-toggle{background:0 0;border:1px solid var(--header-btn-border,var(--border-color,#30363d));color:var(--header-text,#c9d1d9);width:30px;height:30px;border-radius:6px;cursor:pointer;font-size:16px;line-height:1;display:inline-flex;align-items:center;justify-content:center;transition:background .15s,color .15s,transform .2s;padding:0}.chat-position-toggle:hover{background:var(--header-btn-hover,rgba(255,255,255,.06));color:var(--header-text,#58a6ff);transform:scale(1.05)}body.chat-left .chat-position-toggle .chat-position-icon{transform:scaleX(-1);display:inline-block}.chat-header{padding:20px;border-bottom:none;display:flex;justify-content:space-between;align-items:center;background:var(--header-bg,#161b22);color:var(--header-text);position:relative;z-index:1}.chat-header h3{font-size:18px;color:var(--text-muted)}.btn-close-chat{background:0 0;border:none;color:var(--secondary-text-color);font-size:24px;cursor:pointer;line-height:1}.chat-messages{flex:1;overflow-y:auto;padding:20px;background:0 0;position:relative;z-index:1}.chat-message{margin-bottom:15px;padding:12px 16px;border-radius:10px;max-width:85%}.chat-message.user{background:rgb(79 109 255 / .2);color:var(--text-primary);margin-left:auto;text-align:right;font-size:13px;border-color:rgb(79 109 255 / .3)}.chat-message.ai{background:var(--bg-surface);color:var(--text-muted);border:1px solid var(--border-color)}@keyframes chatMsgSlideIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.chat-message.animate-in{animation:chatMsgSlideIn .35s cubic-bezier(.16,1,.3,1) both}.chat-message.ai .reasoning{margin-top:10px;padding-top:10px;border-top:1px solid #fff;font-size:13px;color:var(--text-muted);font-style:italic}.chat-message.ai .reasoning[style*=background]{color:#000}.chat-message.ai .results-section{background:rgba(79,109,255,.08);border-left:3px solid #4f6dff;border-top:none;padding:12px;margin-top:10px;border-radius:6px;font-style:normal;color:var(--text-secondary)}.results-header{font-size:14px;font-weight:600;color:#fff;margin-bottom:8px;padding-bottom:6px;border-bottom:1px solid rgba(255,255,255,.15)}.results-stats-table{width:100%;table-layout:fixed;border-collapse:separate;border-spacing:0;margin:8px 0;border:1px solid rgba(255,255,255,.08);border-radius:6px;overflow:hidden}.results-stats-table tr td{border-bottom:1px solid rgba(255,255,255,.45)}.results-stats-table tr:nth-child(2n){background:rgba(255,255,255,.03)}.results-stats-table tr:hover{background:rgba(79,109,255,.1)}.results-stats-table td{padding:9px 14px;vertical-align:middle}.results-stats-table td:not(:last-child){border-right:1px solid rgba(255,255,255,.45)}.results-row-label{font-size:13px;color:var(--text-muted);font-weight:500;width:40%;white-space:normal;word-wrap:break-word;overflow-wrap:break-word}.results-row-value{font-size:13px;font-weight:600;color:var(--text-muted);width:60%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.results-row-full{font-size:13px;font-weight:600;color:var(--text-muted);white-space:normal;word-wrap:break-word;overflow-wrap:break-word}.results-table-wrapper{position:relative;max-height:250px;overflow:auto;margin:8px 0;border:1px solid rgba(255,255,255,.08);border-radius:6px}.results-table-download{position:sticky;top:0;right:0;float:right;z-index:2;background:rgba(79,109,255,.25);color:var(--text-muted);border:1px solid rgba(79,109,255,.4);border-radius:4px;padding:3px 10px;font-size:11px;cursor:pointer;margin:4px 4px 0 0;transition:background .2s}.results-table-download:hover{background:rgba(79,109,255,.5);color:var(--text-primary)}.results-data-table{width:100%;border-collapse:collapse;font-size:12px;line-height:1.4;color:var(--text-secondary)}.results-data-table td,.results-data-table th{padding:7px 12px;text-align:center;border:1px solid rgba(255,255,255,.08);white-space:nowrap}.results-data-table thead th{background:rgba(79,109,255,.15);color:var(--text-muted);font-weight:600;font-size:12px;position:sticky;top:0;z-index:1}.results-data-table tbody tr:nth-child(2n){background:rgba(255,255,255,.03)}.results-data-table tbody tr:hover{background:rgba(79,109,255,.1)}.chat-input-area{padding:20px;border-top:1px solid var(--border-color);background:var(--bg-surface);position:relative;z-index:1}.chat-input-container{display:flex;gap:10px}.chat-disclaimer{text-align:center;font-size:11px;color:var(--text-muted,#888);opacity:.7;margin-top:8px;padding:0 4px;user-select:none}.chat-input{flex:1;padding:12px;border:1px solid var(--input-border);border-radius:8px;font-size:14px;resize:none;font-family:inherit;background:var(--input-bg);color:var(--text-secondary)}.chat-input:focus{outline:0;border-color:var(--secondary-color)}.btn-send{background:var(--secondary-color);color:var(--secondary-text-color);border:none;padding:12px 20px;border-radius:8px;cursor:pointer;font-weight:600;transition:all .3s}.btn-send:hover{background:var(--secondary-hover)}.btn-send:disabled{background:#484f58;cursor:not-allowed}.chat-buttons{display:flex;gap:8px;align-items:center}.btn-stop{background:var(--bg-elevated);color:#f85149;border:1px solid var(--border-color);padding:12px 14px;border-radius:8px;cursor:pointer;font-size:16px;line-height:1;transition:all .2s}.btn-stop:hover{background:#f85149;color:#fff;border-color:#f85149}@keyframes pulse{0%,100%{opacity:1}50%{opacity:.7}}.btn-mic{background:var(--bg-elevated);color:var(--text-primary,#e6edf3);border:1px solid var(--border-color);padding:12px 14px;border-radius:8px;cursor:pointer;font-size:16px;line-height:1;transition:all .2s}.btn-mic:hover{background:var(--secondary-color);border-color:var(--secondary-color)}.btn-mic:disabled{opacity:.5;cursor:not-allowed}.btn-mic.recording{background:#f85149;border-color:#f85149;color:#fff;animation:pulse 1.2s ease-in-out infinite}.chat-tabs{display:flex;background:var(--bg-surface);border-bottom:1px solid var(--border-color);padding:0;position:relative;z-index:1}.chat-tab{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;padding:12px 8px;background:0 0;border:none;border-bottom:3px solid transparent;color:var(--text-muted);cursor:pointer;transition:all .2s ease}.chat-tab:hover{background:var(--bg-elevated);color:var(--text-secondary)}.chat-tab.active{background:var(--bg-base);color:var(--text-primary);border-bottom-color:var(--secondary-color)}.chat-tab .tab-icon{font-size:18px}.chat-tab .tab-label{font-size:11px;font-weight:500;white-space:nowrap}#sessionSelector{background:var(--bg-surface);border-bottom:1px solid var(--border-color);padding:8px 12px}#sessionSelector select{background:var(--bg-base);color:var(--text-primary);border:1px solid var(--border-color);border-radius:6px;padding:6px 10px;font-size:13px;cursor:pointer;transition:border-color .2s}#sessionSelector select:focus,#sessionSelector select:hover{border-color:var(--secondary-color);outline:0}.chat-tab-content{display:none;flex:1;flex-direction:column;overflow:hidden;position:relative;z-index:1}.chat-tab-content.active{display:flex}.chat-tab-content .chat-messages{flex:1;overflow-y:auto;padding:20px;background:0 0;position:relative;z-index:1}.suggestion-container{padding:15px;display:flex;flex-direction:column;gap:10px}.suggestion-loading{display:flex;align-items:center;gap:10px;color:var(--text-muted);font-size:13px;padding:10px}.suggestion-chip{display:block;width:100%;padding:12px 16px;background:var(--bg-elevated);border:1px solid var(--border-color);border-radius:8px;color:var(--text-secondary);font-size:13px;text-align:left;cursor:pointer;transition:all .2s ease;line-height:1.4}.suggestion-chip:hover{background:var(--border-color);border-color:var(--secondary-color);color:var(--text-primary);transform:translateX(4px)}.suggestion-chip.suggest-more{background:0 0;border-style:dashed;color:var(--secondary-color);text-align:center;font-weight:500}.suggestion-chip.suggest-more:hover{background:var(--primary-muted)}.suggestion-header{color:var(--text-muted);font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;margin-bottom:5px;padding-left:4px}.modal{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.6);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);z-index:2000;align-items:center;justify-content:center}.modal.open{display:flex;animation:modalBackdropFade .25s ease forwards}@keyframes modalBackdropFade{from{opacity:0}to{opacity:1}}@keyframes modalContentEnter{from{opacity:0;transform:scale(.94) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}.modal-content{background:var(--bg-surface);border-radius:15px;padding:30px;max-width:620px;width:90%;max-height:80vh;overflow-y:auto;border:1px solid var(--border-color);align-self:flex-start;margin-top:8vh;animation:modalContentEnter .3s cubic-bezier(.16,1,.3,1) forwards}#attributesModal .modal-content{max-width:1000px;max-height:90vh;padding:24px 28px}#attributesModal .modal-header{margin-bottom:16px;padding-bottom:12px}#attributesModal .modal-header h3{font-size:20px;font-weight:600}#attributesModal>.modal-content>#joinKeySection,#attributesModal>.modal-content>div[class*=bg-elevated]{padding:16px 18px;margin-bottom:16px}#attributesModal h4{font-size:14px;font-weight:600;margin:0 0 12px 0}#attributesModal .form-group label,#attributesModal label{font-size:13px;font-weight:500;margin-bottom:6px;color:var(--text-primary);display:block}#attributesModal .form-group{margin-bottom:12px}#attributesModal .form-group:last-child{margin-bottom:0}#attributesModal #datasetSelectorDropdown{appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'><path fill='none' stroke='%238b949e' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round' d='M2.5 4.5l3.5 3.5 3.5-3.5'/></svg>");background-repeat:no-repeat;background-position:right 12px center;padding:10px 36px 10px 12px;font-size:13px}:root[data-theme=light] #attributesModal #datasetSelectorDropdown{background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'><path fill='none' stroke='%23656d76' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round' d='M2.5 4.5l3.5 3.5 3.5-3.5'/></svg>")}#attributesModal #datasetSelectorDropdown optgroup{background:var(--bg-surface);color:var(--text-muted);font-weight:600;font-style:normal}#attributesModal #datasetSelectorDropdown option{background:var(--bg-surface);color:var(--text-primary);padding:6px 8px}#attributesModal #modalDatasetName{min-height:36px;display:flex;align-items:center;padding:8px 12px;color:var(--text-secondary)}#attributesModal #attributesList{gap:10px}#attributesModal #attributesList textarea{background:var(--input-bg);color:var(--text-primary);border:1px solid var(--input-border);border-radius:6px}#attributesModal .modal-content>.mt-5.text-right{margin-top:18px;padding-top:14px;border-top:1px solid var(--border-color)}#layerSettingsModal .modal-content{padding:0}#layerSettingsModal .modal-header{padding:18px 22px 12px 22px;margin-bottom:0;border-bottom:1px solid var(--border-color)}#layerSettingsModal .modal-header h3{font-size:18px;font-weight:600}#layerSettingsModal .modal-content>.p-5{padding:18px 22px 20px 22px}#layerSettingsModal .form-group label,#layerSettingsModal label{font-size:13px;font-weight:500;color:var(--text-primary);display:block;margin-bottom:6px}#layerSettingsModal .form-group{margin-bottom:14px}#layerSettingsModal .form-group:last-child{margin-bottom:0}#layerSettingsModal #cesium3dSettingsSection,#layerSettingsModal #labelSettingsSection,#layerSettingsModal #modelPositionSection{margin-top:18px;padding-top:16px}#layerSettingsModal #labelSettingsSection>.flex{margin-bottom:14px}#layerSettingsModal #labelSettingsSection>.flex>label{font-size:14px;font-weight:600;margin-bottom:0}#layerSettingsModal #labelOptionsContainer{padding:12px 14px;background:var(--bg-elevated);border:1px solid var(--border-color);border-radius:8px}#layerSettingsModal input[type=range]+div{margin-top:8px;font-size:12px;color:var(--text-secondary)}#layerSettingsModal input[type=range]+div span{font-weight:600;color:var(--text-primary);font-variant-numeric:tabular-nums}#layerSettingsModal input[type=color]{border:1px solid var(--border-color);background:var(--input-bg);padding:2px}#layerSettingsModal select{appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'><path fill='none' stroke='%238b949e' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round' d='M2.5 4.5l3.5 3.5 3.5-3.5'/></svg>");background-repeat:no-repeat;background-position:right 12px center;padding-right:36px;font-size:13px}:root[data-theme=light] #layerSettingsModal select{background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'><path fill='none' stroke='%23656d76' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round' d='M2.5 4.5l3.5 3.5 3.5-3.5'/></svg>")}#layerSettingsModal select optgroup,#layerSettingsModal select option{background:var(--bg-surface);color:var(--text-primary)}#layerSettingsModal .symbology-type-btn{min-height:44px;font-size:13px}#layerSettingsModal .mt-6.pt-4.border-t{margin-top:20px;padding-top:16px}.attribute-table-panel{position:fixed;left:var(--layer-panel-width);right:0;bottom:0;height:300px;background:var(--bg-surface);z-index:900;display:none;flex-direction:column;box-shadow:0 -2px 12px var(--shadow-color);border-top:2px solid var(--primary-color);transition:left .3s ease,right .3s ease,height .25s ease}.attribute-table-panel.open{display:flex}.attribute-table-panel.expanded{height:50vh}.attribute-table-panel.sidebar-collapsed,.layer-panel.collapsed~.attribute-table-panel{left:var(--layer-rail-width)}.attribute-table-panel.chat-open{right:var(--chat-panel-width)}.attr-panel-resize-handle{height:4px;cursor:ns-resize;background:0 0;flex-shrink:0;transition:background .15s}.attr-panel-resize-handle:hover{background:var(--primary-color)}.attribute-table-panel-header{display:flex;align-items:center;justify-content:space-between;background:var(--bg-elevated);border-bottom:1px solid var(--border-color);padding:0 8px 0 0;min-height:36px;flex-shrink:0}.attribute-table-tabs{display:flex;overflow-x:auto;flex:1;gap:0;min-width:0}.attribute-table-tabs::-webkit-scrollbar{height:3px}.attribute-table-tabs::-webkit-scrollbar-thumb{background:rgba(139,148,158,.35);border-radius:3px}.attr-tab{display:flex;align-items:center;gap:6px;padding:8px 14px;cursor:pointer;font-size:12px;font-weight:500;color:var(--text-muted);background:0 0;border:none;border-bottom:2px solid transparent;white-space:nowrap;transition:all .2s;position:relative}.attr-tab:hover{background:rgba(255,255,255,.03);color:var(--text-secondary)}.attr-tab.active{color:var(--text-muted);border-bottom-color:var(--primary-color);background:var(--bg-surface);font-weight:600}.attr-tab-close{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;background:0 0;border:none;color:var(--text-muted);font-size:11px;cursor:pointer;line-height:1;padding:0;transition:all .15s}.attr-tab-close:hover{background:#da3633;color:#fff}.attribute-table-panel-actions{display:flex;align-items:center;gap:4px;flex-shrink:0;padding-left:8px}.attr-panel-close-btn,.attr-panel-resize-btn{background:0 0;border:none;cursor:pointer;font-size:14px;color:var(--text-muted);padding:4px 6px;border-radius:4px;transition:all .15s;line-height:1}.attr-panel-close-btn:hover,.attr-panel-resize-btn:hover{background:var(--bg-elevated);color:var(--primary-color)}.attr-panel-close-btn:hover{color:#da3633}.attribute-table-panel.expanded .attr-panel-resize-btn{transform:rotate(180deg)}.attr-panel-undock-btn{background:0 0;border:none;cursor:pointer;font-size:14px;color:var(--text-muted);padding:4px 6px;border-radius:4px;transition:all .15s;line-height:1}.attr-panel-undock-btn:hover{background:var(--bg-elevated);color:var(--primary-color)}.attribute-table-panel.floating{position:fixed;left:auto;right:auto;bottom:auto;top:100px;width:800px;height:450px;min-width:400px;min-height:200px;border:1px solid var(--border-color);border-top:2px solid var(--primary-color);border-radius:8px;box-shadow:0 8px 32px rgba(0,0,0,.35);resize:both;overflow:hidden;transition:none;z-index:1100}.attribute-table-panel.floating .attr-panel-resize-handle{display:none}.attribute-table-panel.floating .attr-panel-resize-btn{display:none}.attribute-table-panel.floating .attribute-table-panel-header{cursor:move}.attr-tab-label{max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.attribute-table-panel-body{flex:1;overflow:hidden;position:relative}.attr-tab-content{display:none;flex-direction:column;height:100%;position:absolute;top:0;left:0;right:0;bottom:0}.attr-tab-content.active{display:flex}.attribute-table-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 10px;border-bottom:1px solid var(--border-color)}.attribute-table-search{flex-shrink:0}.attribute-table-search input{padding:5px 10px;border:1px solid var(--border-color);border-radius:6px;font-size:12px;width:200px;outline:0;background:var(--bg-base);color:var(--text-primary)}.attribute-table-search input:focus{border-color:var(--primary-color);box-shadow:0 0 0 2px var(--primary-muted)}.attribute-table-status{color:var(--text-muted);font-size:12px}.attribute-table-controls{display:flex;align-items:center;gap:8px}.attribute-table-page-info{color:var(--text-muted);font-size:12px}.btn-table{background:var(--bg-elevated);border:1px solid var(--border-color);color:var(--text-secondary);padding:6px 10px;border-radius:6px;cursor:pointer;font-size:12px}.btn-table:disabled{opacity:.6;cursor:not-allowed}.attribute-table-select{background:var(--bg-base);color:var(--text-primary);border:1px solid var(--border-color);padding:6px 8px;border-radius:6px;font-size:12px}.attribute-table-scroll{overflow:auto;flex:1;min-height:0}#attributeTable,.attribute-data-table{width:max-content;min-width:100%;border-collapse:collapse;font-size:12px;color:var(--text-secondary);table-layout:fixed}#attributeTable td,#attributeTable th,.attribute-data-table td,.attribute-data-table th{padding:6px 8px;border-bottom:1px solid rgba(48,54,61,.5);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:150px;min-width:60px}#attributeTable th,.attribute-data-table th{position:sticky;top:0;background:var(--bg-elevated);color:var(--text-muted);text-align:left;z-index:1;padding:4px 6px;font-weight:600;position:relative}.th-content{display:flex;align-items:center;gap:2px;white-space:nowrap}.th-label{cursor:pointer;flex:1;overflow:hidden;text-overflow:ellipsis}.th-resize-handle{position:absolute;right:0;top:0;bottom:0;width:4px;cursor:col-resize;background:0 0;z-index:2}.th-resize-handle.active,.th-resize-handle:hover{background:var(--primary-color)}.th-sort{display:inline-flex;flex-direction:column;line-height:1;cursor:pointer;gap:0}.sort-arrow{font-size:8px;color:var(--text-muted);line-height:8px}.sort-arrow.active{color:var(--primary-color)}.th-filter-btn{background:0 0;border:none;color:var(--text-muted);font-size:11px;cursor:pointer;padding:1px 3px;border-radius:3px;line-height:1;flex-shrink:0}.th-filter-btn:hover{background:var(--bg-elevated);color:var(--primary-color)}.th-filter-btn.col-filter-active{color:#fff;background:var(--primary-color)}.col-filter-dropdown{position:fixed;z-index:9999;background:var(--bg-surface);border:1px solid var(--border-color);border-radius:8px;box-shadow:0 4px 16px var(--shadow-color);width:220px;max-height:360px;display:flex;flex-direction:column;font-size:12px}.col-filter-search{padding:6px;border-bottom:1px solid var(--border-color)}.col-filter-search input{width:100%;padding:5px 8px;border:1px solid var(--border-color);border-radius:4px;font-size:12px;outline:0;box-sizing:border-box;background:var(--bg-base);color:var(--text-primary)}.col-filter-search input:focus{border-color:var(--primary-color)}.col-filter-actions{display:flex;gap:4px;padding:4px 6px;border-bottom:1px solid var(--border-color)}.col-filter-actions .btn-table{font-size:11px;padding:3px 8px}.col-filter-values{overflow-y:auto;flex:1;max-height:220px;padding:4px 0}.col-filter-item{display:flex;align-items:center;gap:6px;padding:3px 8px;cursor:pointer;white-space:nowrap;overflow:hidden}.col-filter-item:hover{background:var(--bg-elevated)}.col-filter-item span{overflow:hidden;text-overflow:ellipsis;color:var(--text-secondary)}.col-filter-item input[type=checkbox]{flex-shrink:0;accent-color:var(--primary-color)}.col-filter-apply{display:flex;gap:4px;padding:6px;border-top:1px solid var(--border-color);justify-content:flex-end}.col-filter-loading{padding:20px;text-align:center;color:var(--text-muted)}#attributeTable tbody tr,.attribute-data-table tbody tr{cursor:pointer;transition:background-color .15s ease}#attributeTable tbody tr:hover,.attribute-data-table tbody tr:hover{background-color:rgba(88,166,255,.06)}#attributeTable tbody tr.selected,.attribute-data-table tbody tr.selected{background-color:rgba(88,166,255,.12)}.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.modal-header h3{color:var(--text-primary);font-size:24px}.btn-close-modal{background:0 0;border:none;font-size:28px;cursor:pointer;color:var(--text-muted);line-height:1}.btn-close-modal:hover{color:var(--text-secondary)}.modal-footer{display:flex;justify-content:flex-end;gap:12px;margin-top:24px;padding-top:20px;border-top:1px solid var(--border-color)}.modal-footer .btn{min-width:100px}#columnMappingModal .form-group{margin-bottom:14px}#columnMappingModal .form-group label{display:block;margin-bottom:6px;color:var(--text-secondary);font-size:13px;font-weight:500}#columnMappingModal .form-control{width:100%;padding:9px 12px;background:var(--input-bg,var(--bg-base));color:var(--text-primary);border:1px solid var(--input-border,var(--border-color));border-radius:6px;font-size:13px;transition:border-color .15s,box-shadow .15s}#columnMappingModal select.form-control{appearance:none;-webkit-appearance:none;-moz-appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'><path fill='%238b949e' d='M0 0l5 6 5-6z'/></svg>");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px;cursor:pointer}#columnMappingModal select.form-control option{background:var(--bg-surface);color:var(--text-primary)}#columnMappingModal .form-control:focus{border-color:var(--primary-color);outline:0;box-shadow:0 0 0 2px rgba(88,166,255,.15)}#columnMappingModal .required-mark{color:#f59e0b;font-weight:600;margin-left:2px}.mapping-preview-table{width:100%;border-collapse:collapse;font-size:12px;color:var(--text-primary);background:var(--bg-base)}.mapping-preview-table td,.mapping-preview-table th{padding:8px 10px;text-align:left;border-bottom:1px solid var(--border-color);white-space:nowrap}.mapping-preview-table th{background:var(--bg-elevated);color:var(--text-secondary);font-weight:600;position:sticky;top:0}.mapping-preview-table tbody tr:hover{background:var(--bg-elevated)}.upload-zone{border:3px dashed var(--secondary-color);border-radius:15px;padding:40px;text-align:center;cursor:pointer;transition:all .3s;margin-bottom:20px;background:var(--bg-base)}.upload-zone:hover{background:var(--bg-elevated);border-color:#79c0ff}.upload-zone.dragging{background:var(--bg-elevated);border-color:var(--secondary-color)}.upload-zone-icon{font-size:48px;color:var(--secondary-color);margin-bottom:10px}.dataset-type-toggle{display:flex;gap:10px}.type-toggle-btn{flex:1;padding:10px 16px;border:2px solid var(--border-color);background:var(--bg-base);color:var(--text-muted);border-radius:8px;cursor:pointer;font-size:14px;font-weight:500;transition:all .2s ease}.type-toggle-btn:hover{border-color:var(--secondary-color);color:var(--text-secondary)}.type-toggle-btn.active{border-color:var(--secondary-color);background:var(--secondary-muted);color:var(--text-primary)}.dataset-type-selector{display:flex;gap:8px}.type-btn{flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:center;padding:12px 6px;border:2px solid var(--border-color);background:var(--bg-surface);color:var(--text-secondary);border-radius:12px;cursor:pointer;transition:all .25s ease;text-align:center}.type-btn:hover{border-color:var(--secondary-color);background:var(--bg-elevated);color:var(--text-secondary);transform:translateY(-2px)}.type-btn.active{border-color:var(--secondary-color);background:linear-gradient(135deg,var(--secondary-muted),rgba(35,134,54,.15));color:var(--text-primary);box-shadow:0 4px 12px var(--secondary-muted)}.type-btn i{font-size:20px;margin-bottom:6px}.type-btn .type-name{font-size:13px;font-weight:600;margin-bottom:3px}.type-btn .type-desc{font-size:11px;color:var(--text-muted);line-height:1.3}.type-btn.active .type-desc{color:var(--text-muted)}.sv-upload-section .form-group{margin-bottom:16px}.sv-field-hint{font-size:12px;color:var(--text-muted);margin:-4px 0 8px}.sv-drop-zone{border:2px dashed var(--border-color);border-radius:10px;padding:24px 16px;text-align:center;cursor:pointer;transition:all .2s ease;background:var(--bg-base)}.sv-drop-zone:hover{border-color:var(--secondary-color);background:var(--bg-elevated)}.sv-drop-zone.drag-over{border-color:var(--secondary-color);background:var(--secondary-muted)}.sv-drop-zone.has-file{border-color:var(--secondary-color);border-style:solid;background:linear-gradient(135deg,var(--secondary-muted),rgba(35,134,54,.08))}.sv-drop-zone-icon{font-size:28px;color:var(--text-muted);margin-bottom:8px;transition:color .2s}.sv-drop-zone.has-file .sv-drop-zone-icon,.sv-drop-zone:hover .sv-drop-zone-icon{color:var(--secondary-color)}.sv-drop-zone-text{font-size:13px;color:var(--text-secondary);line-height:1.4}.sv-browse-link{color:var(--primary-color);text-decoration:underline;text-underline-offset:2px}.sv-selected-file{display:none;align-items:center;justify-content:center;gap:6px;margin-top:10px;font-size:13px;font-weight:500;color:var(--secondary-color)}.sv-drop-zone.has-file .sv-selected-file{display:flex}.sv-drop-zone.has-file .sv-drop-zone-text{display:none}.sv-progress{margin-top:4px}.sv-progress-bar{height:6px;background:var(--bg-elevated);border-radius:3px;overflow:hidden;margin-bottom:6px}.sv-progress-bar .progress-fill{height:100%;width:0%;background:linear-gradient(90deg,var(--secondary-color),var(--primary-color));border-radius:3px;transition:width .3s ease}.sv-progress .progress-text{font-size:12px;color:var(--text-muted);text-align:center}.spinner{border:3px solid var(--border-color);border-top:3px solid var(--secondary-color);border-radius:50%;width:40px;height:40px;animation:spin 1s linear infinite;margin:20px auto}@keyframes spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes skeletonShimmer{0%{transform:translateX(-100%)}100%{transform:translateX(100%)}}.skeleton-layer-item{background:var(--bg-surface);border:1px solid var(--border-color);border-radius:10px;padding:14px 16px;margin-bottom:10px;display:flex;align-items:center;gap:12px}.skel-block{background:var(--bg-elevated);border-radius:4px;position:relative;overflow:hidden}.skel-block::after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,transparent 0,rgba(255,255,255,.04) 40%,rgba(255,255,255,.08) 50%,rgba(255,255,255,.04) 60%,transparent 100%);animation:skeletonShimmer 1.8s ease-in-out infinite}.skel-icon{width:32px;height:32px;border-radius:6px;flex-shrink:0}.skel-lines{flex:1;display:flex;flex-direction:column;gap:8px}.skel-line{height:10px;border-radius:4px}.skel-line-w60{width:60%}.skel-line-w40{width:40%}.skel-line-w80{width:80%}.skel-toggle{width:40px;height:20px;border-radius:12px;flex-shrink:0}.empty-state{text-align:center;padding:40px 24px;border:1px dashed rgba(88,166,255,.15);border-radius:10px;margin:10px 0;background:linear-gradient(180deg,var(--bg-surface),rgba(88,166,255,.02))}.empty-state-icon{width:48px;height:48px;border-radius:14px;background:var(--primary-muted);display:inline-flex;align-items:center;justify-content:center;font-size:22px;margin-bottom:14px}.empty-state-title{color:var(--text-primary);font-size:14px;font-weight:600;margin-bottom:6px}.empty-state-desc{color:var(--text-muted);font-size:12px;margin-bottom:16px;line-height:1.5}.empty-state-cta{display:inline-flex;align-items:center;gap:6px;padding:7px 16px;background:var(--secondary-color);color:#fff;border:none;border-radius:8px;font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;transition:all .2s}.empty-state-cta:hover{transform:translateY(-1px);box-shadow:0 4px 14px var(--secondary-muted)}.loading-message{display:flex;align-items:center;gap:12px}.loading-spinner{width:20px;height:20px;border:3px solid var(--border-color);border-top:3px solid var(--secondary-color);border-radius:50%;animation:spin 1s linear infinite;flex-shrink:0}.loading-text{color:var(--text-muted);font-style:italic}.layer-panel-expand-btn{position:absolute;left:10px;top:80px;width:40px;height:40px;background:var(--bg-surface);border:2px solid var(--border-color);border-radius:50%;cursor:pointer;display:none;align-items:center;justify-content:center;box-shadow:0 2px 10px var(--shadow-color);z-index:850;font-size:18px;color:var(--text-secondary);transition:all .3s}.layer-panel-expand-btn:hover{background:var(--secondary-color);color:#fff;transform:scale(1.1)}.layer-panel.collapsed~.layer-panel-expand-btn{display:none!important}.measurement-tools{position:absolute;left:calc(var(--map-left-offset) + 30px);bottom:30px;display:flex;gap:10px;z-index:850;transition:left .3s ease}.measure-tool-btn{width:40px;height:40px;background:var(--bg-surface);border:2px solid var(--border-color);border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 10px var(--shadow-color);font-size:18px;color:var(--text-secondary);transition:all .3s}.measure-tool-btn:hover{background:var(--secondary-color);color:#fff;border-color:var(--secondary-color);transform:scale(1.1)}.measure-tool-btn.active{background:var(--secondary-color);color:#fff;border-color:var(--secondary-color);box-shadow:0 0 0 3px var(--secondary-muted)}.selection-tools{position:absolute;left:calc(var(--map-left-offset) + 30px);bottom:80px;display:flex;gap:10px;align-items:center;z-index:850;transition:left .3s ease}.select-tool-btn{width:40px;height:40px;background:var(--bg-surface);border:2px solid #0ff;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 10px var(--shadow-color);font-size:18px;color:#0ff;transition:all .3s}.select-tool-btn:hover{background:#00a8a8;color:#fff;transform:scale(1.1)}.select-tool-btn.active{background:#00a8a8;color:#fff;border-color:#0ff;box-shadow:0 0 0 3px rgba(0,255,255,.3)}.selection-badge{background:linear-gradient(135deg,#0ff 0,#00a8a8 100%);color:var(--bg-surface);padding:4px 10px;border-radius:12px;font-size:12px;font-weight:600;box-shadow:0 2px 8px rgba(0,255,255,.3)}.selection-toast{position:fixed;bottom:140px;left:50%;transform:translateX(-50%);background:var(--bg-surface);border:1px solid #0ff;border-radius:8px;padding:10px 20px;color:#0ff;font-size:14px;font-weight:500;z-index:1000;box-shadow:0 4px 15px var(--shadow-color)}.view-toggle-tools{position:absolute;left:calc(var(--map-left-offset) + 30px);bottom:130px;z-index:850;display:flex;background:var(--bg-surface);border-radius:8px;border:2px solid var(--border-color);overflow:hidden;box-shadow:0 2px 10px var(--shadow-color);transition:left .3s ease}.view-toggle-btn{display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 12px;background:0 0;border:none;color:var(--text-muted);cursor:pointer;transition:all .3s;min-width:50px}.view-toggle-btn:not(:last-child){border-right:1px solid var(--border-color)}.view-toggle-btn:hover{background:var(--bg-elevated);color:var(--text-secondary)}.view-toggle-btn.active{background:#1f6feb;color:#fff}.view-toggle-btn .view-icon{font-size:18px}.view-toggle-btn .view-label{font-size:10px;font-weight:600;text-transform:uppercase}.measurement-tools.attr-panel-open{bottom:330px}.selection-tools.attr-panel-open{bottom:380px}.view-toggle-tools.attr-panel-open{bottom:430px}.ask-ai-btn.attr-panel-open{bottom:330px}.measurement-tools.attr-panel-expanded{bottom:calc(50vh + 30px)}.selection-tools.attr-panel-expanded{bottom:calc(50vh + 80px)}.view-toggle-tools.attr-panel-expanded{bottom:calc(50vh + 130px)}.ask-ai-btn.attr-panel-expanded{bottom:calc(50vh + 30px)}.measurement-tools.timeline-open{bottom:120px}.selection-tools.timeline-open{bottom:170px}.view-toggle-tools.timeline-open{bottom:220px}.ask-ai-btn.timeline-open{bottom:120px}.measurement-tools.attr-panel-open.timeline-open{bottom:420px}.selection-tools.attr-panel-open.timeline-open{bottom:470px}.view-toggle-tools.attr-panel-open.timeline-open{bottom:520px}.ask-ai-btn.attr-panel-open.timeline-open{bottom:420px}.measurement-tools.attr-panel-expanded.timeline-open{bottom:calc(50vh + 120px)}.selection-tools.attr-panel-expanded.timeline-open{bottom:calc(50vh + 170px)}.view-toggle-tools.attr-panel-expanded.timeline-open{bottom:calc(50vh + 220px)}.ask-ai-btn.attr-panel-expanded.timeline-open{bottom:calc(50vh + 120px)}.ask-ai-btn,.measurement-tools,.selection-tools,.view-toggle-tools{transition:bottom .25s ease}#cesiumContainer{position:absolute;left:var(--layer-panel-width);top:60px;right:0;bottom:0;transition:left .3s ease,right .3s ease,bottom .25s ease}#cesiumContainer.full-width{left:var(--layer-rail-width)}#cesiumContainer.chat-open{right:var(--chat-panel-width)}#cesiumContainer.attr-panel-open{bottom:300px}#cesiumContainer.attr-panel-expanded{bottom:50vh}#potreeContainer{position:absolute;left:var(--layer-panel-width);top:60px;right:0;bottom:0;transition:left .3s ease,right .3s ease,bottom .25s ease;background:#1a1a1a}#potreeContainer.full-width{left:var(--layer-rail-width)}#potreeContainer.chat-open{right:var(--chat-panel-width)}#potreeContainer.attr-panel-open{bottom:300px}#potreeContainer.attr-panel-expanded{bottom:50vh}.potree-floating-panel{position:absolute;right:20px;top:80px;width:240px;background:var(--bg-surface);border:1px solid var(--border-color);border-radius:8px;z-index:900;box-shadow:0 4px 16px var(--shadow-color);max-height:60vh;overflow-y:auto}.potree-floating-panel-header{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;border-bottom:1px solid var(--border-color);background:var(--bg-surface);font-weight:600;font-size:13px;color:var(--text-primary);cursor:grab;user-select:none}.potree-floating-panel-header:active{cursor:grabbing}.potree-floating-panel-controls{padding:8px 14px 0;display:flex;gap:6px}.potree-small-btn{padding:3px 10px;font-size:11px;background:var(--bg-elevated);color:var(--text-primary);border:1px solid var(--border-color);border-radius:4px;cursor:pointer}.potree-small-btn:hover{background:var(--border-color);color:var(--text-primary)}.potree-floating-panel-body{padding:10px 14px}.potree-classification-item{display:flex;align-items:center;gap:8px;padding:4px 0;font-size:12px;color:var(--text-primary)}.potree-classification-item input[type=checkbox]{accent-color:var(--secondary-color)}.potree-classification-swatch{width:14px;height:14px;border-radius:3px;flex-shrink:0}.potree-color-mode-btn{display:block;width:100%;padding:7px 12px;margin-bottom:4px;background:var(--bg-elevated);color:var(--text-primary);border:1px solid var(--border-color);border-radius:6px;cursor:pointer;font-size:12px;text-align:left;transition:all .2s}.potree-color-mode-btn:hover{background:var(--border-color);color:var(--text-primary)}.potree-color-mode-btn.active{background:var(--secondary-color);color:var(--secondary-text-color);border-color:var(--secondary-color)}.potree-point-size-type-btn{display:block;width:100%;padding:7px 12px;margin-bottom:4px;background:var(--bg-elevated);color:var(--text-primary);border:1px solid var(--border-color);border-radius:6px;cursor:pointer;font-size:12px;text-align:left;transition:all .2s}.potree-point-size-type-btn:hover{background:var(--border-color);color:var(--text-primary)}.potree-point-size-type-btn.active{background:var(--secondary-color);color:var(--secondary-text-color);border-color:var(--secondary-color)}.potree-slider{-webkit-appearance:none;appearance:none;width:100%;height:4px;background:var(--border-color);border-radius:2px;outline:0;cursor:pointer}.potree-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:14px;height:14px;background:var(--secondary-color);border-radius:50%;cursor:pointer;border:none}.potree-slider::-moz-range-thumb{width:14px;height:14px;background:var(--secondary-color);border-radius:50%;cursor:pointer;border:none}.potree-slider::-webkit-slider-thumb:hover{background:var(--secondary-hover)}.potree-slider::-moz-range-thumb:hover{background:var(--primary-hover)}.potree-measurement-tools{position:absolute;left:calc(var(--map-left-offset) + 30px);bottom:80px;z-index:850;display:flex;align-items:center;gap:4px;background:var(--bg-surface);border-radius:8px;border:2px solid var(--border-color);padding:4px 8px;box-shadow:0 2px 10px var(--shadow-color);transition:bottom .25s ease}.potree-tool-btn{display:flex;align-items:center;justify-content:center;width:34px;height:34px;background:0 0;border:none;color:var(--text-muted);cursor:pointer;border-radius:6px;transition:all .2s;font-size:14px}.potree-tool-btn:hover{background:var(--bg-elevated);color:var(--text-secondary)}.potree-tool-btn.active{background:var(--secondary-color);color:#fff}.potree-tool-divider{width:1px;height:24px;background:var(--border-color);margin:0 4px}.cesium-credit-expand-link,.cesium-credit-logoContainer{display:none!important}.btn-create-layer{width:28px;height:28px;border-radius:6px;background:var(--secondary-color);color:#fff;border:none;cursor:pointer;font-size:14px;display:flex;align-items:center;justify-content:center;transition:all .3s}.btn-create-layer:hover{background:var(--secondary-hover);transform:scale(1.05)}.drawing-toolbar{position:absolute;top:80px;left:50%;transform:translateX(-50%);background:var(--bg-surface);border:1px solid #f0883e;border-radius:8px;padding:10px 20px;display:flex;align-items:center;gap:10px;z-index:1001;box-shadow:0 4px 15px var(--shadow-color)}.drawing-tool-btn{background:#f0883e;color:#fff;border:none;padding:6px 12px;border-radius:6px;cursor:pointer;font-size:12px;font-weight:500;transition:all .3s}.drawing-tool-btn:hover{background:#d97706}.drawing-toast{position:fixed;bottom:100px;left:50%;transform:translateX(-50%);background:var(--bg-surface);border-radius:8px;padding:12px 24px;font-size:14px;font-weight:500;z-index:1002;box-shadow:0 4px 15px var(--shadow-color)}.drawing-toast.success{border:1px solid var(--secondary-color);color:#3fb950}.drawing-toast.error{border:1px solid #f85149;color:#f85149}.temporary-layer-list{border-bottom:1px solid var(--border-color)}.measurement-tooltip{position:relative;background:var(--bg-surface);border:1px solid var(--secondary-color);border-radius:6px;padding:8px 12px;color:var(--text-primary);font-size:14px;font-weight:500;white-space:nowrap;pointer-events:none;box-shadow:0 2px 10px var(--shadow-color)}.measurement-tooltip::before{content:'';position:absolute;bottom:-6px;left:50%;transform:translateX(-50%);width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid var(--secondary-color)}.measurement-info-box{position:fixed;top:80px;right:20px;width:320px;background:var(--bg-surface);border:1px solid var(--secondary-color);border-radius:8px;box-shadow:0 4px 20px var(--shadow-color);z-index:999;backdrop-filter:blur(10px)}.measurement-info-header{display:flex;justify-content:space-between;align-items:center;padding:12px 15px;border-bottom:1px solid var(--border-color);background:var(--primary-muted);border-radius:8px 8px 0 0}.measurement-info-title{color:var(--text-primary);font-weight:600;font-size:14px}.measurement-info-close{background:0 0;border:none;color:var(--text-muted);font-size:24px;cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;transition:all .2s;border-radius:4px}.measurement-info-close:hover{background:rgba(139,148,158,.2);color:var(--text-secondary)}.measurement-info-content{padding:15px;max-height:400px;overflow-y:auto}.measurement-info-item{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;margin-bottom:8px;background:var(--bg-base);border:1px solid var(--border-color);border-radius:6px;transition:all .2s}.measurement-info-item:hover{border-color:var(--secondary-color);background:var(--secondary-muted)}.measurement-info-item:last-child{margin-bottom:0}.measurement-info-label{color:var(--text-muted);font-size:13px;font-weight:500}.measurement-info-value{color:var(--text-primary);font-size:14px;font-weight:600}.measurement-info-footer{padding:10px 15px;border-top:1px solid var(--border-color);text-align:center;background:var(--bg-base);border-radius:0 0 8px 8px}.hidden{display:none!important}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:var(--bg-base)}::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#484f58}.layer-menu-item{width:100%;padding:10px 15px;border:none;background:0 0;text-align:left;cursor:pointer;font-size:13px;border-bottom:1px solid var(--border-color);transition:background .2s;color:var(--text-secondary)}#layerMenuDropdown{display:none;position:fixed;background:var(--bg-surface);border:1px solid var(--border-color);border-radius:8px;box-shadow:0 4px 12px var(--shadow-color);z-index:1000;min-width:160px}.layer-menu-item:last-child{border-bottom:none}.layer-menu-item:hover{background:var(--bg-elevated)}.map-loading-spinner{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:var(--bg-surface);padding:20px 30px;border-radius:12px;display:flex;flex-direction:column;align-items:center;gap:15px;z-index:2000;box-shadow:0 4px 20px var(--shadow-color);border:1px solid var(--border-color);backdrop-filter:blur(5px)}.spinner-circle{width:40px;height:40px;border:4px solid var(--border-color);border-top:4px solid var(--secondary-color);border-radius:50%;animation:spin 1s linear infinite}.spinner-text{color:var(--text-secondary);font-size:14px;font-weight:500;letter-spacing:.5px}.layer-legend{position:absolute;bottom:30px;left:20px;background:var(--bg-surface);border:1px solid var(--border-color);border-radius:8px;min-width:200px;max-width:280px;max-height:400px;z-index:1000;box-shadow:0 4px 15px var(--shadow-color);overflow:hidden}.legend-header{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;background:var(--bg-surface);border-bottom:1px solid var(--border-color);font-weight:600;color:var(--text-primary);font-size:13px}.legend-content{padding:10px 12px;max-height:350px;overflow-y:auto}.legend-layer{margin-bottom:12px}.legend-layer:last-child{margin-bottom:0}.legend-layer-title{font-weight:600;color:var(--text-secondary);font-size:12px;margin-bottom:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.legend-item{display:flex;align-items:center;gap:8px;padding:4px 0;font-size:11px;color:var(--text-muted)}.legend-color-box{width:18px;height:18px;border-radius:3px;border:1px solid rgba(255,255,255,.2);flex-shrink:0}.legend-line{width:24px;height:3px;border-radius:2px;flex-shrink:0}.legend-point{width:12px;height:12px;border-radius:50%;border:2px solid #fff;flex-shrink:0}.legend-item-label{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.legend-item-count{color:#6e7681;font-size:10px}.inline-legend{margin-top:6px;border-top:1px solid var(--border-color);padding-top:4px}.inline-legend-header{display:flex;align-items:center;gap:6px;cursor:pointer;padding:4px 0;user-select:none}.inline-legend-toggle{font-size:9px;color:var(--text-muted);width:12px;text-align:center;flex-shrink:0}.inline-legend-title{font-size:11px;font-weight:600;color:var(--text-muted)}.inline-legend-subtitle{font-size:10px;color:var(--text-muted);margin-bottom:4px;padding-left:2px}.inline-legend-body{padding:2px 0 2px 4px;max-height:180px;overflow-y:auto}.inline-legend-row{display:flex;align-items:center;gap:6px;padding:2px 0}.inline-legend-swatch{width:14px;height:14px;border-radius:3px;border:1px solid rgba(255,255,255,.15);flex-shrink:0}.inline-legend-label{font-size:11px;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}.symbology-type-btn{transition:all .2s ease;background:var(--bg-elevated);border:1px solid var(--border-color);color:var(--text-primary);opacity:1}.symbology-type-btn:hover{border-color:var(--secondary-color);background:color-mix(in srgb,var(--secondary-color) 8%,var(--bg-elevated));color:var(--text-primary)}.symbology-type-btn.active{background:var(--secondary-color);border-color:var(--secondary-color);color:var(--secondary-text-color);opacity:1}.category-color-row{display:flex;align-items:center;gap:10px;padding:8px 10px;background:var(--bg-elevated);border-radius:6px;margin-bottom:6px;border:1px solid var(--border-color)}.category-color-row:hover{border-color:var(--secondary-color)}.category-color-input{width:36px;height:28px;border:none;border-radius:4px;cursor:pointer;padding:0}.category-width-input{width:50px;padding:4px 8px;border:1px solid var(--input-border);border-radius:4px;background:var(--input-bg);color:var(--text-secondary);font-size:12px;text-align:center}.category-label{flex:1;font-size:12px;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.category-count{font-size:10px;color:#6e7681;background:var(--bg-base);padding:2px 6px;border-radius:10px}.slash-cmd-dropdown{position:absolute;bottom:100%;left:0;right:0;max-height:300px;overflow-y:auto;background:var(--bg-surface);border:1px solid var(--border-color);border-bottom:none;border-radius:8px 8px 0 0;z-index:10;box-shadow:0 -4px 12px var(--shadow-color)}.slash-cmd-item{display:flex;align-items:center;gap:10px;padding:10px 14px;cursor:pointer;border-bottom:1px solid var(--bg-elevated);transition:background .15s}.slash-cmd-item:last-child{border-bottom:none}.slash-cmd-item.active,.slash-cmd-item:hover{background:var(--bg-elevated)}.slash-cmd-item .cmd-icon{width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:var(--bg-base);border:1px solid var(--border-color);border-radius:6px;font-size:14px;color:var(--secondary-color);flex-shrink:0}.slash-cmd-item .cmd-name{color:var(--text-primary);font-weight:600;font-size:13px;font-family:monospace;white-space:nowrap}.slash-cmd-item .cmd-params{color:#6e7681;font-size:11px;font-family:monospace;white-space:nowrap}.slash-cmd-item .cmd-desc{color:var(--text-muted);font-size:12px;margin-left:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px}.slash-layer-picker{position:absolute;bottom:100%;left:0;right:0;max-height:250px;overflow-y:auto;background:var(--bg-surface);border:1px solid var(--secondary-color);border-bottom:none;border-radius:8px 8px 0 0;z-index:11;box-shadow:0 -4px 12px var(--secondary-muted)}.slash-layer-header{padding:8px 14px;color:var(--text-primary);font-size:12px;font-weight:600;border-bottom:1px solid var(--border-color);background:var(--bg-base);position:sticky;top:0;z-index:1}.slash-layer-item{display:flex;align-items:center;gap:10px;padding:10px 14px;cursor:pointer;border-bottom:1px solid var(--bg-elevated);transition:background .15s}.slash-layer-item:last-child{border-bottom:none}.slash-layer-item.active,.slash-layer-item:hover{background:var(--bg-elevated)}.slash-layer-item .layer-geom-icon{width:20px;height:20px;display:flex;align-items:center;justify-content:center;font-size:14px;color:var(--secondary-color);flex-shrink:0}.slash-layer-item .layer-pick-name{color:var(--text-secondary);font-size:13px;font-weight:500;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.slash-layer-item .layer-pick-info{color:#6e7681;font-size:11px;white-space:nowrap;flex-shrink:0}.stockpile-panel{position:fixed;right:20px;top:80px;width:320px;background:var(--bg-base);border:1px solid var(--border-color);border-radius:10px;box-shadow:0 8px 32px var(--shadow-color);z-index:950;color:var(--text-secondary);max-height:calc(100vh - 100px);overflow:hidden;display:none;flex-direction:column}.stockpile-panel.open{display:flex}.stockpile-panel-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid var(--border-color);background:var(--bg-surface);border-radius:10px 10px 0 0;flex-shrink:0;user-select:none}.stockpile-panel-header .stockpile-title{font-weight:600;font-size:14px;color:var(--text-primary);display:flex;align-items:center;gap:8px}.stockpile-panel-header .btn-icon{background:0 0;border:none;color:var(--text-muted);cursor:pointer;font-size:16px;width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:6px;transition:all .2s ease;flex-shrink:0}.stockpile-panel-header .btn-icon:hover{color:var(--text-secondary);background:var(--bg-elevated)}.stockpile-panel-body{flex:1;overflow-y:auto;overflow-x:hidden;padding:16px}.stockpile-panel-body .step-label{font-weight:600;font-size:13px;color:var(--text-primary);margin-bottom:4px;letter-spacing:.2px}.stockpile-panel .text-muted{color:var(--text-muted)!important;font-size:12px;line-height:1.4}.stockpile-panel .btn-draw{display:flex;align-items:center;gap:8px;padding:10px 14px;background:var(--bg-surface);border:1px solid var(--border-color);border-radius:8px;color:var(--text-secondary);font-size:13px;cursor:pointer;transition:all .2s ease;width:100%;text-align:left}.stockpile-panel .btn-draw:hover{background:var(--bg-elevated);border-color:var(--secondary-color);color:var(--text-primary)}.stockpile-panel .btn-draw .draw-icon{font-size:18px;flex-shrink:0;width:24px;text-align:center}.stockpile-panel .btn-draw .draw-label{font-weight:500}.stockpile-divider{display:flex;align-items:center;gap:12px;margin:16px 0;color:var(--text-muted);font-size:11px;text-transform:uppercase;letter-spacing:1px}.stockpile-divider::after,.stockpile-divider::before{content:'';flex:1;height:1px;background:var(--border-color)}.stockpile-panel .form-select{background:var(--input-bg);border:1px solid var(--input-border);color:var(--text-secondary);font-size:13px;border-radius:6px;max-width:100%;box-sizing:border-box;overflow:hidden;text-overflow:ellipsis}.stockpile-panel .form-select:focus{border-color:var(--secondary-color);box-shadow:0 0 0 2px var(--primary-muted)}.stockpile-panel .btn-outline-secondary{color:var(--text-muted);border-color:var(--border-color);background:0 0;font-size:12px}.stockpile-panel .btn-outline-secondary:hover{background:var(--bg-elevated);color:var(--text-secondary)}.stockpile-panel .btn-primary{background:var(--secondary-color);border-color:var(--secondary-color);color:#fff;font-size:13px;font-weight:500;padding:8px 16px}.stockpile-panel .btn-primary:hover{background:var(--secondary-hover);border-color:var(--secondary-hover)}.stockpile-panel .alert-success{background:var(--secondary-muted);border:1px solid var(--secondary-color);color:var(--secondary-color)}.stockpile-panel .alert-danger{background:rgba(218,54,51,.15);border:1px solid #da3633;color:#f85149}.stockpile-metrics .metric-row{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px solid var(--bg-elevated);font-size:12px}.stockpile-metrics .metric-row:last-child{border-bottom:none}.stockpile-metrics .metric-row span{color:var(--text-muted)}.stockpile-metrics .metric-row strong{color:var(--text-primary);font-variant-numeric:tabular-nums}.stockpile-panel .spinner-border{color:var(--secondary-color)!important}.stockpile-draw-status{padding:8px 12px;background:var(--bg-surface);border-radius:6px;margin-top:10px;font-size:12px;color:var(--text-muted);display:none}.stockpile-draw-status.active{display:block}.stockpile-draw-status.success{color:var(--secondary-color);background:var(--secondary-muted);border:1px solid var(--secondary-muted)}body.stockpile-open .potree-floating-panel{right:360px}body.stockpile-open #potreeStockpileBtn{right:350px!important}#sqlUploadSection .form-group{margin-bottom:10px}#sqlUploadSection .form-group label{display:block;margin-bottom:5px;color:var(--text-secondary);font-size:13px;font-weight:500}#sqlUploadSection .form-control{width:100%;padding:8px 10px;background:var(--input-bg);color:var(--text-primary);border:1px solid var(--input-border);border-radius:6px;font-size:13px}#sqlUploadSection .form-control:focus{border-color:var(--primary-color);outline:0;box-shadow:0 0 0 2px rgba(88,166,255,.15)}#sqlUploadSection select.form-control{appearance:auto}#sqlUploadSection textarea.form-control{font-family:'Courier New',monospace;resize:vertical}#sqlUploadSection .sql-info-box{padding:8px 12px;background:rgba(88,166,255,.08);border:1px solid rgba(88,166,255,.2);border-radius:6px;margin-bottom:14px;font-size:12px;color:var(--text-muted)}#sqlUploadSection .sql-info-box i{margin-right:4px;color:var(--primary-color)}#sqlConnectionStatus{padding:8px 12px;border-radius:6px;margin-bottom:10px;font-size:13px}#sqlTableBrowser .sql-table-list{max-height:300px;overflow-y:auto;border:1px solid var(--border-color);border-radius:6px;background:var(--bg-surface);padding:8px}#sqlConnectedLabel{color:var(--text-primary);font-size:13px;font-weight:500}.sql-connected-dot{display:inline-block;width:8px;height:8px;background:var(--secondary-color);border-radius:50%}.sql-section-title{color:var(--text-primary);font-size:14px;font-weight:500}.sql-section-title i{margin-right:6px}.sql-table-item{padding:8px 0;border-bottom:1px solid var(--border-color)}.sql-table-item:last-child{border-bottom:none}.sql-table-item:hover{background:rgba(255,255,255,.02)}.sql-table-type{padding:1px 6px;border-radius:3px;background:var(--bg-elevated);color:var(--text-muted);font-size:11px}#sqlQueryPreview table{border:1px solid var(--border-color);width:100%;border-collapse:collapse;font-size:12px}#sqlQueryPreview th{padding:4px 8px;border:1px solid var(--border-color);background:var(--bg-elevated);text-align:left;color:var(--text-secondary)}#sqlQueryPreview td{padding:4px 8px;border:1px solid var(--border-color);color:var(--text-primary)}.sql-btn-row{display:flex;gap:10px}.sql-btn-sm{font-size:12px!important;padding:4px 10px!important}.spinner-inline{display:inline-block;width:12px;height:12px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .6s linear infinite;vertical-align:middle}.timeline-groups-section{margin-top:4px}.timeline-groups-header{display:flex;align-items:center;padding:6px 12px;background:var(--bg-elevated);border-radius:6px;cursor:pointer;font-size:12px;font-weight:600;color:var(--text-secondary);gap:6px}.timeline-groups-header:hover{background:var(--border-color)}.timeline-groups-header .tg-count{margin-left:auto;font-size:10px;color:var(--text-muted);font-weight:400}.timeline-group-item{display:flex;align-items:flex-start;padding:6px 12px 6px 20px;gap:8px;border-bottom:1px solid var(--border-color);transition:background .15s}.timeline-group-item:hover{background:var(--bg-elevated)}.timeline-group-item .tg-hex-icon{color:#f59e0b;font-size:16px;flex-shrink:0;margin-top:2px}.timeline-group-item .tg-info{flex:1;min-width:0}.timeline-group-item .tg-name{font-size:12px;font-weight:500;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.timeline-group-item .tg-subtitle{font-size:10px;color:var(--text-muted);margin-top:1px}.timeline-group-item .tg-status-badge{font-size:10px;padding:1px 6px;border-radius:8px;white-space:nowrap}.timeline-group-item .tg-status-badge.processing{background:rgba(59,130,246,.15);color:#60a5fa}.timeline-group-item .tg-status-badge.ready{background:rgba(34,197,94,.15);color:#4ade80}.timeline-group-item .tg-status-badge.failed{background:rgba(239,68,68,.15);color:#f87171}.timeline-group-item .tg-toggle{background:0 0;border:none;color:var(--text-muted);cursor:pointer;font-size:14px;padding:2px;flex-shrink:0}.timeline-group-item .tg-toggle:hover{color:var(--primary-color)}.timeline-group-item .tg-toggle.active{color:var(--primary-color)}.chart-container{margin:12px 0;padding:8px;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.08);border-radius:6px;position:relative}.chart-toolbar{position:absolute;top:6px;right:10px;display:flex;gap:4px;z-index:2}.chart-toolbar .chart-btn{background:rgba(0,0,0,.35);color:#eee;border:1px solid rgba(255,255,255,.15);border-radius:4px;padding:2px 8px;font-size:12px;cursor:pointer;transition:background .15s ease}.chart-toolbar .chart-btn:hover{background:rgba(0,0,0,.55)}.chart-mount{width:100%;min-height:320px}.chart-modal-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.75);display:flex;align-items:center;justify-content:center;z-index:10000}.chart-modal{background:#1e1e1e;border-radius:8px;width:min(90vw,1200px);height:min(85vh,800px);position:relative;padding:40px 20px 20px;box-shadow:0 10px 40px rgba(0,0,0,.6)}.chart-modal-body{width:100%;height:100%}.chart-modal-close{position:absolute;top:6px;right:10px;background:0 0;color:#eee;border:none;font-size:24px;cursor:pointer;line-height:1}.chart-modal-close:hover{color:#fff}.generate-report-btn,.report-history-btn{margin-left:8px;padding:6px 12px;font-size:13px}.report-ready-actions{margin-left:8px;display:inline-flex;gap:8px}.report-ready-actions .btn-link{padding:4px 10px;background:var(--accent-color,#238636);color:#fff;text-decoration:none;border-radius:4px;font-size:12px}.report-history-panel{position:fixed;right:24px;top:80px;width:420px;max-height:600px;overflow-y:auto;background:var(--panel-bg,#161b22);border:1px solid var(--border-color,#30363d);border-radius:8px;box-shadow:0 8px 32px rgba(0,0,0,.45);z-index:1000}.report-history-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid var(--border-color,#30363d)}.report-history-header h3{margin:0;font-size:16px}.report-history-row{display:flex;justify-content:space-between;align-items:flex-start;padding:12px 16px;border-bottom:1px solid var(--border-color,#30363d)}.report-history-row .stale-badge{background:#f59f00;color:#111;padding:2px 6px;border-radius:3px;font-size:11px;margin-left:6px}.report-history-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.theme-actions-bar{padding:10px 12px 6px}.btn-save-theme{width:100%;padding:8px 12px;background:var(--accent-color,#238636);color:#fff;border:none;border-radius:6px;font-size:13px;font-weight:500;cursor:pointer;transition:background .2s}.btn-save-theme:hover{background:var(--accent-hover,#2ea043)}.themes-list{padding:4px 8px 12px;display:flex;flex-direction:column;gap:8px}.theme-section-header{font-size:11px;font-weight:600;color:var(--text-muted,#8b949e);text-transform:uppercase;letter-spacing:.06em;padding:8px 4px 4px}.theme-card{display:flex;align-items:flex-start;gap:10px;background:var(--bg-surface);border:1px solid var(--border-color);border-radius:8px;padding:8px;position:relative;transition:border-color .15s}.theme-card:hover{border-color:var(--primary-color)}.theme-card-thumb{width:70px;height:50px;flex-shrink:0;border-radius:5px;overflow:hidden;background:var(--bg-base);display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:10px;text-align:center}.theme-card-thumb:hover{opacity:.85}.theme-card-info{flex:1;min-width:0;overflow:hidden}.theme-card-name{font-size:13px;font-weight:500;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.theme-card-meta{font-size:11px;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.4}.theme-card-layers{list-style:none;margin:4px 0 2px;padding:0;display:flex;flex-direction:column;gap:2px}.theme-card-layers li{font-size:11px;color:var(--text-secondary);line-height:1.35;display:flex;align-items:center;gap:6px;min-width:0}.theme-card-layers .theme-layer-dot{flex-shrink:0;width:6px;height:6px;border-radius:50%;background:var(--text-muted)}.theme-card-layers .theme-layer-analysis .theme-layer-dot{background:var(--primary-color);box-shadow:0 0 0 2px var(--primary-muted)}.theme-card-layers .theme-layer-name{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.theme-card-layers .theme-layer-chip{flex-shrink:0;font-size:9px;font-weight:700;letter-spacing:.04em;padding:1px 5px;border-radius:3px;background:var(--primary-muted);color:var(--primary-color);line-height:1.3;text-transform:uppercase}.theme-shared-badge{display:inline-block;background:var(--primary-color);color:#fff;font-size:10px;font-weight:600;padding:1px 5px;border-radius:3px;margin-left:4px;vertical-align:middle}.theme-card-menu{background:0 0;border:none;color:var(--text-muted);font-size:18px;cursor:pointer;padding:4px 6px;border-radius:4px;line-height:1;flex-shrink:0}.theme-card-menu:hover{color:var(--text-primary);background:var(--bg-elevated)}.theme-context-menu{position:absolute;z-index:9999;background:var(--bg-surface);border:1px solid var(--border-color);border-radius:6px;box-shadow:0 6px 24px var(--shadow-color);padding:4px 0;min-width:180px}.theme-context-menu button{display:block;width:100%;text-align:left;background:0 0;border:none;padding:8px 16px;font-size:13px;color:var(--text-primary);cursor:pointer;transition:background .12s}.theme-context-menu button:hover{background:var(--bg-elevated)}.theme-context-menu button.danger{color:#f85149}.theme-context-menu button.danger:hover{background:rgba(248,81,73,.1)}.save-theme-dialog{max-width:480px}.save-theme-body{padding:4px 0 0}.save-theme-body .form-group{margin-bottom:16px}.save-theme-body .form-group label{font-size:13px;font-weight:500;margin-bottom:6px}.save-theme-body .form-group input,.save-theme-body .form-group textarea{font-size:13px;padding:9px 12px;border-radius:6px}.save-theme-body .form-group textarea{min-height:48px}.required-mark{color:#f85149}.theme-visibility-options{display:flex;gap:8px}.theme-visibility-option{flex:1;cursor:pointer;margin-bottom:0!important}.theme-visibility-option input[type=radio]{display:none}.theme-visibility-label{display:flex;align-items:center;justify-content:center;gap:6px;padding:9px 12px;border-radius:6px;border:1px solid var(--border-color);background:var(--input-bg);color:var(--text-muted);font-size:13px;font-weight:500;transition:all .15s ease}.theme-visibility-option input[type=radio]:checked+.theme-visibility-label{border-color:var(--primary-color);background:var(--primary-dark,rgba(88,166,255,.08));color:var(--primary-color)}.theme-visibility-option:hover .theme-visibility-label{border-color:var(--text-muted)}.theme-thumbnail-preview{border:1px solid var(--border-color);border-radius:8px;height:160px;display:flex;align-items:center;justify-content:center;overflow:hidden;background:var(--input-bg)}.theme-thumbnail-preview img{width:100%;height:100%;object-fit:cover}.theme-preview-placeholder{color:var(--text-muted);font-size:12px}.save-theme-footer{padding:16px 0 0}.save-theme-footer .btn-primary.save-theme-save-btn,.save-theme-footer .btn-secondary.save-theme-cancel-btn{width:auto;min-width:90px;padding:8px 20px;border-radius:6px;font-size:13px;font-weight:500;margin-top:0}.edit-status-bar{position:absolute;top:10px;left:50%;transform:translateX(-50%);background:var(--bg-surface);border:2px solid #f0883e;border-radius:8px;padding:8px 16px;display:flex;align-items:center;gap:16px;z-index:1000;box-shadow:0 4px 12px var(--shadow-color);font-size:13px}.edit-status-text{color:#f0883e;font-weight:600}.edit-status-actions{display:flex;gap:6px}.layer-item.editing-active{border-left:3px solid #f0883e;background:rgba(240,136,62,.08)}.layer-item.editing-active::after{content:'EDITING';font-size:9px;font-weight:700;color:#f0883e;background:rgba(240,136,62,.15);padding:2px 6px;border-radius:3px;margin-left:auto}td.cell-edited{background:rgba(240,200,60,.2)!important}.cell-editor-input:focus{outline:0;border-color:var(--primary-color)}.btn-sm{padding:4px 10px;font-size:12px;border-radius:4px;border:1px solid var(--border-color);background:var(--bg-elevated);cursor:pointer;color:var(--text-primary)}.btn-sm:hover{background:var(--bg-base)}.btn-danger{background:var(--danger-color,#f85149);color:#fff;border:none;padding:8px 16px;border-radius:6px;cursor:pointer}.edit-log-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.edit-old-val{color:var(--danger-color);text-decoration:line-through}.edit-new-val{color:var(--secondary-color);font-weight:600}table.audit-table{width:100%;border-collapse:collapse;font-size:13px;color:var(--text-primary,#1f2328)}table.audit-table thead th{position:sticky;top:0;z-index:1;background:var(--bg-elevated,#f5f5f5);text-align:left;padding:8px 10px;border-bottom:1px solid var(--border-color,#ddd);font-weight:600}table.audit-table tbody td{padding:6px 10px;border-bottom:1px solid var(--border-color,#f0f0f0);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:320px}table.audit-table tbody tr:hover{background:var(--bg-hover,#fafafa)}.audit-status{display:inline-block;padding:2px 8px;border-radius:10px;font-size:11px;font-weight:600}.audit-status.found{background:#e6f4ea;color:#137333}.audit-status.missing{background:#fce8e6;color:#c5221f}#streetViewPanoError{position:absolute;inset:0;display:none;align-items:center;justify-content:center;background:rgba(13,17,23,.92);color:#f0f6fc;font-size:14px;text-align:center;padding:24px;z-index:5;pointer-events:none}#pc-edit-modal{position:fixed;inset:0;background:rgba(0,0,0,.55);display:none;align-items:center;justify-content:center;z-index:10000;padding:20px}#pc-edit-modal .modal-content{background:var(--bg-surface,#161b22);border:1px solid var(--border-color,#30363d);border-radius:12px;color:var(--text-primary,#c9d1d9);max-width:760px;width:92%;max-height:90vh;overflow:hidden;display:flex;flex-direction:column;padding:0;margin:0;align-self:center;box-shadow:0 20px 60px rgba(0,0,0,.5);animation:modalContentEnter .25s cubic-bezier(.16,1,.3,1) forwards}#pc-edit-modal .modal-header{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;border-bottom:1px solid var(--border-color,#30363d);flex-shrink:0}#pc-edit-modal .modal-header h3{font-size:16px;color:var(--primary-color,#58a6ff);margin:0;font-weight:600}#pc-edit-modal .modal-close{background:0 0;border:none;color:var(--text-muted,#8b949e);font-size:24px;cursor:pointer;padding:0 6px;line-height:1}#pc-edit-modal .modal-close:hover{color:var(--text-primary,#c9d1d9)}#pc-edit-modal .modal-body{padding:16px 18px;overflow-y:auto;overflow-x:hidden;flex:1;min-width:0}#pc-edit-modal .modal-footer{padding:12px 18px;border-top:1px solid var(--border-color,#30363d);display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap;flex-shrink:0;background:var(--bg-elevated,#0d1117)}.pc-modal-content{max-width:760px;width:92%}.pc-edit-map{width:100%;height:360px;border:1px solid var(--border-color,#30363d);border-radius:8px;background:var(--bg-elevated,#0d1117);margin-bottom:14px;overflow:hidden}.pc-edit-form{display:flex;flex-direction:column;gap:14px}.pc-edit-form .pc-summary{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;font-size:12px;color:var(--text-muted,#8b949e);padding:10px 12px;background:var(--bg-elevated,#0d1117);border:1px solid var(--border-color,#30363d);border-radius:6px}.pc-edit-form .pc-summary-label{font-weight:600;color:var(--text-secondary,#c9d1d9);text-transform:uppercase;font-size:10px;letter-spacing:.5px}.pc-edit-form .pc-summary #pc-bounds{flex:1;min-width:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;word-break:break-all;color:var(--text-primary,#c9d1d9)}.pc-edit-form .pc-badge{padding:3px 10px;border-radius:12px;font-size:10px;font-weight:600;background:#238636;color:#fff;text-transform:uppercase;letter-spacing:.3px;flex-shrink:0}.pc-edit-form .pc-badge.manual{background:#6e7681}.pc-edit-form .pc-field{display:flex;flex-direction:column;gap:8px;font-size:13px;color:var(--text-secondary,#c9d1d9);font-weight:500}.pc-edit-form .pc-field-label{display:inline-flex;align-items:baseline;gap:6px}.pc-edit-form .pc-field-label strong{color:var(--primary-color,#58a6ff);font-variant-numeric:tabular-nums;min-width:22px;font-weight:600}.pc-edit-form .pc-field-label small{color:var(--text-muted,#8b949e);font-weight:400;font-size:11px}.pc-edit-form input[type=range]{width:100%;accent-color:var(--primary-color,#58a6ff)}.pc-edit-form input[type=number]{background:var(--bg-elevated,#0d1117);border:1px solid var(--border-color,#30363d);color:var(--text-primary,#c9d1d9);border-radius:6px;padding:8px 10px;font-size:13px;width:140px;max-width:100%}.pc-edit-form input[type=number]:focus{outline:0;border-color:var(--primary-color,#58a6ff)}@media (max-width:600px){.pc-edit-map{height:280px}#pc-edit-modal .modal-footer{justify-content:stretch}#pc-edit-modal .modal-footer button{flex:1 1 auto}}@keyframes feature-focus-flash-pulse{0%{background-color:rgba(255,235,59,.55)}100%{background-color:transparent}}.feature-focus-flash{animation:feature-focus-flash-pulse 1.5s ease-out}.edit-active-banner{background:#fff3cd;color:#664d03;border-bottom:1px solid #ffe69c;padding:6px 10px;font-size:11px;font-weight:600}.btn-preview-prompt{background:#4a5568;color:#fff;border:none;padding:6px 12px;border-radius:4px;cursor:pointer;margin-right:6px;font-size:13px}.btn-preview-prompt:hover{background:#2d3748}.prompt-preview-modal{position:fixed;inset:0;z-index:9999}.prompt-preview-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.6)}.prompt-preview-dialog{position:relative;max-width:900px;margin:40px auto;background:#1a202c;color:#e2e8f0;border-radius:8px;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 8px 40px rgba(0,0,0,.5)}.prompt-preview-header{padding:14px 20px;border-bottom:1px solid #2d3748;display:flex;justify-content:space-between;align-items:center}.prompt-preview-header h3{margin:0;font-size:16px;color:#e2e8f0}.prompt-preview-badge{background:#d69e2e;color:#1a202c;padding:2px 8px;border-radius:10px;font-size:11px;margin-left:8px}.prompt-preview-close{background:0 0;color:#e2e8f0;border:none;font-size:24px;cursor:pointer}.prompt-preview-body{padding:16px 20px;overflow-y:auto}.prompt-preview-loading{text-align:center;padding:40px;color:#a0aec0}.prompt-preview-summary{background:#2d3748;padding:10px 14px;border-radius:6px;margin-bottom:14px;font-size:13px}.prompt-preview-summary-row{display:flex;justify-content:space-between;padding:3px 0}.prompt-preview-summary-row strong{color:#68d391}.prompt-preview-dump code{font-size:11px;color:#a0aec0;word-break:break-all}.prompt-preview-section{margin-bottom:10px;background:#2d3748;padding:10px 14px;border-radius:6px}.prompt-preview-section summary{cursor:pointer;font-weight:600;display:flex;align-items:center;gap:8px}.prompt-preview-section em{color:#a0aec0;font-size:12px;font-weight:400}.pp-tokens{color:#68d391;font-size:12px;font-weight:400}.pp-copy-btn{margin-left:auto;background:#4a5568;color:#fff;border:none;padding:3px 10px;border-radius:3px;cursor:pointer;font-size:11px}.pp-copy-btn:hover{background:#718096}.prompt-preview-block{margin-top:8px;background:#0d1117;padding:12px;border-radius:4px;max-height:300px;overflow-y:auto;white-space:pre-wrap;word-break:break-word;font-family:'SF Mono',Monaco,Consolas,monospace;font-size:12px;color:#cbd5e0}.prompt-preview-error{color:#fc8181;padding:12px;background:#2d1517;border-radius:6px}