:root{--bg: #03050a;--fg: #c8d8e8;--accent: #6ad1ff;--warn: #ffb454;--bad: #ff6a6a;--ok: #7dffb0;--dim: #3a4a5a;--plan: #2fbf6f;--grid: rgba(106, 209, 255, .08);--mono: "JetBrains Mono", "SF Mono", "Menlo", "Consolas", monospace}*{box-sizing:border-box;margin:0;padding:0}html,body{width:100%;height:100%;overflow:hidden;background:var(--bg);color:var(--fg);font-family:var(--mono);-webkit-font-smoothing:antialiased}#scene{position:fixed;inset:0;width:100vw;height:100vh;display:block}#hud{position:fixed;inset:0;pointer-events:none;z-index:10;font-size:11px;letter-spacing:.1em;text-transform:uppercase}#hud:before{content:"";position:absolute;inset:0;background:linear-gradient(var(--grid) 1px,transparent 1px) 0 0 / 44px 44px,linear-gradient(90deg,var(--grid) 1px,transparent 1px) 0 0 / 44px 44px;mask-image:radial-gradient(circle at center,transparent 40%,black 85%);-webkit-mask-image:radial-gradient(circle at center,transparent 40%,black 85%);opacity:.5}.hud-label{font-size:15px;font-weight:600;letter-spacing:.32em;color:var(--accent)}.hud-sub{font-size:10px;color:var(--dim);margin-top:4px}.hud-row{display:flex;gap:10px;justify-content:space-between;line-height:1.7}.hud-row .k{color:var(--dim)}.hud-row .v{color:var(--fg);font-variant-numeric:tabular-nums}.hud-row .v.warn{color:var(--warn);text-shadow:0 0 10px rgba(255,180,84,.5)}.gauge{display:grid;grid-template-columns:42px 1fr 44px;align-items:center;gap:6px}.gauge .k{color:var(--dim);font-size:10px}.gauge .v{color:var(--fg);font-size:10px;text-align:right;font-variant-numeric:tabular-nums}.gauge-track{width:100%;height:auto;display:block;overflow:visible}.g-axis,.g-tick{stroke:var(--dim);stroke-width:1}.g-tick.g-zero{stroke:var(--fg);stroke-width:1;opacity:.5}#att-thrust circle{fill:var(--accent)}#att-vel circle{fill:none;stroke:var(--warn);stroke-width:1.6}#att-yaw circle{fill:var(--plan)}.gauge-scale{display:flex;justify-content:space-between;padding:0 42px 6px 48px;font-size:8px;color:var(--dim);letter-spacing:.02em}.gauge-scale.yaw{padding-left:48px}.gauge-legend{font-size:9px;color:var(--dim);letter-spacing:.04em;margin-top:2px}.gauge-legend i{display:inline-block;width:7px;height:7px;border-radius:50%;margin:0 4px 0 8px;vertical-align:middle}.gauge-legend .lg-thrust{background:var(--accent)}.gauge-legend .lg-vel{border:1.6px solid var(--warn)}:root{--dock-l: 306px;--dock-r: 0px}:root.dock-l-hidden{--dock-l: 0px}:root{--stage-c: calc(var(--dock-l) + (100vw - var(--dock-l) - var(--dock-r)) / 2)}#controls-hint{position:absolute;left:var(--stage-c);bottom:14px;transform:translate(-50%);color:var(--dim);white-space:nowrap}#controls-hint b{color:var(--accent);font-weight:600}#boot{position:fixed;inset:0;z-index:50;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;background:var(--bg);text-align:center;text-transform:uppercase;letter-spacing:.1em;transition:opacity .4s ease}#boot.done{opacity:0;pointer-events:none}#boot .hud-sub{animation:boot-pulse 1.6s ease-in-out infinite}#boot.failed .hud-sub{animation:none;color:var(--bad)}@keyframes boot-pulse{0%,to{opacity:1}50%{opacity:.35}}@media (prefers-reduced-motion: reduce){#boot{transition:none}#boot .hud-sub{animation:none}}.msg{position:absolute;left:var(--stage-c);top:42%;transform:translate(-50%,-50%);text-align:center;pointer-events:none;padding:22px 34px;background:#03060c99;border:1px solid var(--dim);border-radius:4px;backdrop-filter:blur(3px)}.msg.hidden{display:none}.msg-title{font-size:26px;font-weight:700;letter-spacing:.2em}.msg-body{font-size:12px;color:var(--fg);margin-top:10px;line-height:1.8;text-transform:none;letter-spacing:.04em}.msg-hint{font-size:10px;color:var(--dim);margin-top:12px}.msg-hint b{color:var(--accent)}.msg.ok{border-color:var(--ok)}.msg.ok .msg-title{color:var(--ok);text-shadow:0 0 20px rgba(125,255,176,.5)}.msg.bad{border-color:var(--bad)}.msg.bad .msg-title{color:var(--bad);text-shadow:0 0 20px rgba(255,106,106,.5)}.touch-controls{position:fixed;left:var(--stage-c);bottom:44px;transform:translate(-50%);display:flex;gap:12px;z-index:20}.tc-btn{pointer-events:auto;font-family:var(--mono);background:#08101a8c;color:var(--accent);border:1px solid var(--dim);border-radius:6px;padding:14px 18px;font-size:13px;letter-spacing:.12em;cursor:pointer;user-select:none;-webkit-user-select:none;touch-action:none;transition:background .1s,border-color .1s}.tc-btn:hover{border-color:var(--accent)}.tc-btn:active{background:#6ad1ff38;border-color:var(--accent)}.tc-btn.thrust{min-width:150px}.dock{position:fixed;top:0;bottom:0;z-index:20;width:306px;display:flex;flex-direction:column;pointer-events:auto;font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;background:#04080ff0;backdrop-filter:blur(6px);transition:transform .18s ease}#dock-left{left:0;border-right:1px solid var(--dim)}#dock-left.collapsed{transform:translate(-100%)}.dock-tab{position:absolute;top:14px;width:25px;height:30px;pointer-events:auto;font-family:inherit;font-size:12px;line-height:1;background:#03060cdb;color:var(--accent);border:1px solid var(--dim);cursor:pointer}#dock-left .dock-tab{right:-25px;border-left:none;border-radius:0 4px 4px 0}.dock-tab:hover{color:var(--plan);border-color:var(--plan)}.dock-head{flex:none;padding:16px 16px 12px;border-bottom:1px solid var(--dim)}.dock-scroll{flex:1 1 auto;min-height:0;overflow-y:auto;padding:0 16px;display:flex;flex-direction:column}.dock-scroll::-webkit-scrollbar{width:6px}.dock-scroll::-webkit-scrollbar-thumb{background:var(--dim);border-radius:3px}.sb-sec{flex:none;padding:10px 0;border-bottom:1px solid rgba(58,74,90,.45)}.sb-sec.grow{flex:1 1 auto;min-height:220px;display:flex;flex-direction:column}.sb-sec:last-child{border-bottom:none}.sb-sec-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:8px}.sb-sec-head .k{color:var(--accent);letter-spacing:.16em}.sb-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}.sb-grid .hud-row{font-size:10px;gap:6px;letter-spacing:.04em;white-space:nowrap}.sb-grid .hud-row .v{overflow:hidden;text-overflow:ellipsis}.sb-legend{font-size:9px;color:var(--dim);letter-spacing:.04em}.sb-legend i{display:inline-block;width:12px;height:0;margin:0 4px 0 8px;vertical-align:middle}.sb-legend .lg-flown{border-top:2px solid var(--accent)}.sb-legend .lg-pred{border-top:2px dashed var(--plan)}#sb-plots{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;gap:6px}.plot{flex:1 1 0;min-height:0}.plot-svg{width:100%;height:100%;display:block;overflow:visible}.plot-axes line{stroke:var(--dim);stroke-width:.8}.plot-flown{stroke:var(--accent);stroke-width:1.4}.plot-pred{stroke:var(--plan);stroke-width:1.3;stroke-dasharray:3 3}.plot-limit{stroke:var(--warn);stroke-width:.9;stroke-dasharray:2 3;opacity:.8}.plot-now{stroke:var(--fg);stroke-width:.7;opacity:.35}.plot-title{fill:var(--dim);font-size:8px;letter-spacing:.08em}.plot-tick{fill:var(--dim);font-size:7px;font-variant-numeric:tabular-nums}.plot-end{fill:var(--plan);font-size:8px;font-variant-numeric:tabular-nums}.plot-end.warn{fill:var(--warn)}#plan-scenario{width:100%;font-family:inherit;font-size:11px;letter-spacing:.06em;background:#08101ae6;color:var(--fg);border:1px solid var(--dim);border-radius:3px;padding:6px 7px;cursor:pointer}#plan-scenario:focus{outline:none;border-color:var(--accent)}#plan-hint{text-transform:none;letter-spacing:.02em;line-height:1.5;margin:6px 0 12px}.plan-mini{pointer-events:auto;font-family:inherit;font-size:10px;letter-spacing:.08em;background:transparent;color:var(--accent);border:1px solid var(--dim);border-radius:3px;padding:3px 7px;cursor:pointer}.plan-mini:hover{border-color:var(--accent)}.plan-burn{margin-top:8px;padding:8px 9px;border:1px solid var(--dim);border-radius:3px;background:#08101a66}.plan-burn-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}.plan-burn-head .k{color:var(--plan)}.plan-slider{display:grid;grid-template-columns:58px 1fr 46px;align-items:center;gap:7px;line-height:2}.plan-slider .k{color:var(--dim);font-size:10px}.plan-slider .v{color:var(--fg);font-size:10px;text-align:right;font-variant-numeric:tabular-nums}.plan-slider input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:2px;background:var(--dim);border-radius:2px;cursor:pointer}.plan-slider input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:11px;height:11px;border-radius:50%;background:var(--accent);cursor:pointer}.plan-slider input[type=range]::-moz-range-thumb{width:11px;height:11px;border:none;border-radius:50%;background:var(--accent);cursor:pointer}.plan-preview{padding:0}.plan-preview .hud-row{min-width:0;line-height:1.8}.plan-preview .k{color:var(--dim)}.plan-preview .v{color:var(--plan);font-variant-numeric:tabular-nums}.plan-preview .v.warn{color:var(--warn)}.plan-actions{display:flex;gap:6px}.plan-btn{pointer-events:auto;flex:1;font-family:inherit;font-size:11px;letter-spacing:.1em;text-transform:uppercase;background:#08101a8c;color:var(--fg);border:1px solid var(--dim);border-radius:4px;padding:8px 10px;cursor:pointer;transition:background .1s,border-color .1s}.plan-btn{padding:8px 6px;font-size:10px}.plan-btn:hover{border-color:var(--accent)}.plan-btn.primary{color:var(--plan)}.plan-btn.primary:hover{border-color:var(--plan)}.plan-btn.auto{color:var(--warn)}.plan-btn.auto:hover{border-color:var(--warn)}.plan-preview .v.verdict{color:var(--warn);letter-spacing:.06em}.plan-preview .v.verdict.ok{color:var(--ok)}.plan-preview .v.verdict.warn{color:var(--bad)}.plan-preview .v.verdict.ok.warn{color:var(--ok)}.plan-btn.active{background:#6ad1ff1a}.plan-btn.primary.active{border-color:var(--plan);background:#2fbf6f24;box-shadow:0 0 14px #2fbf6f40}.plan-btn.auto.active{border-color:var(--warn);background:#ffb45424;box-shadow:0 0 14px #ffb45440}.plan-btn.active:not(.primary):not(.auto){border-color:var(--accent);box-shadow:0 0 14px #6ad1ff38}#transport{position:fixed;z-index:21;left:var(--stage-c);bottom:96px;transform:translate(-50%);display:flex;gap:8px}.tp-btn{pointer-events:auto;font-family:var(--mono);font-size:12px;letter-spacing:.16em;text-transform:uppercase;background:#04080fe0;color:var(--accent);border:1px solid var(--dim);border-radius:6px;padding:11px 16px;cursor:pointer;transition:background .1s,border-color .1s,color .1s}.tp-btn:hover{border-color:var(--accent)}.tp-btn.play.armed{color:var(--ok);border-color:var(--ok);box-shadow:0 0 18px #7dffb047}#tp-reset{padding:11px 13px;letter-spacing:0}.tp-speed{display:flex;margin-left:4px}.tp-rate{padding:11px 10px;letter-spacing:.06em;border-radius:0;color:var(--dim);position:relative}.tp-rate+.tp-rate{margin-left:-1px}.tp-rate:first-child{border-radius:6px 0 0 6px}.tp-rate:last-child{border-radius:0 6px 6px 0}.tp-rate:hover{color:var(--fg);border-color:var(--dim);background:#162436eb}.tp-rate.active{color:var(--accent);border-color:var(--accent);z-index:1}.burnmenu{position:fixed;z-index:21;right:0;top:14px;width:306px;display:flex;flex-direction:column;max-height:calc(100vh - 130px);pointer-events:auto;font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;background:#04080ff0;backdrop-filter:blur(6px);border:1px solid var(--dim);border-right:none;border-radius:4px 0 0 4px}.burnmenu-tab{flex:none;display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;padding:11px 14px;font-family:inherit;font-size:11px;letter-spacing:.16em;text-transform:uppercase;text-align:left;background:none;color:var(--accent);border:none;cursor:pointer}.burnmenu-tab .k{color:inherit}.burnmenu-tab:hover{color:var(--plan)}.burnmenu-chev{font-size:13px;transition:transform .18s ease}.burnmenu:not(.collapsed) .burnmenu-chev{transform:rotate(-90deg)}.burnmenu-body{overflow-y:auto;padding:0 14px 4px;border-top:1px solid var(--dim)}.burnmenu.collapsed .burnmenu-body{display:none}.burnmenu-foot{flex:none;padding:10px 14px;border-top:1px solid var(--dim)}.burnmenu-foot .plan-btn{width:100%}.burnmenu-foot.hidden,.burnmenu.collapsed .burnmenu-foot{display:none}.burnmenu .sb-sec{border:none;padding:12px 0}.burnmenu .sb-sec+.sb-sec{border-top:1px solid var(--dim)}@media (hover: hover) and (pointer: fine) and (min-width: 821px){.touch-controls{opacity:.35}.touch-controls:hover{opacity:1}}@media (max-width: 820px){#controls-hint{display:none}:root{--dock-l: 0px;--dock-r: 0px}.dock{width:min(88vw,306px)}.burnmenu{width:min(92vw,306px);max-height:calc(100vh - 90px)}.touch-controls{bottom:20px}}
