:root{--bg:#070b18;--panel:#0f1629;--panel-2:#172038;--line:#26304d;--text:#e8edf9;--muted:#9aa7c4;--data:#4fd8ff;--ok:#5fe08a;--warn:#ffb347;--bad:#ff5d5d}*{box-sizing:border-box}html,body{background:var(--bg);height:100%;color:var(--text);margin:0;font:15px/1.45 system-ui,-apple-system,Segoe UI,sans-serif}button{font:inherit;color:inherit;cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--data);outline-offset:2px}#app{grid-template-rows:auto minmax(0,1fr) 118px;height:100vh;display:grid}#topbar{background:var(--panel);border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:10px 14px;padding:8px 14px;display:flex}.brand{letter-spacing:2px;color:var(--data);font-weight:800}.mission-name{font-weight:600}.clock{font-variant-numeric:tabular-nums;font-size:17px;font-weight:700}.chip{border:1px solid;border-radius:999px;padding:2px 10px;font-size:13px;font-weight:700}.chip.ok{color:var(--ok)}.chip.warn{color:var(--warn)}.chip.bad{color:var(--bad)}.spacer{flex:1}.btn{background:var(--panel-2);border:1px solid var(--line);border-radius:8px;padding:6px 12px}.btn:hover{border-color:var(--data)}.btn.primary{background:var(--data);color:#04121c;border-color:var(--data);font-weight:700}.btn.danger{border-color:var(--bad);color:var(--bad)}.btn:disabled{opacity:.45;cursor:not-allowed}select.btn{color:var(--text);background-color:var(--panel-2);padding:6px 8px}#stage{grid-template-columns:minmax(0,1fr) 390px;min-height:0;display:grid}#game{background:#060a18;justify-content:center;align-items:center;min-width:0;min-height:0;display:flex;overflow:hidden}#panel{background:var(--panel);border-left:1px solid var(--line);padding:10px 12px 20px;overflow-y:auto}#panel section{border:1px solid var(--line);background:#0c1223;border-radius:10px;margin-bottom:10px;padding:10px 12px}#panel h2{letter-spacing:1.2px;text-transform:uppercase;color:var(--muted);margin:0 0 8px;font-size:13px}.device-card{border-color:var(--data)!important}.device-card h3{margin:0 0 4px;font-size:17px}.device-card p{color:#cfd8ee;margin:4px 0}.row{justify-content:space-between;gap:10px;padding:3px 0;display:flex}.row .k{color:var(--muted)}.row .v{font-variant-numeric:tabular-nums;text-align:right;font-weight:600}.v.bad{color:var(--bad)}.v.warn{color:var(--warn)}.v.ok{color:var(--ok)}.tag{border:1px solid var(--line);color:var(--muted);vertical-align:middle;cursor:help;border-radius:4px;margin-left:6px;padding:0 5px;font-size:10px;font-weight:700;display:inline-block}.bar{background:#1b2440;border-radius:8px;height:16px;margin:6px 0;overflow:hidden}.bar>i{background:var(--ok);height:100%;transition:width .2s;display:block}.bar.warn>i{background:var(--warn)}.bar.bad>i{background:var(--bad)}canvas.chart{width:100%;height:130px;margin-top:6px;display:block}.load{border:1px solid #0000;border-radius:8px;grid-template-columns:1fr auto;align-items:center;gap:2px 8px;padding:7px 8px;display:grid}.load+.load{margin-top:4px}.load.highlight{border-color:var(--data);background:#10203a}.load .name{font-weight:600}.load .meta{color:var(--muted);grid-column:1;font-size:12.5px}.load .state{font-weight:700}.load .state.on{color:var(--ok)}.load .state.off{color:var(--muted)}.load .state.down{color:var(--bad)}.load button{grid-area:1/2/span 2;min-width:92px}#log{border-top:1px solid var(--line);background:#0a0f1e;padding:6px 14px;font-size:13.5px;overflow-y:auto}#log .entry{gap:10px;padding:1px 0;display:flex}#log time{color:var(--muted);font-variant-numeric:tabular-nums;flex:none}#log .critical{color:var(--bad);font-weight:600}#log .warning{color:var(--warn)}#log .decision{color:var(--data)}#overlay{z-index:20;background:#040710db;justify-content:center;align-items:flex-start;padding:28px 16px;display:flex;position:fixed;inset:0;overflow-y:auto}#overlay[hidden]{display:none}.modal{background:var(--panel);border:1px solid var(--line);border-radius:14px;width:min(860px,100%);padding:24px 28px}.modal h1{letter-spacing:3px;color:var(--data);margin:0;font-size:34px}.modal h2{margin:18px 0 8px;font-size:18px}.modal p{margin:6px 0}.modal .sub{color:var(--muted)}.modal .actions{flex-wrap:wrap;gap:10px;margin-top:18px;display:flex}.cards{grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:12px;margin-top:14px;display:grid}.card{border:1px solid var(--line);background:#0c1223;border-radius:12px;flex-direction:column;gap:8px;padding:14px;display:flex}.card h3{margin:0;font-size:17px}.card p{color:#cfd8ee;flex:1}.card.locked{opacity:.6}.crew{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:8px;display:grid}.crew div{border:1px solid var(--line);background:#0c1223;border-radius:10px;padding:8px 10px}.crew b{color:var(--data);display:block}table.t{border-collapse:collapse;width:100%;margin:6px 0}table.t th,table.t td{text-align:left;border-bottom:1px solid var(--line);padding:5px 8px}table.t td.n,table.t th.n{text-align:right;font-variant-numeric:tabular-nums}.result-ok{color:var(--ok)}.result-bad{color:var(--bad)}.objective{padding:3px 0}.quiz fieldset{border:1px solid var(--line);border-radius:10px;margin:8px 0;padding:8px 12px}.quiz legend{padding:0 6px;font-weight:600}.quiz label{cursor:pointer;padding:3px 0;display:block}.quiz .right{color:var(--ok);font-weight:700}.quiz .wrong{color:var(--bad)}.note{color:var(--muted);font-size:13px}a{color:var(--data)}@media (width<=980px){#stage{grid-template-rows:46vh minmax(0,1fr);grid-template-columns:1fr}#panel{border-left:0;border-top:1px solid var(--line)}}@media (prefers-reduced-motion:reduce){.bar>i{transition:none}}.notice{border:1px solid var(--warn);color:var(--warn);background:#2a2010;border-radius:10px;margin-bottom:10px;padding:8px 12px;font-weight:600}.notice[hidden],.bar[hidden]{display:none}.stack{gap:6px;margin-top:8px;display:grid}#game.view3d{display:block;position:relative}#game.view3d canvas{cursor:grab;touch-action:none;width:100%;height:100%;display:block}.labels3d{pointer-events:none;position:absolute;inset:0;overflow:hidden}.label3d{pointer-events:auto;border:1px solid var(--line);color:var(--text);white-space:nowrap;will-change:transform;background:#070b18c7;border-radius:9px;flex-direction:column;align-items:center;gap:1px;padding:4px 10px;font-size:13px;line-height:1.25;display:flex;position:absolute;top:0;left:0}.label3d b{font-size:14px}.label3d span{font-weight:600}.label3d:hover,.label3d.sel{border-color:var(--data)}.label3d.sel{box-shadow:0 0 0 2px #4fd8ff59}.tag3d{color:#fff;white-space:nowrap;will-change:transform;background:#0000008c;border-radius:6px;padding:1px 6px;font-size:12px;position:absolute;top:0;left:0}.hint3d{text-align:center;color:#b9c6e4;pointer-events:none;text-shadow:0 1px 3px #000;padding:0 130px 0 10px;font-size:13px;position:absolute;bottom:8px;left:0;right:0}.cam3d{padding:4px 10px;font-size:13px;position:absolute;bottom:8px;right:10px}#game.view3d.alarm:after{content:"";pointer-events:none;animation:1.4s ease-in-out infinite alternate alarm3d;position:absolute;inset:0;box-shadow:inset 0 0 90px 18px #ff3b3b8c}@keyframes alarm3d{0%{opacity:.35}to{opacity:1}}@media (prefers-reduced-motion:reduce){#game.view3d.alarm:after{animation:none}}#app{grid-template-rows:auto auto minmax(0,1fr) 118px}#goalbar{border-bottom:1px solid var(--line);background:#0c1223;flex-wrap:wrap;align-items:baseline;gap:4px 12px;padding:6px 14px;font-size:14px;display:flex}#goalbar b{color:var(--data)}.forecast{font-weight:600}.forecast.bad{color:var(--bad)}.forecast.warn{color:var(--warn)}.forecast.ok{color:var(--ok)}.forecast.bad:before,.forecast.warn:before{content:"⚠ "}.forecast.ok:before{content:"✔ "}.chip.time{color:var(--muted)}.chip.time.running{color:var(--ok)}.legend{margin:4px 2px 0}.guide-spot{z-index:14;border:3px solid var(--data);pointer-events:none;border-radius:10px;transition:left .2s,top .2s,width .2s,height .2s;position:fixed;box-shadow:0 0 0 9999px #03060e80}.guide-bubble{z-index:15;color:#0b1020;background:#f4f7ff;border-radius:14px;width:min(340px,100vw - 16px);padding:14px 16px 12px;font-size:15.5px;line-height:1.45;position:fixed;box-shadow:0 12px 44px #0009}.guide-bubble[hidden],.guide-spot[hidden]{display:none}.guide-bubble .step{letter-spacing:1px;text-transform:uppercase;color:#3b5bd9;font-size:12px;font-weight:700}.guide-bubble p{margin:6px 0 10px}.guide-bubble .todo{color:#0b5c2e;font-weight:700}.guide-bubble .gactions{justify-content:space-between;gap:8px;display:flex}.guide-bubble button{color:#0b1020;background:#fff;border:1px solid #b9c4e6;border-radius:8px;padding:6px 12px}.guide-bubble button.next{color:#fff;background:#1c3fd6;border-color:#1c3fd6;font-weight:700}.guide-bubble button:focus-visible{outline-offset:2px;outline:3px solid #1c3fd6}@media (prefers-reduced-motion:reduce){.guide-spot{transition:none}}#topbar{gap:8px 10px}#topbar .btn{padding:5px 9px;font-size:14px}#topbar .chip{padding:2px 8px;font-size:12.5px}body.simple{font-size:16.5px}body.simple .expert-only,body.simple .tag,body.simple .legend{display:none}body.simple #topbar .btn{padding:7px 12px;font-size:15px}body.simple #goalbar{padding:8px 14px;font-size:16px}body.simple #log{font-size:15px}#panel section.kid h2{letter-spacing:0;text-transform:none;color:var(--text);font-size:17px}#panel section.kid h3{margin:12px 0 4px;font-size:16px}.kid-msg{margin:6px 0 2px;font-weight:600}.kid-msg.ok,.ok{color:var(--ok)}.kid-msg.warn,.warn{color:var(--warn)}.kid-msg.bad,.bad{color:var(--bad)}.flow{grid-template-columns:96px 1fr 76px;align-items:center;gap:8px;margin:4px 0;display:grid}.flow b{text-align:right;font-variant-numeric:tabular-nums}.bar.in>i{background:#ffd36b}.bar.out>i{background:var(--data)}.bar.big{border-radius:13px;height:26px}.tiles{gap:8px;display:grid}.tile{border:2px solid var(--line);background:#0f1830;border-radius:12px;grid-template-columns:44px 1fr auto;align-items:center;gap:10px;padding:10px;display:grid}.tile.on{background:#10261c;border-color:#2c7a4b}.tile.highlight{box-shadow:0 0 0 3px #4fd8ff80}.tile .ico{text-align:center;font-size:32px}.tile .tinfo{gap:1px;display:grid}.tile small{color:var(--muted);line-height:1.3}.tstate{letter-spacing:.5px;font-size:13px;font-weight:800}.tstate.on{color:var(--ok)}.tstate.off{color:var(--muted)}.tstate.down{color:var(--bad)}.switch{border:2px solid var(--data);background:var(--panel-2);border-radius:12px;min-width:104px;min-height:48px;font-size:16px;font-weight:800}.switch[aria-pressed=true]{border-color:var(--ok);background:#1d3b2a}.switch:hover:not(:disabled){filter:brightness(1.25)}.switch:disabled{opacity:.45;cursor:not-allowed}.air-status{align-items:center;gap:10px;font-size:18px;display:flex}.face{font-size:40px;line-height:1}.bar.gauge{border-radius:11px;height:22px;margin-top:10px;position:relative;overflow:visible}.bar.gauge>i{border-radius:11px}.bar.gauge>i.ok{background:var(--ok)}.bar.gauge>i.warn{background:var(--warn)}.bar.gauge>i.bad{background:var(--bad)}.bar.gauge .limit{color:#fff;border-left:3px dashed #fff;padding-left:5px;font-size:12px;font-style:normal;position:absolute;top:-6px;bottom:-6px;left:75%}.life{border-top:1px solid var(--line);margin-top:12px;padding-top:10px}.life[hidden]{display:none}.btn.big{text-align:left;min-height:46px;font-size:16px;font-weight:700}.btn.big.active{border-color:var(--ok);background:#1d3b2a}.goal{padding:6px 0}.goal+.goal{border-top:1px solid var(--line)}.goal-head{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.goal-head small{color:var(--muted);text-align:right}.goal.done .goal-head span{color:var(--ok)}.kid-modal h2{font-size:26px}.kcard{align-items:flex-start}.kico{font-size:44px;line-height:1}.kcard h3{font-size:18px}.btn.primary.big{text-align:center;padding:10px 26px;font-size:20px}.stars{letter-spacing:6px;margin:6px 0;font-size:44px}details{border:1px solid var(--line);border-radius:10px;margin:12px 0;padding:6px 12px}details summary{cursor:pointer;padding:4px 0;font-weight:700}body.simple .chartbox{display:none}#game.view3d.storm:before{content:"";pointer-events:none;z-index:1;background:radial-gradient(at 15% 20%,#ffaa3c47,#ff782814 55%,#0000 80%);position:absolute;inset:0}
