body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0;overflow:hidden}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}*{box-sizing:border-box}#root,.App{height:100vh;width:100vw}.App{--panel-bg:#000c;--panel-border:#333;--panel-text:#fff;--text-muted:#ccc;--text-subtle:#888;--text-dim:#aaa;--accent:#0f0;--accent-dim:#0a0;--accent-soft-bg:#00ff001a;--accent-soft-border:#00ff004d;--accent-on:#000;--speed-gradient-start:#333;--speed-gradient-end:#0f0;--elevation-gradient-end:#f80;--input-bg:#222;--input-border:#555;--input-text:#fff;--textarea-bg:#111;--textarea-text:#ddd;--btn-neutral-bg:#444;--btn-neutral-border:#666;--btn-neutral-text:#fff;--btn-saved-text:#fc0;--btn-saved-border:#650;--btn-danger-bg:#f44;--btn-danger-dark:#a22;--btn-info-bg:#08c;--btn-info-border:#0cf;--btn-save-bg:#350;--btn-save-text:#8f4;--btn-remove-saved-bg:#520;--btn-remove-saved-text:#f64;--btn-remove-saved-border:#730;--sat-card-bg:#ffffff1a;--pos-text:#8cf;--scrollbar-track:#333;--scrollbar-thumb:#0f0;--scrollbar-thumb-hover:#0c0;--info-border:#333;--info-label:#ccc;--info-value:#0f0;background:#000;background:var(--canvas-bg,#000);overflow:hidden;position:relative}.App[data-theme=light]{--panel-bg:#fffffff0;--panel-border:#dbeafe;--panel-text:#64748b;--text-muted:#94a3b8;--text-subtle:#a8b4c4;--text-dim:#94a3b8;--accent:#5eb3ff;--accent-dim:#3d9eef;--accent-soft-bg:#5eb3ff1f;--accent-soft-border:#5eb3ff59;--accent-on:#fff;--speed-gradient-start:#e2e8f0;--speed-gradient-end:#5eb3ff;--elevation-gradient-end:#ffb347;--input-bg:#f8fafc;--input-border:#cbd5e1;--input-text:#64748b;--textarea-bg:#f1f5f9;--textarea-text:#64748b;--btn-neutral-bg:#eef2f7;--btn-neutral-border:#cbd5e1;--btn-neutral-text:#64748b;--btn-saved-text:#ffb347;--btn-saved-border:#ffd699;--btn-danger-bg:#ff708a;--btn-danger-dark:#ff5a78;--btn-info-bg:#67e8f9;--btn-info-border:#a5f3fc;--btn-save-bg:#5eead4;--btn-save-text:#fff;--btn-remove-saved-bg:#fff1f2;--btn-remove-saved-text:#ff708a;--btn-remove-saved-border:#ffc2cc;--sat-card-bg:#5eb3ff0f;--pos-text:#5eb3ff;--scrollbar-track:#eef2f7;--scrollbar-thumb:#5eb3ff;--scrollbar-thumb-hover:#3d9eef;--info-border:#dbeafe;--info-label:#94a3b8;--info-value:#5eb3ff;--canvas-bg:#fafafa}.control-panel{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:var(--panel-bg);border:1px solid var(--panel-border);border-radius:10px;color:var(--panel-text);font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;left:20px;max-height:calc(100vh - 40px);max-width:360px;min-width:320px;overflow-x:hidden;overflow-y:auto;padding:20px;position:absolute;scrollbar-color:var(--scrollbar-thumb) var(--scrollbar-track);scrollbar-width:thin;top:20px;z-index:1000}.control-panel::-webkit-scrollbar{width:8px}.control-panel::-webkit-scrollbar-track{background:var(--scrollbar-track);border-radius:4px}.control-panel::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:4px}.control-panel::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover)}.theme-toggle-float{align-items:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:var(--panel-bg);border:1px solid var(--panel-border);border-radius:50%;box-shadow:0 4px 16px #00000040;color:var(--accent);cursor:pointer;display:flex;height:34px;justify-content:center;padding:0;position:fixed;right:16px;top:16px;transition:background .15s,color .15s,border-color .15s,transform .15s;width:34px;z-index:1200}.theme-toggle-float:hover{border-color:var(--accent-soft-border);color:var(--accent-dim);transform:scale(1.05)}.panel-time-row{align-items:center;display:flex;gap:8px;justify-content:space-between;margin:0 0 20px}.panel-time{color:var(--text-muted);font-size:12px;min-width:0}.instructions-btn{background:var(--sat-card-bg);border:1px solid var(--panel-border);border-radius:4px;color:var(--text-muted);cursor:pointer;flex-shrink:0;font-size:10px;font-weight:600;letter-spacing:.02em;margin-left:auto;padding:3px 8px;transition:background .15s,color .15s,border-color .15s}.instructions-btn:hover{background:var(--accent-soft-bg);border-color:var(--accent-soft-border);color:var(--accent)}.instructions-modal-backdrop{align-items:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#000000b8;display:flex;inset:0;justify-content:center;padding:2em 12px;position:fixed;z-index:2000}.instructions-modal{--instructions-header-h:44px;background:var(--panel-bg);border:1px solid var(--panel-border);border-radius:10px;box-shadow:0 16px 48px #00000073;color:var(--panel-text);display:flex;flex-direction:column;max-height:calc(100vh - 4em);overflow:hidden;width:min(100%,calc((100vh - 4em - var(--instructions-header-h))*16/9))}.instructions-modal-header{align-items:center;border-bottom:1px solid var(--panel-border);box-sizing:border-box;display:flex;flex:0 0 var(--instructions-header-h);gap:12px;height:var(--instructions-header-h);justify-content:space-between;padding:0 14px}.instructions-modal-header h3{color:var(--accent);font-size:15px;font-weight:600;margin:0}.instructions-modal-actions{align-items:center;display:flex;gap:6px}.instructions-close-btn,.instructions-share-btn{align-items:center;background:var(--sat-card-bg);border:1px solid var(--panel-border);border-radius:6px;color:var(--panel-text);cursor:pointer;display:inline-flex;gap:6px;height:32px;justify-content:center;min-width:32px;padding:0 8px;transition:background .15s,color .15s,border-color .15s}.instructions-close-btn:hover,.instructions-share-btn:hover{background:var(--accent-soft-bg);border-color:var(--accent-soft-border);color:var(--accent)}.instructions-close-btn{font-size:20px;line-height:1;padding:0}.instructions-share-status{color:var(--accent);font-size:10px;font-weight:600;white-space:nowrap}.instructions-video-wrap{aspect-ratio:16/9;background:#000;flex:1 1 auto;max-height:calc(100vh - 4em - var(--instructions-header-h));position:relative;width:100%}.instructions-video-wrap iframe,.instructions-video-wrap video{background:#000;border:0;display:block;height:100%;inset:0;position:absolute;width:100%}.canvas-wrapper{bottom:0;display:flex;left:0;position:absolute;right:0;top:0}.canvas-left-spacer{flex:0 0 auto;width:400px}.canvas-scene{background:#000;background:var(--canvas-bg,#000);flex:1 1 auto}.canvas-scene canvas{display:block}.control-group{margin-bottom:15px}.control-group label{display:block;font-size:12px;font-weight:700;letter-spacing:1px;margin-bottom:5px;text-transform:uppercase}.control-group input[type=range]{margin-bottom:5px;width:100%}.control-group input[type=number]{background:var(--input-bg);border:1px solid var(--input-border);border-radius:3px;color:var(--input-text);padding:5px;width:100%}.speed-display{color:var(--accent);font-size:14px;margin-top:5px;text-align:center}.satellite-info{border-top:1px solid var(--info-border);margin-top:20px;padding-top:15px}.info-item{display:flex;font-size:12px;justify-content:space-between;margin-bottom:5px}.info-label{color:var(--info-label)}.info-value{color:var(--info-value);font-weight:700}.exports-dropdown{position:relative}.exports-dropdown-trigger{background:var(--btn-info-bg);border:1px solid var(--btn-info-border);border-radius:4px;color:var(--accent-on);cursor:pointer;font-size:11px;font-weight:700;padding:8px 12px;text-align:left;width:100%}.exports-dropdown-trigger:disabled{cursor:not-allowed;opacity:.6}.exports-dropdown-menu{background:var(--panel-bg);border:1px solid var(--panel-border);border-radius:4px;box-shadow:0 8px 24px #00000059;display:flex;flex-direction:column;gap:2px;left:0;padding:4px;position:absolute;right:0;top:calc(100% + 4px);z-index:1100}.exports-dropdown-item{background:#0000;border:1px solid #0000;border-radius:3px;color:var(--panel-text);cursor:pointer;font-size:11px;font-weight:600;padding:8px 10px;text-align:left;width:100%}.exports-dropdown-item:hover{background:var(--accent-soft-bg);border-color:var(--accent-soft-border)}.exports-dropdown-item.active{background:var(--accent-soft-bg);border-color:var(--accent);color:var(--accent)}