:root{--bg-primary: #0a0a1a;--bg-secondary: #12122a;--bg-panel: rgba(15, 15, 40, .88);--bg-panel-hover: rgba(20, 20, 55, .9);--bg-input: rgba(10, 10, 30, .6);--border-panel: rgba(0, 212, 255, .15);--border-subtle: rgba(255, 255, 255, .06);--border-active: rgba(0, 212, 255, .4);--text-primary: #e0e0ff;--text-secondary: #8888aa;--text-tertiary: #555577;--text-data: #00d4ff;--accent-cyan: #00d4ff;--accent-magenta: #ff006e;--accent-green: #00ff88;--accent-amber: #ffaa00;--accent-purple: #aa66ff;--accent-yellow: #ffdd00;--glow-cyan: 0 0 20px rgba(0, 212, 255, .3);--glow-cyan-strong: 0 0 30px rgba(0, 212, 255, .5);--glow-magenta: 0 0 20px rgba(255, 0, 110, .3);--glow-green: 0 0 15px rgba(0, 255, 136, .3);--glow-amber: 0 0 15px rgba(255, 170, 0, .3);--font-primary: "Space Grotesk", "Inter", "Segoe UI", system-ui, sans-serif;--font-mono: "JetBrains Mono", "Fira Code", "Cascadia Code", monospace;--fs-xs: .65rem;--fs-sm: .75rem;--fs-base: .8125rem;--fs-md: .9375rem;--fs-lg: 1.125rem;--fs-xl: 1.5rem;--panel-radius: 12px;--panel-radius-sm: 8px;--panel-blur: 20px;--panel-shadow: 0 8px 32px rgba(0, 0, 0, .4);--panel-padding: 16px;--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--duration-fast: .15s;--duration-normal: .25s;--duration-slow: .4s;--z-scene: 0;--z-panels: 100;--z-stats: 150;--z-tooltip: 200;--z-loading: 1000}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html,body{width:100%;height:100%;overflow:hidden;background:var(--bg-primary);color:var(--text-primary);font-family:var(--font-primary);font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#scene-container{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-scene)}#scene-container canvas{display:block;width:100%!important;height:100%!important}.mono{font-family:var(--font-mono);letter-spacing:-.02em}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#00d4ff33;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#00d4ff59}*{scrollbar-width:thin;scrollbar-color:rgba(0,212,255,.2) transparent}.panel{position:fixed;z-index:var(--z-panels);background:var(--bg-panel);backdrop-filter:blur(var(--panel-blur));-webkit-backdrop-filter:blur(var(--panel-blur));border:1px solid var(--border-panel);border-radius:var(--panel-radius);box-shadow:var(--panel-shadow);transition:opacity var(--duration-normal) var(--ease-out),transform var(--duration-normal) var(--ease-out)}.satellite-tooltip{position:fixed;z-index:var(--z-tooltip);background:#0a0a1ef2;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--border-panel);border-radius:8px;padding:8px 12px;pointer-events:none;box-shadow:0 4px 20px #00000080;animation:tooltip-in .15s var(--ease-out)}@keyframes tooltip-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.tooltip-name{font-size:var(--fs-sm);font-weight:600;color:var(--text-primary);white-space:nowrap}.tooltip-meta{font-size:var(--fs-xs);color:var(--text-secondary);margin-top:2px}.loading-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-loading);display:flex;align-items:center;justify-content:center;background:var(--bg-primary);transition:opacity .6s var(--ease-out)}.loading-overlay.fade-out{opacity:0;pointer-events:none}.loading-overlay[hidden]{display:none}.loading-content{display:flex;flex-direction:column;align-items:center;gap:20px}.loading-ring svg{animation:loading-spin 2s linear infinite}.loading-ring-track{fill:none;stroke:var(--border-subtle);stroke-width:3}.loading-ring-fill{fill:none;stroke:var(--accent-cyan);stroke-width:3;stroke-linecap:round;stroke-dasharray:180;stroke-dashoffset:60;filter:drop-shadow(0 0 6px rgba(0,212,255,.5))}@keyframes loading-spin{to{transform:rotate(360deg)}}.loading-title{font-size:var(--fs-lg);font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--text-primary)}.loading-status{font-size:var(--fs-sm);color:var(--text-secondary);animation:loading-pulse 2s ease-in-out infinite}@keyframes loading-pulse{0%,to{opacity:.6}50%{opacity:1}}.loading-bar{width:200px;height:2px;background:var(--border-subtle);border-radius:2px;overflow:hidden}.loading-bar-fill{height:100%;background:linear-gradient(90deg,var(--accent-cyan),var(--accent-magenta));border-radius:2px;transition:width .4s var(--ease-out)}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border:1px solid var(--border-panel);border-radius:var(--panel-radius-sm);background:transparent;color:var(--text-secondary);cursor:pointer;transition:all var(--duration-fast) var(--ease-out);flex-shrink:0}.icon-btn:hover{color:var(--accent-cyan);border-color:var(--border-active);background:#00d4ff14;box-shadow:var(--glow-cyan)}.icon-btn:active{transform:scale(.94)}.settings-panel{display:none}.settings-toggle{margin:4px;border:none}.settings-body{padding:0 var(--panel-padding) var(--panel-padding);width:220px}.settings-body[hidden]{display:none}.panel-heading{font-size:var(--fs-xs);font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--text-secondary);margin-bottom:10px}.settings-divider{height:1px;background:var(--border-subtle);margin:12px 0}.toggle-row{display:flex;align-items:center;justify-content:space-between;padding:6px 0;cursor:pointer;-webkit-user-select:none;user-select:none}.toggle-label{font-size:var(--fs-sm);color:var(--text-primary)}.toggle-input{position:absolute;opacity:0;width:0;height:0}.toggle-switch{position:relative;width:36px;height:20px;background:#ffffff14;border-radius:10px;border:1px solid var(--border-subtle);transition:all var(--duration-fast) var(--ease-out);flex-shrink:0}.toggle-switch:after{content:"";position:absolute;top:2px;left:2px;width:14px;height:14px;background:var(--text-secondary);border-radius:50%;transition:all var(--duration-fast) var(--ease-out)}.toggle-input:checked+.toggle-switch{background:#00d4ff33;border-color:var(--accent-cyan)}.toggle-input:checked+.toggle-switch:after{transform:translate(16px);background:var(--accent-cyan);box-shadow:0 0 8px #00d4ff80}.toggle-input:focus-visible+.toggle-switch{outline:2px solid var(--accent-cyan);outline-offset:2px}.satellite-sidebar{top:16px;left:16px;bottom:80px;width:300px;display:flex;flex-direction:column;padding:0;overflow:hidden;transition:width var(--duration-normal) var(--ease-out),opacity var(--duration-normal) var(--ease-out);z-index:var(--z-panels)}.satellite-sidebar.collapsed{width:44px}.satellite-sidebar.collapsed .sidebar-body,.satellite-sidebar.collapsed .sidebar-title,.satellite-sidebar.collapsed .count-badge{opacity:0;pointer-events:none}.sidebar-header{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--border-subtle);flex-shrink:0}.sidebar-collapse-btn{width:28px;height:28px;border:none;transition:transform var(--duration-normal) var(--ease-out),color var(--duration-fast) var(--ease-out)}.satellite-sidebar.collapsed .sidebar-collapse-btn{transform:rotate(180deg)}.sidebar-title{font-size:var(--fs-base);font-weight:600;white-space:nowrap;transition:opacity var(--duration-fast)}.count-badge{font-family:var(--font-mono);font-size:var(--fs-xs);font-weight:500;color:var(--accent-cyan);background:#00d4ff1a;border:1px solid rgba(0,212,255,.2);padding:1px 7px;border-radius:10px;white-space:nowrap;transition:opacity var(--duration-fast)}.sidebar-settings-btn{width:28px;height:28px;border:none;margin-left:auto}.sidebar-settings-dropdown{padding:12px var(--panel-padding);border-bottom:1px solid var(--border-subtle);flex-shrink:0;overflow-y:auto;max-height:50%}.sidebar-settings-dropdown[hidden]{display:none}.sidebar-body{display:flex;flex-direction:column;flex:1;overflow:hidden;transition:opacity var(--duration-fast)}.search-wrapper{position:relative;padding:10px 12px 6px}.search-icon{position:absolute;left:22px;top:50%;transform:translateY(-50%);color:var(--text-tertiary);pointer-events:none}.search-input{width:100%;height:32px;padding:0 10px 0 30px;background:var(--bg-input);border:1px solid var(--border-subtle);border-radius:var(--panel-radius-sm);color:var(--text-primary);font-family:var(--font-primary);font-size:var(--fs-sm);outline:none;transition:border-color var(--duration-fast)}.search-input::placeholder{color:var(--text-tertiary)}.search-input:focus{border-color:var(--border-active);box-shadow:0 0 0 2px #00d4ff1a}.filter-chips{display:flex;gap:6px;padding:6px 12px 10px;flex-wrap:wrap}.chip{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;font-family:var(--font-primary);font-size:var(--fs-xs);font-weight:500;color:var(--text-secondary);background:#ffffff0a;border:1px solid var(--border-subtle);border-radius:20px;cursor:pointer;transition:all var(--duration-fast);white-space:nowrap}.chip:hover{color:var(--text-primary);border-color:var(--border-panel);background:#ffffff14}.chip-active{color:var(--accent-cyan);border-color:#00d4ff4d;background:#00d4ff1a}.chip-dot{width:6px;height:6px;border-radius:50%}.chip-dot--green{background:var(--accent-green);box-shadow:var(--glow-green)}.chip-dot--amber{background:var(--accent-amber);box-shadow:var(--glow-amber)}.chip-dot--magenta{background:var(--accent-magenta);box-shadow:var(--glow-magenta)}.mini-map-container{padding:8px 12px;border-bottom:1px solid var(--border-subtle);flex-shrink:0}.mini-map-label{font-size:var(--fs-xs);font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--text-secondary);margin-bottom:6px}.mini-map-canvas{width:100%;height:auto;border-radius:6px;border:1px solid var(--border-subtle);display:block}.satellite-list{list-style:none;flex:1;overflow-y:auto;padding:4px 8px 8px}.satellite-list-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:var(--panel-radius-sm);cursor:pointer;transition:all var(--duration-fast);border:1px solid transparent;border-left:3px solid transparent}.satellite-list-item:hover{background:#ffffff0a;border-left-color:var(--sat-color, var(--accent-cyan))}.satellite-list-item.selected{background:#ffffff0f;border-color:#ffffff14;border-left-color:var(--sat-color, var(--accent-cyan));box-shadow:inset 0 0 20px #0003}.sat-item-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0;animation:sat-pulse 3s ease-in-out infinite}.sat-item-dot--degraded{animation:sat-blink 1s ease-in-out infinite}.sat-item-dot--offline{opacity:.3;animation:none}@keyframes sat-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.7;transform:scale(.85)}}@keyframes sat-blink{0%,to{opacity:1}50%{opacity:.3}}.sat-item-info{flex:1;min-width:0}.sat-item-name{font-size:var(--fs-sm);font-weight:500;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sat-item-meta{display:flex;align-items:center;gap:4px;font-size:var(--fs-xs);color:var(--text-secondary)}.sat-constellation-tag{font-weight:600;font-size:var(--fs-xs)}.sat-meta-sep{opacity:.4}.sat-item-stats{display:flex;flex-direction:column;align-items:flex-end;gap:1px;flex-shrink:0}.sat-item-alt{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-data);white-space:nowrap}.sat-item-vel{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-tertiary);white-space:nowrap}.satellite-info{top:16px;right:16px;width:320px;padding:var(--panel-padding);animation:panel-slide-in var(--duration-normal) var(--ease-out);border-top:2px solid var(--info-accent, var(--accent-cyan))}.satellite-info[hidden]{display:none}@keyframes panel-slide-in{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}.info-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:14px}.info-title-row{display:flex;align-items:center;gap:8px}.status-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.status-dot--healthy{background:var(--accent-green);box-shadow:var(--glow-green)}.status-dot--degraded{background:var(--accent-amber);box-shadow:var(--glow-amber)}.status-dot--offline{background:var(--accent-magenta);box-shadow:var(--glow-magenta)}.info-name{font-size:var(--fs-md);font-weight:600;color:var(--text-primary)}.info-close-btn{width:28px;height:28px;border:none}.info-grid{display:grid;grid-template-columns:1fr 1fr;gap:2px}.info-cell{display:flex;flex-direction:column;gap:3px;padding:10px;background:#ffffff05;border-radius:var(--panel-radius-sm);border:1px solid var(--border-subtle)}.info-cell--wide{grid-column:1 / -1}.info-label{font-size:var(--fs-xs);font-weight:500;text-transform:uppercase;letter-spacing:.08em;color:var(--text-secondary)}.info-value{font-size:var(--fs-base);color:var(--text-data);font-weight:500}.info-value small{font-size:var(--fs-xs);color:var(--text-secondary);font-weight:400}.health-badge{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-sm)!important;font-weight:500;padding:2px 0}.health-badge:before{content:"";width:6px;height:6px;border-radius:50%}.health-badge--healthy{color:var(--accent-green)!important}.health-badge--healthy:before{background:var(--accent-green);box-shadow:var(--glow-green)}.health-badge--degraded{color:var(--accent-amber)!important}.health-badge--degraded:before{background:var(--accent-amber);box-shadow:var(--glow-amber)}.health-badge--offline{color:var(--accent-magenta)!important}.health-badge--offline:before{background:var(--accent-magenta);box-shadow:var(--glow-magenta)}.stats-bar{position:fixed;top:16px;left:50%;transform:translate(-50%);z-index:var(--z-stats);display:flex;align-items:center;gap:14px;padding:8px 20px;background:var(--bg-panel);backdrop-filter:blur(var(--panel-blur));-webkit-backdrop-filter:blur(var(--panel-blur));border:1px solid var(--border-panel);border-radius:24px;box-shadow:var(--panel-shadow);flex-wrap:wrap;justify-content:center}.stat-item{display:flex;align-items:center;gap:6px}.stat-label{font-size:var(--fs-xs);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.06em}.stat-value{font-size:var(--fs-sm);color:var(--text-data);font-weight:500}.stat-unit{font-size:var(--fs-xs);color:var(--text-tertiary)}.stat-divider{width:1px;height:16px;background:var(--border-subtle)}.constellation-summary{display:flex;gap:8px;align-items:center}.constellation-chip{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-xs);font-family:var(--font-mono);font-weight:500;color:var(--chip-color, var(--text-secondary));padding:2px 8px;border-radius:12px;background:#ffffff0a;border:1px solid rgba(255,255,255,.06);white-space:nowrap}.constellation-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.time-controls{bottom:16px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:12px;padding:10px 18px;border-radius:24px;white-space:nowrap}.play-btn{width:40px;height:40px;border-radius:50%;border-color:var(--accent-cyan);color:var(--accent-cyan);background:#00d4ff14}.play-btn:hover{background:#00d4ff26;box-shadow:var(--glow-cyan-strong)}.play-btn svg[hidden]{display:none}.time-speed-group{display:flex;align-items:center;gap:8px}.time-speed-label{font-size:var(--fs-xs);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.06em}.speed-slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:80px;height:4px;background:#ffffff1a;border-radius:2px;outline:none;cursor:pointer}.speed-slider::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:var(--accent-cyan);border:2px solid var(--bg-secondary);box-shadow:0 0 8px #00d4ff80;cursor:pointer;transition:transform var(--duration-fast)}.speed-slider::-webkit-slider-thumb:hover{transform:scale(1.2)}.speed-slider::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--accent-cyan);border:2px solid var(--bg-secondary);box-shadow:0 0 8px #00d4ff80;cursor:pointer}.speed-display{font-size:var(--fs-sm);color:var(--accent-cyan);font-weight:500;min-width:40px;text-align:center}.time-divider{width:1px;height:24px;background:var(--border-subtle)}.time-datetime-group{display:flex;align-items:center;gap:8px}.time-clock-icon{color:var(--text-tertiary);flex-shrink:0}.time-date{font-size:var(--fs-sm);color:var(--text-secondary)}.time-time{font-size:var(--fs-sm);color:var(--text-data);font-weight:500}.reset-btn{width:32px;height:32px}.mobile-nav{display:none;position:fixed;bottom:0;left:0;right:0;z-index:300;background:#0a0a1ef2;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-top:1px solid var(--border-panel);padding:6px 0 env(safe-area-inset-bottom,6px);justify-content:space-around;align-items:center}.mobile-nav-btn{display:flex;flex-direction:column;align-items:center;gap:2px;background:none;border:none;color:var(--text-tertiary);font-family:var(--font-primary);font-size:10px;font-weight:500;padding:6px 16px;cursor:pointer;transition:color var(--duration-fast);-webkit-tap-highlight-color:transparent}.mobile-nav-btn.active{color:var(--accent-cyan)}.mobile-nav-btn:hover{color:var(--text-primary)}.mobile-nav-btn svg{transition:transform var(--duration-fast)}.mobile-nav-btn.active svg{transform:scale(1.1)}@media(max-width:1024px){.satellite-sidebar{width:260px}.satellite-info{width:280px}.constellation-summary{display:none}}@media(max-width:768px){.mobile-nav{display:flex}.satellite-sidebar{position:fixed;top:0!important;left:0!important;right:0!important;bottom:56px!important;width:100%!important;height:auto!important;border-radius:0;z-index:250;display:none}.satellite-sidebar.mobile-visible{display:flex}.satellite-sidebar.collapsed{width:100%!important}.satellite-sidebar.collapsed .sidebar-body,.satellite-sidebar.collapsed .sidebar-title,.satellite-sidebar.collapsed .count-badge{opacity:1;pointer-events:auto}.settings-panel{display:none;position:fixed;top:0!important;left:0!important;right:0!important;bottom:56px!important;width:100%!important;min-width:100%!important;border-radius:0;z-index:250;padding:var(--panel-padding);overflow-y:auto}.settings-panel.mobile-visible{display:block}.settings-panel.mobile-visible .settings-body{width:100%;padding:var(--panel-padding) 0;display:block!important}.settings-panel.mobile-visible .settings-toggle{display:none}.sidebar-settings-btn,.sidebar-settings-dropdown{display:none!important}.satellite-info{top:8px!important;left:8px!important;right:8px!important;bottom:auto!important;width:auto!important;max-height:45vh;overflow-y:auto;z-index:260;border-radius:var(--panel-radius)}.time-controls{bottom:64px!important;left:8px!important;right:8px!important;transform:none!important;border-radius:var(--panel-radius);justify-content:center;flex-wrap:wrap;gap:8px;padding:8px 14px;z-index:200}.time-controls.mobile-hidden{display:none}.speed-slider{width:60px}.stats-bar{top:8px;padding:6px 14px;gap:10px;max-width:calc(100% - 16px);z-index:200}.stat-label,.constellation-summary{display:none}.settings-panel:not(.mobile-visible) .settings-toggle{display:none}.mini-map-container{display:none}}@media(max-width:480px){.time-datetime-group,.time-divider{display:none}}@media(max-height:500px)and (orientation:landscape){.mobile-nav{display:none}.satellite-sidebar{top:0!important;left:auto!important;right:0!important;bottom:0!important;width:300px!important;height:100%!important;max-height:100vh;border-radius:0;display:flex}.satellite-info{top:0!important;left:0!important;right:auto!important;bottom:auto!important;width:280px!important;max-height:100vh;border-radius:0}.time-controls{bottom:8px!important;left:50%!important;right:auto!important;transform:translate(-50%)!important;border-radius:24px;width:auto}}:focus-visible{outline:2px solid var(--accent-cyan);outline-offset:2px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.css2d-layer,.css2d-layer *{pointer-events:none!important}.sat-label{display:flex;flex-direction:column;align-items:center;transition:opacity .2s ease-out;filter:drop-shadow(0 1px 3px rgba(0,0,0,.6))}.sat-label-line{display:block;width:1px;height:12px;background:linear-gradient(to bottom,transparent,var(--label-color, #00d4ff));opacity:.5;margin-bottom:2px}.sat-label-tag{display:inline-flex;align-items:center;gap:4px;padding:2px 7px 2px 5px;background:#0a0a1ed1;border:1px solid rgba(0,212,255,.15);border-radius:4px;font-family:JetBrains Mono,Fira Code,monospace;font-size:9px;font-weight:500;letter-spacing:.02em;color:var(--label-color, #00d4ff);white-space:nowrap}.sat-label-dot{width:5px;height:5px;border-radius:50%;flex-shrink:0;box-shadow:0 0 4px currentColor}.sat-label-name{line-height:1}.sat-label--offline{opacity:.3}.sat-label--degraded .sat-label-dot{animation:label-blink 1.2s ease-in-out infinite}@keyframes label-blink{0%,to{opacity:1}50%{opacity:.3}}
