@import "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap";:root{--bg-primary:#0a0a0f;--bg-secondary:#12121a;--bg-tertiary:#1a1a26;--bg-glass:#12121abf;--bg-glass-hover:#1a1a26d9;--accent-primary:#6c5ce7;--accent-secondary:#a29bfe;--accent-glow:#6c5ce766;--accent-gradient:linear-gradient(135deg, #6c5ce7, #a29bfe);--text-primary:#f0f0f5;--text-secondary:#8888a0;--text-muted:#55556a;--border-color:#ffffff0f;--border-active:#6c5ce766;--success:#00d2a0;--warning:#ffc107;--danger:#ff6b6b;--space-xs:4px;--space-sm:8px;--space-md:16px;--space-lg:24px;--space-xl:32px;--space-2xl:48px;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--radius-xl:24px;--radius-full:9999px;--shadow-sm:0 2px 8px #0000004d;--shadow-md:0 4px 16px #0006;--shadow-lg:0 8px 32px #00000080;--shadow-glow:0 0 20px var(--accent-glow);--transition-fast:.15s ease;--transition-normal:.25s ease;--transition-slow:.4s cubic-bezier(.4, 0, .2, 1)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{background:var(--bg-primary);width:100%;height:100%;color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;overflow:hidden}.app{flex-direction:column;width:100%;height:100%;display:flex;position:relative}.canvas-container{flex:1;width:100%;position:relative}.header{z-index:100;padding:var(--space-md) var(--space-lg);pointer-events:none;background:linear-gradient(#0a0a0fe6 0%,#0000 100%);justify-content:space-between;align-items:center;display:flex;position:absolute;top:0;left:0;right:0}.header>*{pointer-events:auto}.header-brand{align-items:center;gap:var(--space-sm);display:flex}.header-brand .logo-icon{background:var(--accent-gradient);border-radius:var(--radius-md);width:36px;height:36px;box-shadow:var(--shadow-glow);justify-content:center;align-items:center;font-size:18px;display:flex}.header-brand h1{letter-spacing:-.02em;background:var(--accent-gradient);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:18px;font-weight:600}.header-actions{align-items:center;gap:var(--space-sm);display:flex}.btn{align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);border:1px solid var(--border-color);border-radius:var(--radius-md);background:var(--bg-glass);-webkit-backdrop-filter:blur(12px);color:var(--text-primary);cursor:pointer;transition:all var(--transition-normal);white-space:nowrap;font-family:inherit;font-size:13px;font-weight:500;display:inline-flex}.btn:hover{background:var(--bg-glass-hover);border-color:var(--border-active);box-shadow:var(--shadow-glow);transform:translateY(-1px)}.btn:active{transform:translateY(0)}.btn-primary{background:var(--accent-gradient);color:#fff;border-color:#0000}.btn-primary:hover{box-shadow:var(--shadow-glow);filter:brightness(1.1);border-color:#0000}.btn-icon{border-radius:var(--radius-md);justify-content:center;align-items:center;width:36px;height:36px;padding:0;font-size:16px;display:flex}.dropzone-overlay{z-index:200;-webkit-backdrop-filter:blur(20px);background:#0a0a0feb;justify-content:center;align-items:center;animation:.2s fadeIn;display:flex;position:absolute;inset:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.dropzone-content{align-items:center;gap:var(--space-lg);padding:var(--space-2xl);border:2px dashed var(--accent-secondary);border-radius:var(--radius-xl);background:#6c5ce70d;flex-direction:column;animation:2s ease-in-out infinite pulse-border;display:flex}@keyframes pulse-border{0%,to{border-color:var(--accent-secondary)}50%{border-color:var(--accent-primary)}}.dropzone-icon{background:var(--accent-gradient);border-radius:var(--radius-lg);width:80px;height:80px;box-shadow:var(--shadow-glow);justify-content:center;align-items:center;font-size:36px;animation:3s ease-in-out infinite float;display:flex}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.dropzone-text h2{text-align:center;margin-bottom:var(--space-xs);font-size:22px;font-weight:600}.dropzone-text p{color:var(--text-secondary);text-align:center;font-size:14px}.welcome-overlay{z-index:50;justify-content:center;align-items:center;gap:var(--space-xl);pointer-events:none;flex-direction:column;display:flex;position:absolute;inset:0}.welcome-overlay>*{pointer-events:auto}.welcome-card{align-items:center;gap:var(--space-lg);padding:var(--space-2xl) var(--space-2xl);background:var(--bg-glass);-webkit-backdrop-filter:blur(20px);border:1px solid var(--border-color);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);text-align:center;flex-direction:column;max-width:420px;animation:.6s cubic-bezier(.4,0,.2,1) slideUp;display:flex}@keyframes slideUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.welcome-icon{background:var(--accent-gradient);border-radius:var(--radius-lg);width:72px;height:72px;box-shadow:var(--shadow-glow);justify-content:center;align-items:center;font-size:32px;display:flex}.welcome-card h2{letter-spacing:-.02em;font-size:24px;font-weight:700}.welcome-card p{color:var(--text-secondary);font-size:14px;line-height:1.6}.welcome-divider{align-items:center;gap:var(--space-md);width:100%;color:var(--text-muted);font-size:12px;display:flex}.welcome-divider:before,.welcome-divider:after{content:"";background:var(--border-color);flex:1;height:1px}.control-panel{bottom:var(--space-lg);z-index:100;align-items:center;gap:var(--space-sm);padding:var(--space-sm);background:var(--bg-glass);-webkit-backdrop-filter:blur(16px);border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);animation:.4s cubic-bezier(.4,0,.2,1) slideUp;display:flex;position:absolute;left:50%;transform:translate(-50%)}.control-panel .divider{background:var(--border-color);width:1px;height:24px;margin:0 var(--space-xs)}.control-btn{border-radius:var(--radius-md);width:40px;height:40px;color:var(--text-secondary);cursor:pointer;transition:all var(--transition-normal);background:0 0;border:none;justify-content:center;align-items:center;font-size:18px;display:flex;position:relative}.control-btn:hover{color:var(--text-primary);background:#ffffff0f}.control-btn.active{color:var(--accent-secondary);background:#6c5ce726}.control-btn .tooltip{padding:var(--space-xs) var(--space-sm);background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-primary);white-space:nowrap;opacity:0;pointer-events:none;transition:opacity var(--transition-fast);font-size:11px;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%)}.control-btn:hover .tooltip{opacity:1}.model-info{bottom:var(--space-lg);right:var(--space-lg);z-index:100;padding:var(--space-md);background:var(--bg-glass);-webkit-backdrop-filter:blur(16px);border:1px solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-md);min-width:200px;animation:.4s cubic-bezier(.4,0,.2,1) slideUp;position:absolute}.model-info h3{margin-bottom:var(--space-sm);color:var(--accent-secondary);font-size:13px;font-weight:600}.model-info-row{padding:var(--space-xs) 0;justify-content:space-between;align-items:center;font-size:12px;display:flex}.model-info-row .label{color:var(--text-secondary)}.model-info-row .value{color:var(--text-primary);font-weight:500}.loading-overlay{z-index:300;justify-content:center;align-items:center;gap:var(--space-lg);-webkit-backdrop-filter:blur(20px);background:#0a0a0ff2;flex-direction:column;display:flex;position:absolute;inset:0}.loading-spinner{border-radius:var(--radius-full);border:3px solid var(--border-color);border-top-color:var(--accent-primary);width:60px;height:60px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.loading-text{color:var(--text-secondary);font-size:14px;font-weight:500}.loading-progress{background:var(--bg-tertiary);border-radius:var(--radius-full);width:200px;height:3px;overflow:hidden}.loading-progress-bar{background:var(--accent-gradient);border-radius:var(--radius-full);height:100%;transition:width .3s}.side-panel{top:70px;right:var(--space-lg);z-index:100;background:var(--bg-glass);-webkit-backdrop-filter:blur(16px);border:1px solid var(--border-color);border-radius:var(--radius-lg);width:260px;box-shadow:var(--shadow-lg);animation:.3s cubic-bezier(.4,0,.2,1) slideIn;position:absolute;overflow:hidden}@keyframes slideIn{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}.side-panel-header{padding:var(--space-md);border-bottom:1px solid var(--border-color);justify-content:space-between;align-items:center;display:flex}.side-panel-header h3{color:var(--text-primary);font-size:13px;font-weight:600}.side-panel-body{padding:var(--space-md);gap:var(--space-md);flex-direction:column;display:flex}.setting-group{gap:var(--space-sm);flex-direction:column;display:flex}.setting-group label{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);font-size:11px;font-weight:600}.setting-row{justify-content:space-between;align-items:center;display:flex}.setting-row span{color:var(--text-secondary);font-size:13px}.toggle{background:var(--bg-tertiary);border-radius:var(--radius-full);cursor:pointer;width:40px;height:22px;transition:background var(--transition-normal);border:1px solid var(--border-color);position:relative}.toggle.active{background:var(--accent-primary);border-color:var(--accent-primary)}.toggle:after{content:"";background:var(--text-primary);border-radius:var(--radius-full);width:16px;height:16px;transition:transform var(--transition-normal);position:absolute;top:2px;left:2px}.toggle.active:after{transform:translate(18px)}.lod-badge{top:70px;left:var(--space-lg);z-index:100;align-items:center;gap:var(--space-sm);padding:var(--space-xs) var(--space-md);background:var(--bg-glass);-webkit-backdrop-filter:blur(12px);border:1px solid var(--border-color);border-radius:var(--radius-full);color:var(--text-secondary);transition:all var(--transition-normal);font-size:11px;font-weight:600;animation:.3s fadeIn;display:flex;position:absolute}.lod-badge .lod-dot{border-radius:var(--radius-full);width:8px;height:8px;animation:1.5s ease-in-out infinite pulse-dot}.lod-badge.lod-loading .lod-dot{background:var(--warning)}.lod-badge.lod-bbox .lod-dot{background:var(--danger)}.lod-badge.lod-low .lod-dot{background:#ff9f43}.lod-badge.lod-medium .lod-dot{background:#feca57}.lod-badge.lod-full .lod-dot{background:var(--success);animation:none}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.4}}.fps-stats{opacity:.85;z-index:100!important;position:absolute!important;inset:auto 24px 72px auto!important}.floor-panel{top:70px;left:var(--space-lg);z-index:100;background:var(--bg-glass);-webkit-backdrop-filter:blur(16px);border:1px solid var(--border-color);border-radius:var(--radius-lg);width:176px;box-shadow:var(--shadow-lg);flex-direction:column;animation:.3s cubic-bezier(.4,0,.2,1) slideIn;display:flex;position:absolute;bottom:90px;overflow:hidden}.floor-panel-header{padding:var(--space-sm) var(--space-md);border-bottom:1px solid var(--border-color);flex-shrink:0;justify-content:space-between;align-items:center;display:flex}.floor-panel-header h3{color:var(--text-primary);font-size:12px;font-weight:600}.floor-btn-sm{border:1px solid var(--border-color);border-radius:var(--radius-sm);color:var(--accent-secondary);cursor:pointer;transition:all var(--transition-fast);background:0 0;padding:2px 8px;font-family:inherit;font-size:10px;font-weight:600}.floor-btn-sm:hover{border-color:var(--border-active);background:#6c5ce726}.floor-list{padding:var(--space-xs) 0;scrollbar-width:thin;scrollbar-color:var(--bg-tertiary) transparent;flex:1;overflow-y:auto}.floor-list::-webkit-scrollbar{width:4px}.floor-list::-webkit-scrollbar-track{background:0 0}.floor-list::-webkit-scrollbar-thumb{background:var(--bg-tertiary);border-radius:2px}.floor-item{padding:1px var(--space-sm);transition:background var(--transition-fast);align-items:center;gap:2px;display:flex}.floor-item:hover{background:#ffffff0a}.floor-item.basement{opacity:.7}.floor-toggle{align-items:center;gap:var(--space-sm);border-radius:var(--radius-sm);color:var(--text-muted);cursor:pointer;transition:all var(--transition-fast);background:0 0;border:none;flex:1;padding:4px 6px;font-family:inherit;font-size:12px;font-weight:500;display:flex}.floor-item.active .floor-toggle{color:var(--text-primary)}.floor-indicator{background:var(--bg-tertiary);border:1px solid var(--border-color);width:8px;height:8px;transition:all var(--transition-fast);border-radius:2px;flex-shrink:0}.floor-item.active .floor-indicator{background:var(--accent-primary);border-color:var(--accent-secondary);box-shadow:0 0 6px var(--accent-glow)}.floor-label{font-variant-numeric:tabular-nums}.floor-action{border-radius:var(--radius-sm);width:26px;height:26px;color:var(--text-muted);cursor:pointer;opacity:.75;transition:all var(--transition-fast);background:#ffffff0a;border:1px solid #0000;flex-shrink:0;justify-content:center;align-items:center;display:flex}.floor-item:hover .floor-action{opacity:1}.floor-action-visibility.on{color:#4ade80;background:#4ade8014;border-color:#4ade804d}.floor-action-visibility.off{color:#f87171;background:#f8717114;border-color:#f871714d}.floor-action-visibility.on:hover{color:#fff;background:#4ade80e6;border-color:#4ade80;box-shadow:0 0 10px #4ade8080}.floor-action-visibility.off:hover{color:#fff;background:#f87171e6;border-color:#f87171;box-shadow:0 0 10px #f8717180}.floor-action-below{color:#60a5fa;background:#60a5fa14;border-color:#60a5fa4d}.floor-action-below:hover{color:#fff;background:#60a5fae6;border-color:#60a5fa;box-shadow:0 0 10px #60a5fa80}.floor-action-isolate{color:var(--accent-secondary,#a78bfa);background:#a78bfa14;border-color:#a78bfa4d}.floor-action-isolate:hover{color:#fff;border-color:var(--accent-secondary,#a78bfa);background:#a78bfae6;box-shadow:0 0 10px #a78bfa80}.floor-panel-footer{padding:var(--space-xs) var(--space-md);border-top:1px solid var(--border-color);flex-shrink:0}.floor-tower-group{flex-direction:column;display:flex}.floor-tower-header{z-index:1;background:#ffffff0a;border-radius:6px;align-items:center;gap:4px;margin-top:4px;padding:6px 8px;display:flex;position:sticky;top:0}.floor-tower-toggle{color:inherit;cursor:pointer;text-align:left;background:0 0;border:none;flex:1;align-items:center;gap:6px;padding:2px 0;font-size:13px;font-weight:600;display:flex}.floor-tower-caret{width:10px;font-size:10px;transition:transform .15s;display:inline-block}.floor-tower-caret.collapsed{transform:rotate(-90deg)}.floor-tower-label{flex:1}.floor-tower-count{opacity:.7;font-size:11px;font-weight:400}.floor-tower-children{border-left:1px dashed #ffffff1f;flex-direction:column;gap:2px;margin:4px 0 4px 8px;padding-left:12px;display:flex}.floor-range-info{color:var(--text-muted);text-align:center;font-size:10px}@media (width<=768px){.header{padding:var(--space-sm) var(--space-md)}.header-brand h1{font-size:15px}.model-info{display:none}.side-panel{right:var(--space-md);width:240px}.control-panel{bottom:var(--space-md)}.welcome-card{margin:0 var(--space-md);padding:var(--space-xl)}.lod-badge{top:55px;left:var(--space-md)}}.poi-marker{cursor:pointer;color:#fff;width:34px;height:34px;transition:transform var(--transition-fast);-webkit-user-select:none;user-select:none;border:2px solid #ffffffd9;border-radius:50%;justify-content:center;align-items:center;padding:0;font-family:inherit;font-size:16px;line-height:1;display:flex;transform:translate(-50%,-50%)}.poi-marker:hover{z-index:10;transform:translate(-50%,-50%)scale(1.18)}.poi-marker.selected{border-color:#fff;animation:1.6s ease-in-out infinite poi-pulse;transform:translate(-50%,-50%)scale(1.25)}.poi-marker.warning:after{content:"";background:var(--danger);border:2px solid var(--bg-primary);border-radius:50%;width:10px;height:10px;animation:1.2s ease-in-out infinite poi-blink;position:absolute;top:-3px;right:-3px}.poi-marker .poi-icon{pointer-events:none}@keyframes poi-pulse{0%,to{box-shadow:0 0 0 3px #fff3,0 0 18px}50%{box-shadow:0 0 0 6px #ffffff1a,0 0 28px}}@keyframes poi-blink{0%,to{opacity:1}50%{opacity:.35}}.poi-panel{top:80px;right:var(--space-md);z-index:50;background:var(--bg-glass);border:1px solid var(--border-color);border-radius:var(--radius-lg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);padding:var(--space-md);width:200px;box-shadow:var(--shadow-md);position:absolute}.poi-panel-header{margin-bottom:var(--space-sm);justify-content:space-between;align-items:center;display:flex}.poi-panel-header h3{color:var(--text-primary);margin:0;font-size:13px;font-weight:600}.poi-top-toggle{width:100%;margin-bottom:var(--space-sm);border:1px solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);background:#ffffff0a;justify-content:space-between;align-items:center;padding:6px 8px;font-size:11px;display:flex}.poi-top-toggle:hover{color:var(--text-primary);background:#ffffff14}.poi-top-toggle.active{color:#fff;background:#60a5fa1a;border-color:#60a5fa80}.poi-top-toggle-label{align-items:center;gap:4px;display:flex}.poi-top-toggle-floor{color:#60a5fa;font-variant-numeric:tabular-nums;font-weight:600}.poi-top-toggle-switch{width:28px;height:16px;transition:all var(--transition-fast);background:#ffffff1a;border-radius:8px;flex-shrink:0;position:relative}.poi-top-toggle-switch.on{background:#60a5fa}.poi-top-toggle-thumb{width:12px;height:12px;transition:transform var(--transition-fast);background:#fff;border-radius:50%;position:absolute;top:2px;left:2px}.poi-top-toggle-switch.on .poi-top-toggle-thumb{transform:translate(12px)}.poi-type-list{flex-direction:column;gap:6px;display:flex}.poi-type-btn{align-items:center;gap:var(--space-sm);border:1px solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);text-align:left;background:#ffffff05;padding:6px 8px;font-family:inherit;font-size:12px;display:flex}.poi-type-btn:hover{background:var(--bg-glass-hover);color:var(--text-primary)}.poi-type-btn.active{color:var(--text-primary);background:#ffffff0d}.poi-type-icon{color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:22px;height:22px;font-size:11px;display:inline-flex}.poi-type-label{flex:1}.poi-type-count{color:var(--text-muted);border-radius:var(--radius-full);text-align:center;background:#ffffff0a;min-width:22px;padding:1px 6px;font-size:11px}.poi-type-btn:not(.active) .poi-type-icon{opacity:.35}.poi-detail{z-index:60;background:var(--bg-glass);border:1px solid var(--border-color);border-radius:var(--radius-lg);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);padding:var(--space-md) var(--space-lg);min-width:320px;box-shadow:var(--shadow-lg);position:absolute;bottom:90px;left:50%;transform:translate(-50%)}.poi-detail-header{align-items:center;gap:var(--space-md);margin-bottom:var(--space-sm);padding-bottom:var(--space-sm);border-bottom:1px solid var(--border-color);display:flex}.poi-detail-icon{color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;font-size:18px;display:flex}.poi-detail-title{flex:1}.poi-detail-title h3{color:var(--text-primary);margin:0;font-size:14px;font-weight:600}.poi-detail-floor{color:var(--text-secondary);margin-top:2px;font-size:11px}.poi-detail-close{border:1px solid var(--border-color);color:var(--text-secondary);border-radius:var(--radius-sm);cursor:pointer;width:26px;height:26px;transition:all var(--transition-fast);background:0 0;justify-content:center;align-items:center;font-size:12px;display:flex}.poi-detail-close:hover{color:var(--text-primary);background:var(--bg-glass-hover)}.poi-detail-body{flex-direction:column;gap:6px;display:flex}.poi-detail-row{justify-content:space-between;align-items:center;font-size:12px;display:flex}.poi-detail-row .label{color:var(--text-secondary)}.poi-detail-row .value{color:var(--text-primary);font-feature-settings:"tnum";font-weight:500}.poi-detail-row .value.status-warning{color:var(--danger)}.poi-detail-row .value.status-normal{color:var(--success)}.poi-detail-actions{border-top:1px solid var(--border-color);justify-content:flex-end;margin-top:8px;padding-top:8px;display:flex}.poi-delete-btn{border:1px solid var(--danger);color:var(--danger);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast);background:0 0;padding:6px 12px;font-size:12px}.poi-delete-btn:hover{background:var(--danger);color:#fff}.poi-restore-btn{background:var(--bg-glass);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--border-color);color:var(--text-primary);border-radius:var(--radius-sm);cursor:pointer;z-index:50;transition:all var(--transition-fast);padding:8px 14px;font-size:12px;position:fixed;bottom:16px;left:50%;transform:translate(-50%)}.poi-restore-btn:hover{background:var(--bg-glass-hover);border-color:var(--accent)}.app.dash-mode{background:#0a1624;overflow:hidden}.dash-header{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:200;background:linear-gradient(#0f1e32f2,#0f1e32d9);border-bottom:1px solid #ffffff0f;justify-content:space-between;align-items:center;height:56px;padding:0 20px;display:flex;position:fixed;top:0;left:0;right:0}.dash-header.dach-theme{-webkit-backdrop-filter:none;backdrop-filter:none;background:#fff;border-bottom:1px solid #e5e7eb;height:64px;padding:0 24px;box-shadow:0 1px 2px #0000000a}.dash-header.dach-theme .dash-header-left{gap:16px}.dash-header.dach-theme .dash-header-right{gap:12px}.dach-hamburger{cursor:pointer;color:#111827;background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;width:36px;height:36px;display:inline-flex}.dach-hamburger:hover{background:#f3f4f6}.dach-logo{align-items:center;gap:14px;display:flex}.dach-logo-badge{background:linear-gradient(#fef2f2,#fff 40%);border:2px solid #dc2626;border-radius:50%;flex-direction:column;justify-content:center;align-items:center;width:52px;height:52px;line-height:1;display:flex;box-shadow:0 2px 4px #dc262626}.dach-logo-cn{color:#dc2626;letter-spacing:1px;font-family:Noto Sans TC,-apple-system,sans-serif;font-size:18px;font-weight:800}.dach-logo-en{color:#dc2626;margin-top:1px;font-size:8px;font-style:italic;font-weight:700}.dach-title{color:#111827;letter-spacing:.5px;margin:0;font-size:22px;font-weight:700}.dach-site-selector{color:#111827;cursor:pointer;background:#f3f4f6;border:1px solid #e5e7eb;border-radius:10px;align-items:center;gap:10px;padding:8px 16px;font-family:inherit;font-size:15px;font-weight:500;transition:background .15s;display:inline-flex}.dach-site-selector:hover{background:#e5e7eb}.dach-site-selector svg{color:#6b7280}.dach-notif{color:#111827;cursor:pointer;background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;width:36px;height:36px;display:inline-flex;position:relative}.dach-notif:hover{background:#f3f4f6}.dach-badge{color:#fff;background:#ef4444;border:2px solid #fff;border-radius:9px;justify-content:center;align-items:center;min-width:18px;height:18px;padding:0 5px;font-size:11px;font-weight:700;line-height:1;display:inline-flex;position:absolute;top:2px;right:2px}.dach-user{color:#111827;cursor:pointer;background:0 0;border:none;border-radius:999px;align-items:center;gap:8px;padding:4px 12px 4px 4px;font-family:inherit;font-size:15px;font-weight:500;display:inline-flex}.dach-user:hover{background:#f3f4f6}.dach-user-avatar{color:#374151;background:#f3f4f6;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;display:inline-flex}.dach-refresh{color:#111827;cursor:pointer;background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;width:36px;height:36px;display:inline-flex}.dach-refresh:hover{background:#f3f4f6}.app.dash-mode .canvas-container{top:64px}.dash-header-left,.dash-header-center,.dash-header-right{align-items:center;gap:10px;display:flex}.dash-logo{color:#fff;align-items:center;gap:8px;font-size:15px;font-weight:600;display:flex}.dash-logo-mark{color:#fff;background:linear-gradient(135deg,#ef4444,#b91c1c);border-radius:6px;justify-content:center;align-items:center;width:28px;height:28px;font-size:14px;font-weight:800;display:inline-flex}.dash-icon-btn{color:#cbd5e1;cursor:pointer;background:#ffffff0a;border:1px solid #ffffff0f;border-radius:50%;justify-content:center;align-items:center;width:36px;height:36px;transition:all .15s;display:inline-flex;position:relative}.dash-icon-btn:hover{background:#ffffff1a}.dash-badge-dot{background:#ef4444;border-radius:50%;width:8px;height:8px;position:absolute;top:6px;right:6px}.dash-building-selector{color:#fff;cursor:pointer;background:#ffffff0f;border:1px solid #ffffff14;border-radius:999px;align-items:center;gap:8px;padding:6px 16px;font-size:14px;font-weight:500;transition:all .15s;display:inline-flex}.dash-building-selector:hover{background:#ffffff1f}.dash-building-icon{font-size:14px}.dash-chevron{opacity:.7;font-size:10px}.dash-user{color:#fff;cursor:pointer;background:#ffffff0a;border:1px solid #ffffff0f;border-radius:999px;align-items:center;gap:8px;padding:4px 12px 4px 4px;font-size:13px;display:inline-flex}.dash-user-avatar{background:linear-gradient(135deg,#f59e0b,#d97706);border-radius:50%;justify-content:center;align-items:center;width:28px;height:28px;font-size:14px;display:inline-flex}.fn-tabs{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:150;background:#0a1423bf;border:1px solid #ffffff0f;border-radius:999px;gap:2px;padding:4px;display:flex;position:fixed;top:76px;left:50%;transform:translate(-50%)}.fn-tab{color:#94a3b8;cursor:pointer;background:0 0;border:none;border-radius:999px;padding:6px 16px;font-family:inherit;font-size:13px;transition:all .15s}.fn-tab:hover{color:#fff}.fn-tab.active{color:#fff;background:linear-gradient(#60a5fa40,#60a5fa1a);position:relative}.fn-tab.active:after{content:"";background:#fbbf24;border-radius:2px;height:2px;position:absolute;bottom:2px;left:20%;right:20%}.floor-tabs{z-index:100;flex-direction:column;gap:6px;display:flex;position:fixed;top:120px;left:302px}.floor-tab{color:#94a3b8;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);cursor:pointer;text-align:center;font-variant-numeric:tabular-nums;background:#0f1928cc;border:1px solid #ffffff0f;border-radius:999px;min-width:44px;padding:7px 10px;font-family:inherit;font-size:12px;font-weight:500;transition:all .15s}.floor-tab:hover{color:#fff;border-color:#ffffff26}.floor-tab.in-range{color:#cbd5e1;background:#60a5fa14;border-color:#60a5fa33}.floor-tab.active{color:#0a1624;background:#fbbf24;border-color:#fbbf24;font-weight:700;box-shadow:0 0 12px #fbbf2466}.floor-tab-all{font-weight:700}.dash-stack{z-index:90;flex-direction:column;gap:12px;width:272px;max-height:calc(100vh - 170px);padding:8px;display:flex;position:fixed;top:80px;overflow-y:auto}.dash-stack::-webkit-scrollbar{width:0}.dash-stack-left{left:12px}.dash-stack-right{right:12px}.dash-card{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#101c2cd9;border:1px solid #ffffff0f;border-radius:12px;padding:14px 16px;box-shadow:0 4px 16px #0000004d}.dash-card-header{border-bottom:1px solid #ffffff0d;align-items:center;gap:8px;margin-bottom:12px;padding-bottom:10px;display:flex}.dash-card-icon{font-size:16px}.dash-card-header h3{color:#fff;margin:0;font-size:13px;font-weight:600}.dash-card-body{flex-direction:column;gap:10px;display:flex}.dash-row{justify-content:space-between;align-items:center;font-size:12px;display:flex}.dash-row-label{color:#94a3b8}.dash-row-value{color:#fff;font-variant-numeric:tabular-nums;font-weight:500}.dash-metric{flex-direction:column;gap:2px;display:flex}.dash-metric-head{align-items:center;gap:6px;display:flex}.dash-metric-icon{font-size:14px}.dash-metric-label{color:#94a3b8;font-size:11px}.dash-metric-value{color:#fff;align-items:baseline;gap:4px;display:flex}.dash-metric-number{font-variant-numeric:tabular-nums;font-size:22px;font-weight:700}.dash-metric-unit{color:#94a3b8;font-size:11px}.dash-env-grid{grid-template-columns:1fr 1fr;gap:12px 10px;display:grid}.dash-gauge-wrap{flex-direction:column;align-items:center;gap:4px;display:flex}.dash-gauge{display:block}.dash-gauge-caption{color:#94a3b8;font-size:11px}.dash-tri{border-top:1px solid #ffffff0d;grid-template-columns:1fr 1fr 1fr;gap:6px;margin-top:8px;padding-top:10px;display:grid}.dash-tri-cell{flex-direction:column;align-items:center;gap:2px;display:flex}.dash-tri-value{font-variant-numeric:tabular-nums;font-size:20px;font-weight:700}.dash-tri-label{color:#94a3b8;font-size:11px}.dash-alert-total{border-bottom:1px solid #ffffff0d;justify-content:space-between;align-items:center;margin-bottom:8px;padding-bottom:10px;display:flex}.dash-alert-total-label{color:#94a3b8;font-size:12px}.dash-alert-total-value{color:#ef4444;font-variant-numeric:tabular-nums;font-size:36px;font-weight:800}.dash-alert-rows{flex-direction:column;gap:6px;display:flex}.dash-traffic-grid{grid-template-columns:1fr 1fr;gap:12px 10px;display:grid}.dash-traffic-grid .dash-metric-number{font-size:20px}.equip-panel{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:95;background:#101c2ce0;border:1px solid #ffffff0f;border-radius:12px;flex-direction:column;width:260px;max-height:calc(100vh - 170px);padding:14px;display:flex;position:fixed;top:80px;right:12px;box-shadow:0 4px 16px #0000004d}.equip-header{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.equip-header h3{color:#fff;margin:0;font-size:13px;font-weight:600}.equip-visibility-toggle{cursor:pointer;background:#ffffff0a;border:1px solid #0000;border-radius:6px;justify-content:center;align-items:center;width:26px;height:26px;transition:all .15s;display:inline-flex}.equip-visibility-toggle.on{color:#4ade80;background:#4ade8014;border-color:#4ade804d}.equip-visibility-toggle.off{color:#f87171;background:#f8717114;border-color:#f871714d}.equip-visibility-toggle.on:hover{color:#fff;background:#4ade80e6;border-color:#4ade80;box-shadow:0 0 10px #4ade8080}.equip-visibility-toggle.off:hover{color:#fff;background:#f87171e6;border-color:#f87171;box-shadow:0 0 10px #f8717180}.equip-chips{flex-wrap:wrap;gap:4px;margin-bottom:10px;display:flex}.equip-chip{color:#94a3b8;cursor:pointer;background:0 0;border:1px solid #ffffff14;border-radius:999px;padding:3px 10px;font-family:inherit;font-size:11px;transition:all .15s}.equip-chip:hover{color:#fff;border-color:#fff3}.equip-chip.active{color:#0a1624;background:#fbbf24;border-color:#fbbf24;font-weight:600}.equip-search input{color:#fff;background:#00000040;border:1px solid #ffffff14;border-radius:6px;width:100%;margin-bottom:10px;padding:6px 10px;font-family:inherit;font-size:12px}.equip-search input::placeholder{color:#64748b}.equip-tree{flex-direction:column;flex:1;gap:4px;display:flex;overflow-y:auto}.equip-tree::-webkit-scrollbar{width:4px}.equip-tree::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:2px}.equip-group-head{color:#cbd5e1;cursor:pointer;background:0 0;border:none;align-items:center;gap:6px;width:100%;padding:6px 4px;font-family:inherit;font-size:12px;font-weight:600;display:flex}.equip-group-caret{font-size:10px;transition:transform .15s;display:inline-block;transform:rotate(-90deg)}.equip-group-caret.open{transform:rotate(0)}.equip-group-count{color:#94a3b8;background:#ffffff0f;border-radius:8px;margin-left:auto;padding:1px 6px;font-size:10px}.equip-group-body{flex-direction:column;gap:1px;display:flex}.equip-item{color:#cbd5e1;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:4px;align-items:center;gap:6px;padding:4px 8px 4px 20px;font-family:inherit;font-size:11px;display:flex}.equip-item:hover{color:#fff;background:#ffffff0a}.equip-item.active{color:#fff;background:#60a5fa26}.equip-dot{border-radius:50%;flex-shrink:0;width:6px;height:6px}.equip-label{font-variant-numeric:tabular-nums}.poi-pill{color:#fff;cursor:pointer;white-space:nowrap;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0f1928eb;border:1px solid #ffffff1a;border-radius:999px;align-items:center;gap:6px;padding:3px 10px 3px 6px;font-family:inherit;font-size:11px;font-weight:500;transition:all .15s;display:inline-flex;box-shadow:0 2px 6px #0000004d}.poi-pill:hover{background:#1e2d41f2;border-color:#ffffff40;transform:translateY(-1px)}.poi-pill.selected{border-color:#fbbf24;box-shadow:0 0 12px #fbbf2480}.poi-pill-dot{border-radius:50%;flex-shrink:0;width:6px;height:6px}.poi-pill-label{font-variant-numeric:tabular-nums}.bottom-legend{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:110;background:#0f1928d9;border:1px solid #ffffff14;border-radius:999px;align-items:center;gap:16px;padding:8px 18px;display:flex;position:fixed;bottom:16px;left:50%;transform:translate(-50%)}.bottom-legend-dots{color:#cbd5e1;gap:12px;font-size:12px;display:flex}.bottom-legend-dots>span{align-items:center;gap:6px;display:inline-flex}.legend-dot{border-radius:50%;width:8px;height:8px;display:inline-block}.day-night-toggle{color:#fff;cursor:pointer;background:0 0;border:1px solid #ffffff1a;border-radius:999px;align-items:center;gap:8px;padding:4px 10px 4px 8px;font-family:inherit;font-size:12px;display:inline-flex}.day-night-icon{font-size:12px}.day-night-track{background:#fbbf24;border-radius:8px;width:32px;height:16px;position:relative}.day-night-toggle.night .day-night-track{background:#475569}.day-night-thumb{background:#fff;border-radius:50%;width:12px;height:12px;transition:transform .15s;position:absolute;top:2px;left:2px}.day-night-toggle.night .day-night-thumb{transform:translate(16px)}.app.dash-mode .canvas-container{position:fixed;inset:56px 0 0}.access-status-row{border-bottom:1px dashed #ffffff0a;align-items:center;gap:10px;padding:6px 0;display:flex}.access-status-row:last-child{border-bottom:none}.access-status-icon{background:#60a5fa26;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;font-size:14px;display:inline-flex}.access-status-label{color:#94a3b8;flex:1;font-size:12px}.access-status-value{color:#fff;font-variant-numeric:tabular-nums;font-size:20px;font-weight:700}.access-door-grid{grid-template-columns:1fr 1fr;gap:6px;display:grid}.access-door{color:#cbd5e1;background:#ffffff08;border:1px solid #ffffff0f;border-radius:6px;align-items:center;gap:6px;padding:8px 10px;font-size:11px;display:flex;position:relative}.access-door.alert{color:#fecaca;background:#ef44441a;border-color:#ef44444d}.access-door-icon{flex-shrink:0;font-size:12px}.access-door-name{flex:1;line-height:1.3}.access-door-dot{border-radius:50%;flex-shrink:0;width:7px;height:7px}.access-log-row{border-bottom:1px dashed #ffffff0a;align-items:center;gap:10px;padding:8px 0;display:flex}.access-log-row:last-child{border-bottom:none}.access-log-avatar{background:linear-gradient(135deg,#60a5fa,#3b82f6);border-radius:50%;flex-shrink:0;width:30px;height:30px}.access-log-body{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.access-log-name{color:#fff;font-size:12px;font-weight:600}.access-log-location{color:#94a3b8;font-size:10px}.access-log-time{color:#cbd5e1;font-variant-numeric:tabular-nums;font-size:11px}.access-line-chart,.access-donut{margin:0 auto;display:block}.access-donut-wrap{justify-content:center;display:flex}.access-zone-legend{border-top:1px solid #ffffff0d;flex-direction:column;gap:6px;margin-top:8px;padding-top:10px;display:flex}.access-zone-row{align-items:center;gap:8px;font-size:11px;display:flex}.access-zone-dot{border-radius:50%;width:8px;height:8px}.access-zone-label{color:#cbd5e1;flex:1}.access-zone-value{color:#fff;font-variant-numeric:tabular-nums;font-weight:600}.access-alert-row{background:#ef444414;border:1px solid #ef444433;border-radius:8px;align-items:flex-start;gap:10px;margin-bottom:6px;padding:10px;display:flex}.access-alert-row:last-child{margin-bottom:0}.access-alert-icon{color:#ef4444;background:#ef444440;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;font-size:14px;display:inline-flex}.access-alert-body{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.access-alert-title-row{justify-content:space-between;align-items:center;gap:6px;display:flex}.access-alert-title{color:#fff;font-size:12px;font-weight:600}.access-alert-time{color:#94a3b8;font-variant-numeric:tabular-nums;font-size:10px}.access-alert-detail{color:#94a3b8;font-size:10px;line-height:1.4}.app.dash-mode .control-panel{display:none}.bottom-ctrl-group{gap:4px;display:flex}.bottom-ctrl-btn{color:#cbd5e1;cursor:pointer;background:#ffffff0a;border:1px solid #ffffff14;border-radius:6px;justify-content:center;align-items:center;width:30px;height:30px;font-family:inherit;font-size:14px;transition:all .15s;display:inline-flex}.bottom-ctrl-btn:hover{color:#fff;background:#ffffff1a;border-color:#ffffff2e}.bottom-ctrl-btn.active{color:#fff;background:#60a5fa38;border-color:#60a5fa99}.bottom-ctrl-divider{background:#ffffff1a;width:1px;height:22px}.bottom-ctrl-fps-label{letter-spacing:.5px;font-family:inherit;font-size:10px;font-weight:700}.ems-big-kw{color:#fbbf24;align-items:baseline;gap:4px;display:flex}.ems-big-kw-num{font-variant-numeric:tabular-nums;font-size:48px;font-weight:800;line-height:1}.ems-big-kw-unit{color:#94a3b8;font-size:14px}.ems-sub-label{color:#94a3b8;margin-bottom:10px;font-size:11px}.ems-power-bar{flex-direction:column;gap:4px;display:flex}.ems-power-bar-track{background:linear-gradient(90deg,#4ade80 0% 55%,#fbbf24 70%,#ef4444 95%);border-radius:3px;height:6px;position:relative}.ems-power-bar-marker{background:#fff;border-radius:1px;width:3px;height:12px;position:absolute;top:-3px;transform:translate(-50%);box-shadow:0 0 6px #ffffff80}.ems-power-bar-labels{color:#64748b;justify-content:space-between;font-size:10px;display:flex}.ems-delta{font-size:10px;font-weight:600}.ems-gauge-wrap{justify-content:center;display:flex}.ems-gauge{display:block}.ems-gauge-sub{border-top:1px solid #ffffff0d;grid-template-columns:1fr 1fr;gap:10px;margin-top:6px;padding-top:10px;display:grid}.ems-gauge-sub .dash-metric-number{font-size:20px}.ems-bar-chart{margin:0 auto;display:block}.ems-suggestion{background:#ffffff08;border:1px solid #ffffff0d;border-radius:8px;align-items:center;gap:10px;padding:8px;display:flex}.ems-suggestion-icon{background:#60a5fa26;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;width:30px;height:30px;font-size:16px;display:inline-flex}.ems-suggestion-body{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.ems-suggestion-title{color:#fff;font-size:12px;font-weight:500}.ems-suggestion-saving{color:#94a3b8;font-size:10px}.ems-suggestion-badge{color:#fff;border-radius:4px;flex-shrink:0;padding:2px 8px;font-size:11px;font-weight:700}.app.dash-mode .floor-panel{background:#101c2ce0;border-color:#ffffff0f;width:176px;max-height:calc(100vh - 200px);top:120px;bottom:auto;left:298px}.app.dash-mode .floor-panel-header h3{color:#fff}.app.dash-mode .poi-detail{background:#101c2ceb;border-color:#ffffff14;width:260px;min-width:0;position:fixed;inset:auto auto 80px 298px;transform:none}.app.dash-mode:has(.poi-detail) .floor-panel{max-height:calc(100vh - 380px)}.app.dash-mode.embedded .canvas-container{top:0!important}.app.dash-mode.embedded .fn-tabs{top:12px}.app.dash-mode.minimal .floor-panel{top:16px;left:16px}.reference-theme{--bg-primary:#f4f5f7;--bg-secondary:#fff;--bg-tertiary:#f8f9fb;--bg-glass:#fffffffa;--bg-glass-hover:#fff;--accent-primary:#1e88ff;--accent-secondary:#1466cc;--accent-glow:#1e88ff2e;--accent-gradient:linear-gradient(135deg, #1e88ff, #1466cc);--text-primary:#1f2330;--text-secondary:#5a6275;--text-muted:#8b93a7;--border-color:#0f172a14;--border-strong:#0f172a24;--border-active:#1e88ff;--success:#22c55e;--warning:#f59e0b;--danger:#ef4444;--info:#1e88ff;--shadow-sm:0 1px 3px #0f172a0f;--shadow-md:0 4px 14px #0f172a14;--shadow-lg:0 12px 36px #0f172a1f;--shadow-glow:0 0 0 3px var(--accent-glow)}.reference-theme,.reference-theme #root,.reference-theme body{background:var(--bg-primary);color:var(--text-primary)}.reference-theme .canvas-container{background:linear-gradient(#3a8de8 0%,#4ea1ff 50%,#6fb5ff 80%,#9acaff 95%,#b6dbff 100%)}.reference-theme canvas{background:0 0!important}.reference-theme .dash-header,.reference-theme .dashboard-header{color:#fff!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important;background:#0d1117!important;border-bottom:1px solid #ffffff14!important;height:56px!important;padding:0 16px!important}.reference-theme .dash-header *,.reference-theme .dashboard-header *{color:inherit}.reference-theme .dash-header h1,.reference-theme .dashboard-header h1{letter-spacing:.04em;font-size:14px!important;font-weight:500!important}.reference-theme .function-tabs,.reference-theme .fn-tabs{display:none!important}.reference-theme .icon-rail{border-right:1px solid var(--border-color);z-index:30;background:#fff;flex-direction:column;align-items:stretch;width:60px;padding:8px 0;display:flex;position:fixed;top:56px;bottom:0;left:0;box-shadow:1px 0 #0f172a05}.icon-rail-btn{color:#5a6275;cursor:pointer;letter-spacing:.04em;background:0 0;border:none;border-left:3px solid #0000;flex-direction:column;align-items:center;gap:4px;padding:12px 0 8px;font-size:11px;font-weight:500;transition:background .15s,color .15s;display:flex}.icon-rail-btn:hover{color:#1f2330;background:#f4f6fa}.icon-rail-btn.active{color:var(--accent-primary);border-left-color:var(--accent-primary);background:#eef4ff}.icon-rail-btn svg{stroke-width:1.6px;width:18px;height:18px}.reference-theme .canvas-container{left:60px!important}.reference-theme.app.dash-mode .dash-stack-left{left:76px!important}.reference-theme.app.dash-mode .floor-panel{top:80px!important;left:68px!important}.reference-theme .dash-card,.reference-theme .equipment-list-panel,.reference-theme .floor-panel,.reference-theme .bottom-legend{border:1px solid var(--border-color)!important;box-shadow:var(--shadow-sm)!important;-webkit-backdrop-filter:none!important;color:var(--text-primary)!important;background:#fff!important;border-radius:8px!important}.reference-theme .dash-card *,.reference-theme .dash-card-header *,.reference-theme .equipment-list-panel *,.reference-theme .floor-panel *,.reference-theme .bottom-legend *{color:inherit}.reference-theme .dash-card-header{border-bottom-color:#0f172a14!important}.reference-theme .dash-card-header h3,.reference-theme .floor-panel h3,.reference-theme .equipment-list-panel h3{letter-spacing:.02em;color:var(--text-primary)!important;font-size:13px!important;font-weight:600!important}.reference-theme .dash-row,.reference-theme .dash-metric{color:var(--text-secondary)!important}.reference-theme .dash-row .value,.reference-theme .dash-metric .value,.reference-theme .dash-card .value,.reference-theme .dash-card a,.reference-theme .dash-card button{color:var(--text-primary)!important}.reference-theme .floor-tower-header{background:#f5f7fa!important}.reference-theme .floor-tower-children{border-left-color:#0f172a14!important}.reference-theme .floor-item:hover{background:#f4f6fa!important}.reference-theme .floor-item.active .floor-toggle{color:var(--accent-primary)!important;background:#eef4ff!important}.reference-theme .floor-panel{width:460px!important;max-width:calc(100vw - 90px)!important}.reference-theme .floor-list{grid-template-columns:1fr 1fr!important;align-items:start!important;column-gap:10px!important;display:grid!important}.reference-theme .floor-tower-group[data-tower=COMMON]{grid-column:1/-1}.reference-theme .floor-tower-children{margin-left:4px!important;padding-left:8px!important}.reference-theme .floor-item{gap:4px!important;padding:2px 4px!important}.reference-theme .floor-item .floor-toggle{padding:3px 6px!important;font-size:11px!important}.reference-theme .floor-item .floor-action{padding:2px!important}.reference-theme .floor-item .floor-action svg{width:12px!important;height:12px!important}.reference-theme .poi-pill,.reference-theme button.poi-pill{position:relative;border:1px solid var(--border-color)!important;color:#1f2330!important;letter-spacing:.02em!important;white-space:nowrap!important;background:#fffffff7!important;border-radius:4px!important;align-items:center!important;gap:6px!important;padding:4px 8px 4px 6px!important;font-size:11px!important;font-weight:500!important;display:inline-flex!important;transform:translate(8px,-50%)!important;box-shadow:0 2px 8px #0f172a1f!important}.reference-theme .poi-pill:before{content:"";background:var(--success);border-radius:50%;flex-shrink:0;width:8px;height:8px;box-shadow:0 0 0 2px #22c55e2e}.reference-theme .poi-pill.warning:before{background:var(--danger);box-shadow:0 0 0 2px #ef44442e}.reference-theme .poi-pill.selected{border-color:var(--accent-primary)!important;box-shadow:0 0 0 3px var(--accent-glow), 0 2px 8px #0f172a26!important}.reference-theme .poi-pill:after{content:"";background:#0f172a59;width:8px;height:1px;position:absolute;top:50%;left:-8px}.reference-theme .bottom-legend{border-radius:999px!important;align-items:center!important;gap:16px!important;padding:6px 16px!important;font-size:12px!important;font-weight:500!important;display:flex!important}.reference-theme .bottom-legend .legend-item{align-items:center;gap:6px;display:inline-flex;color:var(--text-secondary)!important}.reference-theme .bottom-legend .legend-dot{border-radius:50%;width:8px;height:8px}.reference-theme button,.reference-theme .tab-btn,.reference-theme .control-btn{color:inherit}.reference-theme .tab-btn.active,.reference-theme .control-btn.active{color:var(--accent-primary)!important;border-color:var(--accent-primary)!important;background:#eef4ff!important}.reference-theme .bottom-ctrl-bar,.reference-theme .bottom-controls{border:1px solid var(--border-color)!important;box-shadow:var(--shadow-sm)!important;background:#fff!important}.reference-theme .bottom-ctrl-btn{color:var(--text-secondary)!important}.reference-theme .bottom-ctrl-btn:hover{color:var(--text-primary)!important;background:#f4f6fa!important}.reference-theme .bottom-ctrl-btn.active{color:var(--accent-primary)!important;background:#eef4ff!important}.reference-theme .equip-panel{width:280px!important;top:124px!important;right:16px!important}.reference-theme .equip-panel .equip-header h3{display:none}.reference-theme .equip-panel .equip-header{justify-content:flex-end!important;margin-bottom:8px!important}.equip-fab{z-index:120;color:#1f2330;cursor:pointer;background:#fff;border:1px solid #0f172a14;border-radius:999px;align-items:center;gap:6px;padding:8px 12px;font-size:12px;font-weight:600;transition:background .15s,color .15s,box-shadow .15s;display:inline-flex;position:fixed;top:80px;right:16px;box-shadow:0 4px 14px #0f172a14}.equip-fab:hover{background:#f4f6fa}.equip-fab.open{color:#fff;background:#1e88ff;border-color:#1e88ff;box-shadow:0 4px 16px #1e88ff52}.equip-fab svg{stroke-width:2px}.lang-toggle{cursor:pointer;background:#ffffff14;border:1px solid #ffffff1f;border-radius:999px;align-items:center;height:28px;margin-right:4px;padding:2px;display:inline-flex}.lang-toggle span{color:#ffffffb8;border-radius:999px;justify-content:center;align-items:center;min-width:28px;height:22px;padding:0 8px;font-size:11px;font-weight:600;transition:background .15s,color .15s;display:inline-flex}.lang-toggle span.on{color:#0d1117;background:#fff}.energy-center{z-index:60;background:#fff;border:1px solid #0f172a14;border-radius:12px;flex-direction:column;gap:8px;padding:14px 16px 10px;display:flex;position:fixed;top:100px;left:380px;right:320px;box-shadow:0 8px 28px #0f172a1a}.energy-center-head{color:#5a6275;flex-wrap:wrap;align-items:center;gap:12px;font-size:12px;display:flex}.energy-tabs{background:#f1f5fb;border-radius:999px;gap:0;padding:2px;display:inline-flex}.energy-tab{color:#5a6275;cursor:pointer;background:0 0;border:none;border-radius:999px;padding:4px 12px;font-size:12px;font-weight:600}.energy-tab.active{color:#fff;background:#1e88ff}.energy-title{color:#1f2330;text-align:center;flex:1;font-size:13px;font-weight:700}.energy-legend{align-items:center;gap:6px;display:inline-flex}.energy-legend .dot{border-radius:2px;width:8px;height:8px}.energy-svg{width:100%;height:auto}.energy-summary{border-top:1px solid #0f172a0f;grid-template-columns:repeat(3,1fr);gap:12px;padding-top:8px;display:grid}.energy-summary-num{color:#1f2330;font-size:18px;font-weight:700}.energy-summary-num.pos{color:#ef4444}.energy-summary-num.neg{color:#22c55e}.energy-summary-label{color:#5a6275;font-size:11px}.quality-tabs{z-index:60;background:#fff;border:1px solid #0f172a14;border-radius:999px;padding:4px;display:inline-flex;position:fixed;top:80px;left:50%;transform:translate(-50%);box-shadow:0 4px 14px #0f172a14}.quality-tab{color:#5a6275;cursor:pointer;background:0 0;border:none;border-radius:999px;padding:6px 16px;font-size:12px;font-weight:600}.quality-tab.active{color:#fff;background:#1e88ff}.quality-legend{z-index:60;color:#5a6275;background:#fff;border:1px solid #0f172a14;border-radius:999px;align-items:center;gap:8px;padding:6px 14px;font-size:11px;display:inline-flex;position:fixed;bottom:76px;left:50%;transform:translate(-50%);box-shadow:0 4px 14px #0f172a14}.quality-legend-label{color:#1f2330;font-weight:600}.quality-legend-bar{border:1px solid #0f172a0f;border-radius:999px;width:220px;height:8px}.quality-legend-min,.quality-legend-max{font-variant-numeric:tabular-nums}.quality-legend-unit{color:#94a3b8}.report-center{z-index:60;background:#fff;border:1px solid #0f172a14;border-radius:12px;flex-direction:column;gap:12px;padding:16px;display:flex;position:fixed;inset:76px 16px 16px 80px;overflow:auto;box-shadow:0 8px 28px #0f172a1a}.report-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.report-tabs{background:#f1f5fb;border-radius:999px;gap:0;padding:2px;display:inline-flex}.report-tab{color:#5a6275;cursor:pointer;background:0 0;border:none;border-radius:999px;padding:6px 14px;font-size:12px;font-weight:600}.report-tab.active{color:#fff;background:#1e88ff}.report-export{color:#1f2330;cursor:pointer;background:#fff;border:1px solid #0f172a14;border-radius:8px;align-items:center;gap:6px;padding:6px 12px;font-size:12px;font-weight:600;display:inline-flex}.report-export:hover{background:#f4f6fa}.report-table{border-collapse:collapse;color:#1f2330;width:100%;font-size:13px}.report-table th,.report-table td{text-align:left;border-bottom:1px solid #0f172a0f;padding:10px 12px}.report-table th{color:#5a6275;text-transform:uppercase;letter-spacing:.04em;font-size:11px;font-weight:600}.report-table tbody tr:hover{background:#f8fafc}.report-status{background:0 0;border:1px solid;border-radius:999px;padding:2px 8px;font-size:11px;font-weight:600;display:inline-block}.report-link{color:#1e88ff;cursor:pointer;background:0 0;border:none;padding:0;font-size:12px;font-weight:600}.report-link:hover{text-decoration:underline}
