@import url("https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap");:root{--bg-primary:#071019;--bg-secondary:#0b1623;--bg-panel:#0f1b2b;--bg-panel-hover:#132235;--bg-elevated:#162a42;--text-primary:#e9f2fb;--text-secondary:#9fb3c8;--text-muted:#6b8299;--accent:#72d4ff;--accent-hover:#a8e6ff;--accent-dim:rgba(114,212,255,.15);--status-good:#7fe0a0;--status-warn:#ffd06b;--status-error:#ff7070;--status-info:#72d4ff;--border:hsla(0,0%,100%,.08);--border-accent:rgba(114,212,255,.25);--shadow-lg:0 14px 40px rgba(0,0,0,.28);--shadow-md:0 4px 12px rgba(0,0,0,.2);--sidebar-width:280px;--toolbar-height:48px;--statusbar-height:32px;--radius:12px;--radius-lg:18px;--transition-fast:0.15s ease;--transition:0.25s ease}*,:after,:before{box-sizing:border-box;margin:0;padding:0}body,html{height:100%;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg-primary);color:var(--text-primary);line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow:hidden}.app-layout{display:grid;grid-template-columns:var(--sidebar-width) 1fr;grid-template-rows:var(--toolbar-height) 1fr var(--statusbar-height);grid-template-areas:"sidebar toolbar" "sidebar viewport" "sidebar statusbar";height:100vh;width:100vw}.toolbar-group--cam{flex-wrap:wrap;align-items:center}.toolbar-isolate{display:inline-flex;align-items:center;gap:5px;margin-left:6px;padding:0 8px;font-size:12px;color:var(--text-secondary);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.toolbar-isolate input{width:13px;height:13px;accent-color:var(--accent);cursor:pointer}.toolbar-isolate:has(input:disabled){opacity:.45;cursor:not-allowed}.toolbar{grid-area:toolbar;gap:12px;padding:0 16px;background:var(--bg-secondary);border-bottom:1px solid var(--border);z-index:10}.toolbar,.toolbar-group{display:flex;align-items:center}.toolbar-group{gap:4px}.toolbar-divider{width:1px;height:24px;background:var(--border);margin:0 8px}.toolbar-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:6px 12px;border:1px solid transparent;border-radius:8px;background:transparent;color:var(--text-secondary);font-size:13px;font-weight:500;font-family:inherit;cursor:pointer;transition:var(--transition-fast);white-space:nowrap}.toolbar-btn.active,.toolbar-btn:hover{background:var(--accent-dim);color:var(--accent);border-color:var(--border-accent)}.toolbar-group--right{gap:4px}.tb-icon-wrap{position:relative}.tb-icon-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:8px;border:1px solid transparent;background:transparent;color:var(--text-secondary);cursor:pointer;transition:var(--transition-fast);flex-shrink:0}.tb-icon-btn.active,.tb-icon-btn:hover{background:var(--accent-dim);color:var(--accent);border-color:var(--border-accent)}.tb-profile-btn{border:1px solid var(--border);background:var(--bg-panel);border-radius:50%}.tb-profile-btn.active,.tb-profile-btn:hover{background:var(--accent-dim);border-color:var(--border-accent);color:var(--accent)}.tb-profile-panel{position:absolute;top:calc(100% + 8px);right:0;z-index:200;min-width:200px;background:var(--bg-panel);border:1px solid var(--border-accent);border-radius:10px;box-shadow:0 8px 32px rgba(0,0,0,.45);overflow:hidden}.tb-profile-info{display:flex;align-items:center;gap:10px;padding:12px 14px}.tb-profile-avatar{width:34px;height:34px;border-radius:50%;border:1px solid var(--border-accent);background:var(--accent-dim);color:var(--accent);display:flex;align-items:center;justify-content:center;flex-shrink:0}.tb-profile-name{font-size:13px;font-weight:600;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:130px}.tb-profile-role{font-size:11px;color:var(--text-secondary);margin-top:1px}.tb-profile-divider{height:1px;background:var(--border);margin:0}.tb-profile-logout{display:flex;align-items:center;gap:8px;width:100%;padding:10px 14px;background:none;border:none;color:#f87171;font-size:13px;font-weight:500;font-family:inherit;cursor:pointer;text-align:left;transition:background .12s}.tb-profile-logout:hover{background:hsla(0,91%,71%,.1)}.tb-settings-panel{position:absolute;top:calc(100% + 8px);right:0;z-index:200;min-width:280px;max-width:min(340px,calc(100vw - 24px));background:var(--bg-panel);border:1px solid var(--border-accent);border-radius:10px;box-shadow:0 8px 32px rgba(0,0,0,.45);overflow:hidden}.tb-settings-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:var(--accent);padding:10px 14px 6px;border-bottom:1px solid var(--border)}.tb-settings-row{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;gap:12px}.tb-settings-label{font-size:12px;font-weight:500;color:var(--text-secondary);white-space:nowrap}.tb-settings-section{padding:8px 0 12px;border-top:1px solid var(--border)}.tb-settings-section-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--accent);padding:0 14px 8px}.tb-settings-field{padding:0 14px 8px}.tb-settings-field label{display:block;font-size:11px;font-weight:500;color:var(--text-secondary);margin-bottom:4px}.tb-settings-input{width:100%;box-sizing:border-box;padding:6px 9px;font-size:12px;font-family:ui-monospace,monospace;color:var(--text-primary);background:var(--bg-secondary);border:1px solid var(--border);border-radius:6px;outline:none}.tb-settings-input:focus{border-color:var(--accent);box-shadow:0 0 0 1px rgba(114,212,255,.25)}.tb-settings-ps-actions{display:flex;flex-wrap:wrap;gap:6px;padding:3px 14px 8px}.tb-settings-apply-btn,.tb-settings-reset-btn{flex:1 1;min-width:0;padding:6px 10px;font-size:11px;font-weight:600;border-radius:6px;cursor:pointer;border:1px solid var(--border);background:var(--bg-secondary);color:var(--text-primary);transition:background .12s,border-color .12s}.tb-settings-apply-btn{border-color:rgba(114,212,255,.35);background:rgba(114,212,255,.12);color:#c8e8ff}.tb-settings-apply-btn:hover{background:rgba(114,212,255,.2)}.tb-settings-reset-btn:hover{background:hsla(0,0%,100%,.06)}.tb-settings-hint{margin:0;padding:0 14px 8px;font-size:10px;line-height:1.45;color:var(--text-muted)}.tb-settings-hint code{font-size:10px;font-family:ui-monospace,monospace;color:var(--text-secondary);background:hsla(0,0%,100%,.06);padding:1px 4px;border-radius:3px}.tb-theme-toggle{display:flex;gap:4px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:7px;padding:3px}.tb-theme-btn{display:flex;align-items:center;gap:5px;padding:5px 10px;border:none;border-radius:5px;background:transparent;color:var(--text-secondary);font-size:12px;font-weight:500;font-family:inherit;cursor:pointer;transition:var(--transition-fast);white-space:nowrap}.tb-theme-btn:hover{color:var(--text-primary)}.tb-theme-btn.active{background:var(--accent-dim);color:var(--accent)}.sidebar{grid-area:sidebar;display:flex;flex-direction:column;background:linear-gradient(180deg,var(--bg-panel) 0,var(--bg-secondary) 100%);border-right:1px solid var(--border);overflow-y:auto;overflow-x:hidden;min-height:0;z-index:20}.sidebar-header{gap:10px;padding:14px 16px;border-bottom:1px solid var(--border)}.sidebar-header,.sidebar-logo{display:flex;align-items:center}.sidebar-logo{gap:8px}.sidebar-logo .dot{width:10px;height:10px;border-radius:50%;background:linear-gradient(135deg,var(--accent),#4ea4ff);box-shadow:0 0 14px rgba(114,212,255,.4)}.sidebar-logo h1{font-size:16px;font-weight:700;letter-spacing:-.02em;color:var(--text-primary)}.sidebar-logo span{font-size:11px;font-weight:500;color:var(--text-muted);letter-spacing:.1em;text-transform:uppercase}.sidebar-section{padding:12px 12px 8px}.sidebar-section-title{font-size:11px;font-weight:600}.sidebar-section-title,.sidebar-section-title--toggle{letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);padding:0 4px 8px}.sidebar-section-title--toggle{display:flex;align-items:center;gap:8px;width:100%;margin:0;background:none;border:none;font:inherit;font-size:11px;font-weight:600;text-align:left;cursor:pointer;border-radius:6px;transition:color var(--transition-fast),background var(--transition-fast)}.sidebar-section-title--toggle:hover{color:var(--text-secondary);background:hsla(0,0%,100%,.04)}.sidebar-section-title--toggle:focus-visible{outline:none;box-shadow:0 0 0 2px rgba(114,212,255,.45)}.sidebar-section-chevron{flex-shrink:0;width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:6px solid var(--text-muted);transition:transform .2s ease,border-top-color var(--transition-fast);transform-origin:50% 30%}.sidebar-section-title--toggle:hover .sidebar-section-chevron{border-top-color:var(--text-secondary)}.sidebar-section-chevron.is-collapsed{transform:rotate(-90deg)}.mode-selector{display:flex;flex-direction:column;gap:4px}.mode-btn{display:flex;align-items:center;gap:10px;padding:8px 12px;border:none;border-radius:10px;background:transparent;color:var(--text-secondary);font-size:13px;font-weight:500;font-family:inherit;cursor:pointer;transition:var(--transition-fast);text-align:left}a.mode-btn{text-decoration:none;box-sizing:border-box}a.mode-btn:visited{color:var(--text-secondary)}a.mode-btn.active:visited{color:var(--accent)}.mode-btn:hover{background:hsla(0,0%,100%,.04);color:var(--text-primary)}.mode-btn.active{background:var(--accent-dim);color:var(--accent)}.mode-icon{font-size:16px;width:20px;text-align:center}.asset-explorer{flex:1 1;overflow-y:auto;padding:8px 12px}.asset-item{display:flex;align-items:center;gap:8px;padding:6px 10px;border-radius:8px;font-size:13px;color:var(--text-secondary);cursor:pointer;transition:var(--transition-fast)}.asset-item:hover{background:hsla(0,0%,100%,.04);color:var(--text-primary)}.asset-item.active{background:var(--accent-dim);color:var(--accent);border:1px solid var(--border-accent)}.asset-badge{font-size:11px;padding:2px 6px;border-radius:4px;background:hsla(0,0%,100%,.06);color:var(--text-muted);margin-left:auto}.viewport-area{grid-area:viewport;position:relative;overflow:hidden;background:var(--bg-primary)}.viewport-3d,.viewport-map{width:100%;height:100%;position:absolute;top:0;left:0}.viewport-3d{pointer-events:auto}.viewport-3d canvas{width:100%!important;height:100%!important;outline:none}.viewport-area.split .viewport-map{width:50%}.viewport-area.split .viewport-3d{left:50%;width:50%;border-left:1px solid var(--border)}.viewport-area.facility-only .viewport-map,.viewport-area.geo-only .viewport-3d{display:none}.statusbar{grid-area:statusbar;gap:16px;padding:0 16px;background:var(--bg-secondary);border-top:1px solid var(--border);font-size:12px;color:var(--text-muted)}.statusbar,.statusbar-item{display:flex;align-items:center}.statusbar-item{gap:6px}.statusbar-end{margin-left:auto;display:flex;align-items:center;gap:12px}.statusbar-version{font-size:12px;color:var(--text-muted);white-space:nowrap}.statusbar-ai-trigger{display:inline-flex;align-items:center;gap:6px;padding:4px 11px;border:1px solid var(--border);border-radius:8px;background:hsla(0,0%,100%,.04);color:var(--text-secondary);font-size:12px;font-weight:500;font-family:inherit;cursor:pointer;transition:color var(--transition-fast),background var(--transition-fast),border-color var(--transition-fast)}.statusbar-ai-trigger:hover{color:var(--text-primary);background:rgba(114,212,255,.08);border-color:rgba(114,212,255,.35)}.statusbar-ai-trigger-icon{font-size:14px;line-height:1}.ai-assistant-backdrop{position:fixed;inset:0;z-index:140;margin:0;padding:0;border:none;background:rgba(4,10,20,.45);cursor:default}.ai-assistant-panel{position:fixed;z-index:145;right:12px;bottom:var(--statusbar-height);width:min(380px,calc(100vw - 24px));max-height:min(420px,52vh);display:flex;flex-direction:column;background:var(--bg-elevated);border:1px solid var(--border);border-bottom:none;border-radius:12px 12px 0 0;box-shadow:0 -8px 40px rgba(0,0,0,.45);transform:translateY(calc(100% + 12px));opacity:0;visibility:hidden;pointer-events:none;transition:transform .28s cubic-bezier(.22,1,.36,1),opacity .22s ease,visibility .28s}.ai-assistant-panel.is-open{transform:translateY(0);opacity:1;visibility:visible;pointer-events:auto}.ai-assistant-panel-header{justify-content:space-between;gap:8px;padding:10px 12px;border-bottom:1px solid var(--border);font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase}.ai-assistant-panel-close,.ai-assistant-panel-header{display:flex;align-items:center;color:var(--text-muted)}.ai-assistant-panel-close{justify-content:center;width:28px;height:28px;padding:0;border:none;border-radius:6px;background:transparent;font-size:20px;line-height:1;cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast)}.ai-assistant-panel-close:hover{background:hsla(0,0%,100%,.06);color:var(--text-primary)}.ai-assistant-panel-body{flex:1 1;min-height:0;overflow-y:auto;padding:12px}.ai-assistant-panel-footer{display:flex;align-items:center;gap:8px;padding:10px 12px;border-top:1px solid var(--border);flex-shrink:0;background:rgba(0,0,0,.2)}.ai-assistant-input{flex:1 1;min-width:0;padding:8px 11px;border:1px solid var(--border);border-radius:8px;background:var(--bg-secondary);color:var(--text-primary);font-size:13px;font-family:inherit}.ai-assistant-input::placeholder{color:var(--text-muted)}.ai-assistant-input:focus{outline:none;border-color:rgba(114,212,255,.45);box-shadow:0 0 0 2px rgba(114,212,255,.12)}.ai-assistant-panel-actions{display:flex;align-items:center;gap:2px;flex-shrink:0}.ai-assistant-icon-btn{display:flex;align-items:center;justify-content:center;width:34px;height:34px;padding:0;border:none;border-radius:8px;background:transparent;color:var(--text-muted);cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast)}.ai-assistant-icon-btn:hover{background:hsla(0,0%,100%,.06);color:var(--text-secondary)}.ai-assistant-icon-svg{display:block;flex-shrink:0}.ai-assistant-bubble{border-radius:10px;padding:10px 12px;font-size:13px;line-height:1.45}.ai-assistant-bubble--assistant{background:rgba(114,212,255,.1);border:1px solid rgba(114,212,255,.22);color:var(--text-secondary)}.ai-assistant-bubble-text{margin:0}.status-indicator{width:6px;height:6px;border-radius:50%;background:var(--status-good);box-shadow:0 0 6px rgba(127,224,160,.4)}.status-indicator.warning{background:var(--status-warn);box-shadow:0 0 6px rgba(255,208,107,.4)}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:hsla(0,0%,100%,.1);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:hsla(0,0%,100%,.2)}.viewport-area.geo-overlay .viewport-map{width:100%;height:100%;position:absolute;top:0;left:0}.viewport-3d-overlay{border-radius:14px;overflow:hidden;box-shadow:0 0 0 1.5px rgba(114,212,255,.55),0 0 24px 4px rgba(114,212,255,.18),0 8px 40px rgba(0,0,0,.45);transition:width .12s ease,height .12s ease;z-index:20;cursor:crosshair}.viewport-3d-overlay:before{content:"";position:absolute;inset:0;border-radius:14px;background:radial-gradient(ellipse at center,rgba(4,10,20,.55) 0,rgba(4,10,20,.25) 55%,transparent 80%);pointer-events:none;z-index:0}.viewport-3d-overlay canvas{position:relative;z-index:1;background:transparent!important}.viewport-3d:not(.viewport-3d-overlay){background:var(--bg-primary)}.site-marker{position:relative;width:60px;height:60px;display:flex;align-items:center;justify-content:center;pointer-events:none}.site-dot{width:8px;height:8px;border-radius:50%;background:var(--accent);box-shadow:0 0 8px var(--accent);position:relative;z-index:3}.site-ring{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);border-radius:50%;border:1.5px solid var(--accent);opacity:0;animation:ring-expand 3s ease-out infinite}.site-ring-1{width:20px;height:20px;animation-delay:0s}.site-ring-2{width:40px;height:40px;animation-delay:.9s}.site-ring-3{width:60px;height:60px;animation-delay:1.8s}@keyframes ring-expand{0%{transform:translate(-50%,-50%) scale(.5);opacity:.8}to{transform:translate(-50%,-50%) scale(1.4);opacity:0}}.geo-btn{color:var(--accent)!important;border-color:var(--border-accent)!important;background:var(--accent-dim)!important}.geo-btn:hover{background:rgba(114,212,255,.25)!important}.statusbar-geo{color:var(--accent);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.sidebar-tabs{display:flex;border-bottom:1px solid var(--border);flex-shrink:0}.sidebar-tab-btn{flex:1 1;padding:8px 4px;border:none;background:transparent;color:var(--text-muted);font-size:11px;font-weight:600;font-family:inherit;letter-spacing:.04em;text-transform:uppercase;cursor:pointer;transition:var(--transition-fast);position:relative;display:flex;align-items:center;justify-content:center;gap:4px}.sidebar-tab-btn:hover{color:var(--text-secondary);background:hsla(0,0%,100%,.03)}.sidebar-tab-btn.active{color:var(--accent);background:var(--accent-dim)}.sidebar-tab-btn.active:after{content:"";position:absolute;bottom:-1px;left:0;right:0;height:2px;background:var(--accent);border-radius:2px 2px 0 0}.tab-count{font-size:10px;padding:1px 5px;border-radius:8px;background:hsla(0,0%,100%,.07);color:var(--text-muted);line-height:1.4}.tab-alarm-dot{width:6px;height:6px;border-radius:50%;background:var(--status-error);box-shadow:0 0 5px hsla(0,100%,72%,.5);flex-shrink:0}.sidebar-content{flex:0 0 auto;overflow:visible;min-height:0}.global-alarm-badge{margin-left:auto;background:var(--status-error);color:#fff;font-size:11px;font-weight:700;padding:2px 7px;border-radius:10px;cursor:pointer;box-shadow:0 0 8px hsla(0,100%,72%,.4);transition:var(--transition-fast)}.global-alarm-badge:hover{box-shadow:0 0 12px hsla(0,100%,72%,.6)}.asset-tree-row{display:flex;align-items:center;gap:7px;padding:5px 8px;border-radius:8px;font-size:12px;color:var(--text-secondary);font-weight:500}.asset-tree-row.asset-site{color:var(--text-primary);font-weight:600}.asset-tree-icon{font-size:14px;width:18px;text-align:center;flex-shrink:0}.asset-tree-label{flex:1 1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.asset-tree-indent{padding-left:16px;border-left:1px solid var(--border);margin-left:12px}.alarm-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;transition:box-shadow var(--transition-fast)}.asset-item-label{flex:1 1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:12px}.asset-type-tag{font-size:10px;padding:1px 6px;border-radius:4px;background:hsla(0,0%,100%,.05);color:var(--text-muted);white-space:nowrap;flex-shrink:0;text-transform:capitalize}.type-pump{color:#72d4ff}.type-compressor{color:#a8e6ff}.type-vessel{color:#ffd06b}.type-heat_exchanger{color:#c5a8ff}.type-chimney{color:#9fb3c8}.layer-toggles{display:flex;flex-direction:column;gap:4px}.layer-toggle-btn{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid transparent;border-radius:8px;background:hsla(0,0%,100%,.03);color:var(--text-muted);font-size:12px;font-weight:500;font-family:inherit;cursor:pointer;transition:var(--transition-fast);text-align:left}.layer-toggle-btn:hover{background:hsla(0,0%,100%,.06);color:var(--text-secondary)}.layer-toggle-btn.active{background:var(--accent-dim);color:var(--accent);border-color:var(--border-accent)}.layer-icon{width:16px;text-align:center;font-size:14px}.layer-vis-dot{margin-left:auto;font-size:14px;opacity:.7}.count-pill{margin-left:6px;font-size:10px;padding:1px 6px;border-radius:8px;background:var(--accent-dim);color:var(--accent);font-weight:700}.alarm-panel{background:hsla(0,100%,72%,.06);border:1px solid hsla(0,100%,72%,.18);border-radius:10px;padding:10px;margin-bottom:12px}.alarm-panel-title{display:flex;align-items:center;gap:7px;font-size:11px;font-weight:700;color:var(--status-error);text-transform:uppercase;letter-spacing:.06em;margin-bottom:8px}.alarm-pulse{width:7px;height:7px;border-radius:50%;background:var(--status-error);box-shadow:0 0 0 2px hsla(0,100%,72%,.3);animation:pulse 1.4s ease-in-out infinite;flex-shrink:0}.alarm-row{display:flex;align-items:center;gap:8px;padding:5px 0;border-bottom:1px solid hsla(0,0%,100%,.04)}.alarm-row:last-child{border-bottom:none}.alarm-row-body{flex:1 1;min-width:0}.alarm-row-name{font-size:12px;font-weight:500;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.alarm-row-sev{font-size:10px;font-weight:600;margin-top:1px}.alarm-row-critical .alarm-row-sev{color:#ff7070}.alarm-row-warning .alarm-row-sev{color:#ffd06b}.alarm-row-info .alarm-row-sev{color:#72d4ff}.sensor-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:6px;gap:6px}.sensor-card{background:hsla(0,0%,100%,.03);border:1px solid var(--border);border-radius:8px;padding:8px;transition:border-color var(--transition-fast)}.sensor-card-critical{border-color:hsla(0,100%,72%,.4);background:hsla(0,100%,72%,.05)}.sensor-card-warning{border-color:rgba(255,208,107,.35);background:rgba(255,208,107,.05)}.sensor-card-info{border-color:rgba(114,212,255,.3)}.sensor-card-id{font-size:11px;font-weight:700;color:var(--text-muted);letter-spacing:.04em}.sensor-card-asset{font-size:10px;color:var(--text-muted);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sensor-card-value{font-size:15px;font-weight:700;color:var(--text-primary);margin-top:4px;line-height:1}.sensor-card-unit{font-size:11px;font-weight:400;color:var(--text-muted)}.sensor-card-quality{font-size:10px;margin-top:3px}.quality-good{color:var(--status-good)}.quality-uncertain{color:var(--status-warn)}.quality-bad{color:var(--status-error)}.empty-state{font-size:12px;color:var(--text-muted);padding:16px 4px;text-align:center;font-style:italic}.filter-group{margin-bottom:16px}.filter-group-label{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);margin-bottom:6px}.filter-chip-row{display:flex;flex-wrap:wrap;gap:5px}.filter-chip{display:inline-flex;align-items:center;gap:5px;padding:5px 10px;border:1px solid var(--border);border-radius:16px;background:transparent;color:var(--text-secondary);font-size:11px;font-weight:500;font-family:inherit;cursor:pointer;transition:var(--transition-fast);text-transform:capitalize}.filter-chip:hover{background:hsla(0,0%,100%,.05);color:var(--text-primary)}.filter-chip.active{background:var(--accent-dim);color:var(--accent);border-color:var(--border-accent)}.chip-check{font-size:10px;font-weight:700}.filter-clear-btn{width:100%;padding:7px;border:1px solid hsla(0,100%,72%,.3);border-radius:8px;background:hsla(0,100%,72%,.07);color:var(--status-error);font-size:12px;font-weight:600;font-family:inherit;cursor:pointer;transition:var(--transition-fast);margin-top:8px}.filter-clear-btn:hover{background:hsla(0,100%,72%,.14)}.annotation-add-btn{display:flex;align-items:center;gap:6px;width:100%;padding:7px 12px;border:1px dashed var(--border-accent);border-radius:8px;background:transparent;color:var(--accent);font-size:12px;font-weight:600;font-family:inherit;cursor:pointer;transition:var(--transition-fast);margin-bottom:10px}.annotation-add-btn.active,.annotation-add-btn:hover{background:var(--accent-dim)}.annotation-list{display:flex;flex-direction:column;gap:6px}.annotation-card{background:hsla(0,0%,100%,.03);border:1px solid var(--border);border-radius:10px;padding:10px;transition:border-color var(--transition-fast),box-shadow var(--transition-fast),background var(--transition-fast)}.annotation-card[role=button]{cursor:pointer}.annotation-card.ann-warning{border-color:rgba(255,208,107,.3);background:rgba(255,208,107,.04)}.annotation-card.ann-note{border-left:3px solid rgba(114,212,255,.4)}.annotation-card.ann-measurement{border-left:3px solid rgba(127,224,160,.4)}.annotation-card.ann-document{border-left:3px solid rgba(165,148,255,.4)}.annotation-card--selected{border-color:rgba(114,212,255,.65)!important;box-shadow:0 0 0 1px rgba(114,212,255,.35),0 4px 20px rgba(114,212,255,.12);background:rgba(114,212,255,.08)!important;outline:none}.annotation-card[role=button]:focus-visible{box-shadow:0 0 0 2px rgba(114,212,255,.5)}.ann-card-header{display:flex;align-items:center;gap:6px;margin-bottom:5px}.ann-type-icon{font-size:13px}.ann-type-label{font-size:10px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted)}.ann-delete-btn{margin-left:auto;background:none;border:none;color:var(--text-muted);font-size:16px;line-height:1;cursor:pointer;padding:0 2px;border-radius:4px;transition:var(--transition-fast)}.ann-delete-btn:hover{color:var(--status-error);background:hsla(0,100%,72%,.1)}.ann-text{font-size:12px;color:var(--text-secondary);line-height:1.45}.ann-meta{font-size:10px;color:var(--text-muted);margin-top:4px}.ann-link{color:var(--accent)}.annotation-mode-banner{position:absolute;top:12px;left:50%;transform:translateX(-50%);background:rgba(11,22,35,.92);border:1px solid var(--border-accent);border-radius:20px;padding:7px 16px;font-size:13px;color:var(--accent);display:flex;align-items:center;gap:12px;white-space:nowrap;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:30;box-shadow:var(--shadow-md)}.annotation-mode-banner button{background:none;border:1px solid var(--border-accent);border-radius:8px;color:var(--text-muted);font-size:11px;font-family:inherit;padding:3px 8px;cursor:pointer;transition:var(--transition-fast)}.annotation-mode-banner button:hover{color:var(--status-error);border-color:hsla(0,100%,72%,.4)}.ann-overlay{position:absolute;transform:translate(-50%,-100%);font-size:18px;cursor:pointer;filter:drop-shadow(0 2px 4px rgba(0,0,0,.5));transition:left .04s linear,top .04s linear,transform var(--transition-fast);will-change:left,top;z-index:25;pointer-events:auto;-webkit-user-select:none;-moz-user-select:none;user-select:none}.ann-overlay:hover{transform:translate(-50%,-100%) scale(1.25)}.ann-overlay--selected{filter:drop-shadow(0 0 6px rgba(114,212,255,.85));transform:translate(-50%,-100%) scale(1.15)}.ann-overlay--selected:hover{transform:translate(-50%,-100%) scale(1.28)}.ann-overlay:after{content:"";position:absolute;bottom:-2px;left:50%;transform:translateX(-50%);width:4px;height:4px;border-radius:50%;background:hsla(0,0%,100%,.5)}.detail-panel{position:absolute;top:12px;right:12px;width:260px;background:rgba(11,22,35,.94);border:1px solid var(--border-accent);border-radius:var(--radius-lg);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);box-shadow:var(--shadow-lg);z-index:40;overflow:hidden}.detail-header{display:flex;align-items:flex-start;gap:8px;padding:14px 14px 10px;border-bottom:1px solid var(--border)}.detail-header--drag{cursor:-webkit-grab;cursor:grab;-webkit-user-select:none;-moz-user-select:none;user-select:none;touch-action:none}.detail-header--drag:active{cursor:-webkit-grabbing;cursor:grabbing}.detail-header-body{flex:1 1;min-width:0}.detail-breadcrumb{font-size:10px;color:var(--text-muted);margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.breadcrumb-sep{opacity:.5}.detail-title{font-size:14px;font-weight:700;color:var(--text-primary);line-height:1.3}.detail-type-tag{display:inline-block;margin-top:4px;font-size:10px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--accent);background:var(--accent-dim);padding:2px 7px;border-radius:6px}.detail-close-btn{background:none;border:none;color:var(--text-muted);font-size:20px;line-height:1;cursor:pointer;padding:0;flex-shrink:0;transition:color var(--transition-fast)}.detail-close-btn:hover{color:var(--text-primary)}.asset-ctx-menu{position:fixed;z-index:90;min-width:168px;padding:4px 0;background:rgba(11,22,35,.96);border:1px solid var(--border-accent);border-radius:10px;box-shadow:var(--shadow-lg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.asset-ctx-menu-item{display:flex;align-items:center;gap:8px;width:100%;padding:10px 14px;border:none;background:none;color:var(--text-secondary);font-size:13px;font-family:inherit;text-align:left;cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast)}.asset-ctx-menu-item:hover{background:rgba(114,212,255,.1);color:var(--text-primary)}.detail-alarm-banner{display:flex;align-items:center;gap:7px;padding:7px 14px;font-size:12px;font-weight:600}.detail-alarm-critical{background:hsla(0,100%,72%,.12);color:#ff7070;border-bottom:1px solid hsla(0,100%,72%,.2)}.detail-alarm-warning{background:rgba(255,208,107,.1);color:#ffd06b;border-bottom:1px solid rgba(255,208,107,.18)}.detail-alarm-info{background:rgba(114,212,255,.08);color:var(--accent);border-bottom:1px solid rgba(114,212,255,.15)}.detail-section{padding:10px 14px;border-bottom:1px solid var(--border)}.detail-section:last-child{border-bottom:none}.detail-section-label{font-size:10px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);margin-bottom:7px}.detail-sensor-row{display:flex;align-items:center;gap:6px;padding:3px 0;font-size:12px}.detail-sensor-id{font-weight:700;color:var(--text-muted);width:46px;flex-shrink:0}.detail-sensor-val{flex:1 1;font-weight:600;color:var(--text-primary);text-align:right}.detail-sensor-unit{font-weight:400;color:var(--text-muted);font-size:11px}.detail-quality{font-size:10px;padding:1px 5px;border-radius:4px;background:hsla(0,0%,100%,.05);flex-shrink:0}.detail-doc-row{font-size:12px;color:var(--accent);padding:3px 0;cursor:pointer}.detail-doc-row:hover{text-decoration:underline}.detail-meta-row{display:flex;justify-content:space-between;align-items:center;font-size:11px;padding:3px 0}.detail-meta-row span:first-child{color:var(--text-muted)}.detail-meta-row span:last-child{color:var(--text-secondary);text-align:right;font-size:10px;max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.annotation-active-btn{animation:glow-accent 1.2s ease-in-out infinite}@keyframes glow-accent{0%,to{box-shadow:0 0 4px rgba(114,212,255,.2)}50%{box-shadow:0 0 12px rgba(114,212,255,.5)}}.statusbar-alarm{color:var(--status-error)!important;font-weight:600}.viewport-area.globe-map-mode{display:grid;grid-template-rows:1fr;grid-template-columns:1fr;position:relative;overflow:hidden}.globe-map-root{position:absolute;inset:0;z-index:0;background:#0a0f1a}.globe-map-root canvas{width:100%!important;height:100%!important;display:block}.viewport-area.globe-map-mode .viewport-3d{position:absolute;inset:0;z-index:1;background:transparent}.viewport-area.facility-only{display:grid;grid-template-rows:1fr;grid-template-columns:1fr}.transition-overlay{position:absolute;inset:0;z-index:20;display:flex;align-items:center;justify-content:center;background:rgba(10,15,26,.45);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);pointer-events:none}.transition-ring-wrap{display:flex;flex-direction:column;align-items:center;gap:14px}.transition-ring{width:72px;height:72px;filter:drop-shadow(0 0 8px rgba(114,212,255,.5))}.transition-label{font-size:13px;font-weight:600;color:var(--accent);letter-spacing:.04em;text-shadow:0 0 12px rgba(114,212,255,.5)}.enter-facility-btn{background:linear-gradient(135deg,rgba(114,212,255,.15),rgba(50,160,220,.1))!important;border-color:rgba(114,212,255,.4)!important;color:#a8e8ff!important;font-weight:600!important;animation:facility-btn-pulse 2.5s ease-in-out infinite}.enter-facility-btn:hover:not(:disabled){background:linear-gradient(135deg,rgba(114,212,255,.28),rgba(50,160,220,.18))!important;border-color:rgba(114,212,255,.65)!important}.enter-facility-btn:disabled{opacity:.6;cursor:not-allowed;animation:none}@keyframes facility-btn-pulse{0%,to{box-shadow:0 0 4px rgba(114,212,255,.2)}50%{box-shadow:0 0 14px rgba(114,212,255,.45)}}.back-to-globe-btn{background:linear-gradient(135deg,rgba(100,200,140,.14),rgba(60,170,100,.08))!important;border-color:rgba(100,200,140,.4)!important;color:#a8f0c8!important;font-weight:600!important}.back-to-globe-btn:hover:not(:disabled){background:linear-gradient(135deg,rgba(100,200,140,.26),rgba(60,170,100,.16))!important;border-color:rgba(100,200,140,.65)!important}.back-to-globe-btn:disabled{opacity:.6;cursor:not-allowed}.terrain-btn{background:rgba(180,140,80,.1)!important;border-color:rgba(180,140,80,.3)!important;color:#dfc090!important}.terrain-btn.active{background:rgba(180,140,80,.22)!important;border-color:rgba(180,140,80,.6)!important;color:#f5d090!important}.satellite-btn{background:rgba(80,140,200,.1)!important;border-color:rgba(80,140,200,.3)!important;color:#90c0ef!important}.satellite-btn.active{background:rgba(80,140,200,.25)!important;border-color:rgba(80,140,200,.65)!important;color:#b8d8ff!important}.viewport-pixelstream{position:absolute;inset:0;z-index:2;background:#0a0f1a;display:flex;align-items:center;justify-content:center;overflow:hidden}.pixelstream-iframe{width:100%;height:100%;border:none;display:block;background:#000}.pixelstream-placeholder{display:flex;flex-direction:column;align-items:center;gap:12px;color:var(--text-secondary,#8a9bb5);text-align:center;padding:40px;max-width:500px}.pixelstream-placeholder-icon{font-size:3rem;line-height:1}.pixelstream-placeholder h3{color:var(--text-primary,#c8d8e8);font-size:1.1rem;font-weight:600;margin:0}.pixelstream-placeholder p{font-size:.85rem;margin:0;line-height:1.5}.pixelstream-placeholder code{background:hsla(0,0%,100%,.08);border:1px solid hsla(0,0%,100%,.12);border-radius:4px;padding:1px 5px;font-family:monospace;font-size:.82em}.pixelstream-placeholder-sub{color:var(--text-muted,#566880)!important;font-size:.78rem!important}.pixelstream-ws-hint{margin-top:8px;padding:8px 16px;border-radius:6px;font-size:.78rem;border:1px solid}.pixelstream-ws-hint.ws-open{border-color:#3b6;color:#5da;background:rgba(50,170,100,.08)}.pixelstream-ws-hint.ws-connecting{border-color:#a80;color:#cb5;background:rgba(180,130,0,.08)}.pixelstream-ws-hint.ws-closed,.pixelstream-ws-hint.ws-error{border-color:#a44;color:#e77;background:rgba(160,50,50,.08)}.pixelstream-ws-hint.ws-idle{border-color:hsla(0,0%,100%,.1);color:#566880;background:transparent}.ps-selection-popup{position:absolute;top:24px;right:24px;z-index:10;width:300px;background:rgba(10,18,32,.92);border:1px solid rgba(100,160,220,.25);border-radius:12px;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:0 8px 32px rgba(0,0,0,.55),0 0 0 1px hsla(0,0%,100%,.04);overflow:hidden;animation:ps-popup-in .18s ease}@keyframes ps-popup-in{0%{opacity:0;transform:translateY(-8px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.ps-popup-close{position:absolute;top:10px;right:12px;width:24px;height:24px;border-radius:50%;border:1px solid hsla(0,0%,100%,.15);background:hsla(0,0%,100%,.06);color:#8a9bb5;font-size:1rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s,color .15s}.ps-popup-close:hover{background:rgba(220,70,70,.25);border-color:rgba(220,70,70,.45);color:#ff8080}.ps-popup-title{padding:18px 42px 4px 18px;font-size:1rem;font-weight:600;color:#c8d8e8;line-height:1.3}.ps-popup-title--raw{font-family:monospace;font-size:.88rem;color:#8fb8d8;word-break:break-all}.ps-popup-type{padding:0 18px 14px;font-size:.72rem;font-weight:500;text-transform:uppercase;letter-spacing:.08em;color:#5a8fbf}.ps-popup-alarm{margin:0 14px 10px;padding:6px 10px;border-radius:6px;font-size:.78rem;display:flex;align-items:center;gap:6px}.ps-alarm-warning{background:rgba(200,140,0,.12);border:1px solid rgba(200,140,0,.3);color:#d4aa40}.ps-alarm-critical{background:rgba(200,50,50,.12);border:1px solid rgba(200,50,50,.3);color:#e07070}.ps-alarm-info{background:rgba(60,120,200,.12);border:1px solid rgba(60,120,200,.3);color:#70a8e0}.ps-popup-rows{padding:0 0 10px;border-top:1px solid hsla(0,0%,100%,.06)}.ps-popup-row{display:flex;justify-content:space-between;align-items:baseline;padding:7px 18px;font-size:.8rem;gap:12px;border-bottom:1px solid hsla(0,0%,100%,.04)}.ps-popup-row:last-child{border-bottom:none}.ps-popup-row>span:first-child{color:#566880;flex-shrink:0;font-size:.75rem}.ps-popup-row>span:last-child{color:#a8bccc;text-align:right;word-break:break-all}.ps-popup-sensor>span:last-child{color:#7ec8a0;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.ps-popup-unit{color:#566880;font-size:.72em}.ps-popup-id>span:last-child{color:#4a6880;font-family:monospace;font-size:.75rem}.ps-debug-panel{position:absolute;bottom:12px;left:12px;z-index:10;width:420px;max-height:240px;background:rgba(6,12,22,.94);border:1px solid rgba(80,200,120,.3);border-radius:8px;font-family:monospace;font-size:.72rem;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 4px 20px rgba(0,0,0,.6)}.ps-debug-header{display:flex;justify-content:space-between;align-items:center;padding:5px 10px;background:rgba(50,180,100,.1);border-bottom:1px solid rgba(80,200,120,.2);color:#4ec880}.ps-debug-header button{background:transparent;border:1px solid rgba(80,200,120,.3);border-radius:4px;color:#4ec880;font-size:.68rem;padding:1px 6px;cursor:pointer}.ps-debug-body{overflow-y:auto;padding:6px 10px;flex:1 1;display:flex;flex-direction:column;gap:2px}.ps-debug-line{color:#7ec898;white-space:pre-wrap;word-break:break-all;line-height:1.4}.ps-debug-empty{color:#3a5040}.unreal-test-btn{background:rgba(100,200,120,.08)!important;border-color:rgba(100,200,120,.25)!important;color:#70c888!important}.unreal-test-btn:hover{background:rgba(100,200,120,.18)!important}.unreal-debug-btn{background:rgba(160,180,220,.08)!important;border-color:rgba(160,180,220,.25)!important;color:#8898b8!important}.unreal-debug-btn.active{background:rgba(160,180,220,.18)!important;border-color:rgba(160,180,220,.5)!important;color:#b0c0e0!important}.unreal-status-badge{display:flex;align-items:center;gap:6px;padding:4px 10px;border-radius:6px;border:1px solid hsla(0,0%,100%,.1);font-size:.75rem;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;user-select:none}.unreal-status-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.unreal-status-label{color:var(--text-secondary,#8a9bb5)}.unreal-status-open{border-color:rgba(50,190,100,.35);background:rgba(50,190,100,.06)}.unreal-status-open .unreal-status-dot{background:#3bc874;box-shadow:0 0 6px #3bc874}.unreal-status-open .unreal-status-label{color:#6de0a0}.unreal-status-connecting{border-color:rgba(200,160,0,.35);background:rgba(200,160,0,.06)}.unreal-status-connecting .unreal-status-dot{background:#c8a020;animation:pulse 1.2s ease-in-out infinite}.unreal-status-connecting .unreal-status-label{color:#d4b040}.unreal-status-closed,.unreal-status-error{border-color:rgba(190,60,60,.35);background:rgba(190,60,60,.06)}.unreal-status-closed .unreal-status-dot,.unreal-status-error .unreal-status-dot{background:#c44}.unreal-status-closed .unreal-status-label,.unreal-status-error .unreal-status-label{color:#e07070}.unreal-status-idle .unreal-status-dot{background:#566880}.lp-body{background-color:#0d0d12;background-image:radial-gradient(circle at top right,rgba(37,99,235,.15) 0,transparent 40%),radial-gradient(circle at bottom left,rgba(6,182,212,.1) 0,transparent 40%);color:#fff;font-family:Outfit,Inter,sans-serif;display:flex;align-items:center;justify-content:center;min-height:100vh;width:100vw;margin:0;overflow:hidden;position:relative}.lp-canvas{position:absolute;top:0;left:0;width:100%;height:100%;z-index:0;pointer-events:auto}.lp-container{display:flex;flex-direction:column;width:100%;max-width:440px;padding:50px 40px;background-color:transparent;background-image:url(/Logo.png);background-size:cover;background-position:50%;background-repeat:no-repeat;border:1px solid hsla(0,0%,100%,.08);border-radius:24px;box-shadow:0 25px 50px -12px rgba(0,0,0,.5),0 0 40px rgba(37,99,235,.2);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);overflow:hidden;position:relative;z-index:10}.lp-login-section{width:100%;display:flex;align-items:center;justify-content:center}.lp-login-box{width:100%;max-width:340px}.lp-login-form{display:flex;flex-direction:column;margin-top:12em}.lp-input-group{margin-bottom:24px;position:relative}.lp-input-group label{display:block;font-size:13px;color:#94a3b8;margin-bottom:8px;font-weight:500}.lp-input-group input{width:100%;padding:14px 16px;background:rgba(0,0,0,.2);border:1px solid hsla(0,0%,100%,.08);border-radius:12px;color:#fff;font-size:14px;font-family:inherit;transition:all .3s ease;box-sizing:border-box}.lp-input-group input:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 2px rgba(37,99,235,.2);background:rgba(0,0,0,.4)}.lp-input-group input::placeholder{color:hsla(0,0%,100%,.2)}.lp-form-actions{display:flex;justify-content:space-between;align-items:center;margin-bottom:32px;font-size:13px}.lp-remember-me{display:flex;align-items:center;gap:8px;color:#94a3b8;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.lp-remember-me input{accent-color:#2563eb;width:16px;height:16px;cursor:pointer;margin:0;padding:0}.lp-forgot-password{color:#3b82f6;text-decoration:none;transition:color .3s;font-weight:500}.lp-forgot-password:hover{color:#fff}.lp-login-btn{width:100%;padding:14px;background:rgba(37,99,235,.25);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid hsla(0,0%,100%,.1);color:#fff;border-radius:12px;font-size:16px;font-weight:600;cursor:pointer;font-family:inherit;transition:all .3s ease;box-shadow:0 4px 15px rgba(0,0,0,.2)}.lp-login-btn:hover:not(:disabled){background:rgba(37,99,235,.4);border-color:hsla(0,0%,100%,.25);transform:translateY(-2px);box-shadow:0 6px 20px rgba(37,99,235,.3)}.lp-login-btn:active:not(:disabled){transform:translateY(0)}.lp-login-btn:disabled{opacity:.7;cursor:not-allowed}.lp-test-users-group{display:flex;gap:12px;margin-top:16px;width:100%}.lp-test-btn{flex:1 1;background:rgba(30,58,138,.3);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid hsla(0,0%,100%,.08);font-size:13px;padding:12px 10px;box-shadow:0 4px 15px rgba(0,0,0,.2)}.lp-test-btn:hover:not(:disabled){background:rgba(30,58,138,.5);border-color:hsla(0,0%,100%,.2);box-shadow:0 6px 20px rgba(30,58,138,.3);transform:translateY(-2px)}.lp-error{display:flex;align-items:center;gap:8px;background:rgba(239,68,68,.1);border:1px solid rgba(239,68,68,.3);border-radius:10px;padding:10px 14px;font-size:13px;color:#fca5a5;margin-bottom:4px}@media (max-width:480px){.lp-container{width:90%;padding:40px 20px}}.statusbar-transition{color:var(--accent)!important;font-weight:600}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.irobot-popup{position:absolute;top:24px;right:24px;width:380px;max-height:calc(100% - 48px);overflow-y:auto;background:rgba(10,15,26,.96);border:1px solid rgba(80,160,255,.25);border-radius:12px;box-shadow:0 8px 40px rgba(0,0,0,.7),0 0 0 1px rgba(80,160,255,.08);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);z-index:900;font-size:13px;color:#c8d8ef;display:flex;flex-direction:column}.irobot-popup::-webkit-scrollbar{width:4px}.irobot-popup::-webkit-scrollbar-track{background:transparent}.irobot-popup::-webkit-scrollbar-thumb{background:rgba(80,160,255,.25);border-radius:2px}.irobot-header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px 10px;border-bottom:1px solid hsla(0,0%,100%,.07)}.irobot-header-left{display:flex;align-items:center;gap:10px}.irobot-icon{font-size:22px;line-height:1}.irobot-title{font-size:15px;font-weight:700;color:#e8f2ff;letter-spacing:.3px}.irobot-subtitle{font-size:11px;color:#6a90b8;margin-top:1px}.irobot-close{background:none;border:none;color:#6a90b8;font-size:16px;cursor:pointer;width:28px;height:28px;border-radius:6px;display:flex;align-items:center;justify-content:center;transition:background .15s,color .15s;flex-shrink:0}.irobot-close:hover{background:rgba(255,80,80,.15);color:#ff7070}.irobot-status-bar{display:flex;align-items:center;gap:8px;padding:8px 16px;background:rgba(80,160,255,.06);border-bottom:1px solid hsla(0,0%,100%,.05);font-size:12px;flex-wrap:wrap}.irobot-status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.irobot-status-active{background:#40e080;box-shadow:0 0 6px rgba(64,224,128,.6);animation:pulse 2s infinite}.irobot-status-idle{background:#ffd06b;box-shadow:0 0 6px rgba(255,208,107,.4)}.irobot-status-label{font-weight:600;color:#e8f2ff}.irobot-divider{color:hsla(0,0%,100%,.15)}.irobot-body{padding:0 0 4px}.irobot-section{padding:12px 16px;border-bottom:1px solid hsla(0,0%,100%,.05)}.irobot-section:last-child{border-bottom:none}.irobot-section-title{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.8px;color:#4a88cc;margin-bottom:9px}.irobot-joints{display:flex;flex-direction:column;gap:5px}.irobot-joint{display:grid;grid-template-columns:22px 1fr 52px;align-items:center;grid-gap:8px;gap:8px}.irobot-joint-label{font-size:11px;font-weight:600;color:#4a88cc}.irobot-joint-bar-track{height:4px;background:hsla(0,0%,100%,.08);border-radius:2px;overflow:hidden}.irobot-joint-bar-fill{height:100%;background:linear-gradient(90deg,#2a7fd4,#50c8ff);border-radius:2px;transition:width .6s ease}.irobot-joint-val{font-size:11px;font-weight:500;color:#a0c8ef;text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.irobot-pos-row{display:grid;grid-template-columns:1fr 1fr 1fr;grid-gap:8px;gap:8px}.irobot-pos-cell{background:hsla(0,0%,100%,.04);border-radius:7px;padding:8px 10px;display:flex;flex-direction:column;gap:4px;border:1px solid hsla(0,0%,100%,.06)}.irobot-pos-axis{font-size:10px;font-weight:700;letter-spacing:.5px}.irobot-axis-x{color:#ff7070}.irobot-axis-y{color:#7fe090}.irobot-axis-z{color:#72c8ff}.irobot-pos-val{font-size:13px;font-weight:600;color:#e0eeff;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.irobot-stats{display:grid;grid-template-columns:1fr 1fr;grid-gap:6px;gap:6px}.irobot-stat{background:hsla(0,0%,100%,.04);border-radius:7px;padding:8px 10px;border:1px solid hsla(0,0%,100%,.06)}.irobot-stat-label{display:block;font-size:10px;color:#6a90b8;margin-bottom:3px}.irobot-stat-val{display:block;font-size:13px;font-weight:600;color:#e0eeff;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.irobot-files-section{padding-bottom:14px}.irobot-files{display:flex;flex-direction:column;gap:5px}.irobot-file-btn{display:flex;align-items:center;gap:8px;width:100%;background:hsla(0,0%,100%,.04);border:1px solid rgba(80,160,255,.15);border-radius:7px;padding:8px 10px;cursor:pointer;transition:background .15s,border-color .15s;text-align:left;color:#c0d8f0}.irobot-file-btn:hover{background:rgba(80,160,255,.1);border-color:rgba(80,160,255,.35);color:#e8f4ff}.irobot-file-icon{font-size:15px;flex-shrink:0}.irobot-file-name{flex:1 1;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.irobot-file-badge{font-size:9px;font-weight:700;letter-spacing:.5px;padding:2px 6px;border-radius:4px;background:rgba(80,160,255,.15);color:#72c8ff;flex-shrink:0}.fviewer-overlay{position:fixed;inset:0;background:rgba(0,0,0,.75);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1000;display:flex;align-items:center;justify-content:center;padding:32px}.fviewer-modal{background:rgba(12,18,32,.98);border:1px solid rgba(80,160,255,.25);border-radius:12px;box-shadow:0 16px 60px rgba(0,0,0,.8);width:100%;max-width:860px;height:80vh;display:flex;flex-direction:column;overflow:hidden;transition:max-width .35s ease}.fviewer-modal--graph{max-width:1300px}.fviewer-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid hsla(0,0%,100%,.08);flex-shrink:0}.fviewer-filename{font-size:13px;font-weight:600;color:#c8d8ef;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fviewer-close{background:none;border:none;color:#6a90b8;font-size:16px;cursor:pointer;width:28px;height:28px;border-radius:6px;display:flex;align-items:center;justify-content:center;transition:background .15s,color .15s;flex-shrink:0}.fviewer-close:hover{background:rgba(255,80,80,.15);color:#ff7070}.fviewer-body{flex:1 1;overflow:hidden;display:flex;align-items:stretch}.fviewer-graph-panel{width:50%;min-width:0;flex-shrink:0;position:relative;z-index:2;overflow:hidden;display:flex;flex-direction:column;border-right:1px solid rgba(80,160,255,.15);background:rgba(6,10,20,.9)}.fviewer-graph-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:#4a88cc;padding:8px 12px;border-bottom:1px solid rgba(80,160,255,.1);flex-shrink:0}.fviewer-pdf-panel{flex:1 1;min-width:0;position:relative;z-index:1;display:flex;flex-direction:column;align-items:stretch}.fviewer-ctx-menu{position:fixed;z-index:1100;background:rgba(12,18,32,.97);border:1px solid rgba(80,160,255,.25);border-radius:9px;box-shadow:0 8px 32px rgba(0,0,0,.7),0 0 0 1px rgba(80,160,255,.08);min-width:220px;overflow:hidden;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);-webkit-user-select:none;-moz-user-select:none;user-select:none}.fviewer-ctx-header{display:flex;align-items:center;gap:8px;padding:10px 14px 8px;border-bottom:1px solid hsla(0,0%,100%,.06)}.fviewer-ctx-info-icon{width:18px;height:18px;border-radius:50%;background:rgba(80,160,255,.18);border:1px solid rgba(80,160,255,.4);color:#72c8ff;font-size:11px;font-weight:700;font-style:italic;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-family:serif}.fviewer-ctx-filename{font-size:12px;font-weight:600;color:#c8d8ef;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fviewer-ctx-divider{height:1px;background:hsla(0,0%,100%,.06);margin:0}.fviewer-ctx-item{display:flex;align-items:center;gap:10px;width:100%;background:none;border:none;padding:9px 14px;cursor:pointer;color:#c0d8f0;font-size:13px;text-align:left;transition:background .12s}.fviewer-ctx-item:hover{background:rgba(80,160,255,.12);color:#e8f4ff}.fviewer-ctx-icon{display:flex;align-items:center;color:#72c8ff;flex-shrink:0}.fviewer-ctx-item--disabled,.fviewer-ctx-item:disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.fviewer-ctx-badge{margin-left:auto;font-size:9px;font-weight:700;letter-spacing:.4px;padding:2px 6px;border-radius:4px;background:rgba(80,160,255,.15);color:#72c8ff}.fviewer-iframe{width:100%;height:100%;border:none;background:#fff}.fviewer-img-wrap{flex:1 1;display:flex;align-items:center;justify-content:center;padding:24px;background:rgba(0,0,0,.3)}.fviewer-img{max-width:100%;max-height:100%;object-fit:contain;border-radius:6px;box-shadow:0 4px 24px rgba(0,0,0,.5)}.ps-popup-doc-links{display:flex;flex-direction:column;gap:3px;align-items:flex-end}.detail-doc-row--link,.ps-popup-doc-link{background:none;border:none;padding:0;cursor:pointer;font-size:12px;color:#72c8ff;text-align:left;text-decoration:underline;text-underline-offset:2px;transition:color .15s}.detail-doc-row--link:hover,.ps-popup-doc-link:hover{color:#a8e0ff}.detail-doc-row--link{display:block;width:100%;padding:4px 0;font-size:13px;text-align:left}.fviewer-fallback{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:16px;color:#8aabcc;font-size:14px}.fviewer-dl-btn{padding:10px 20px;background:rgba(80,160,255,.15);border:1px solid rgba(80,160,255,.35);border-radius:8px;color:#72c8ff;text-decoration:none;font-size:13px;font-weight:600;transition:background .15s}.fviewer-dl-btn:hover{background:rgba(80,160,255,.28)}.auth-gate-shell{min-height:100vh;width:100vw;background:var(--bg-primary);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px}.auth-gate-spinner{width:36px;height:36px;border-radius:50%;border:2px solid rgba(114,212,255,.2);border-top:2px solid var(--accent);animation:auth-gate-spin .85s linear infinite}@keyframes auth-gate-spin{to{transform:rotate(1turn)}}.auth-gate-label{font-size:14px;color:var(--text-secondary)}