:root{--bg: #0b0e13;--panel: rgba(17, 21, 28, .93);--panel2: #1b212b;--line: #2b3340;--fg: #e8edf3;--dim: #8b95a5;--acc: #5fd3ff;--warn: #ffb020;--bad: #ff5a5a;--ok: #4cd964;--gold: #e0b83a;--space: #b48cff;font:13px/1.35 system-ui,-apple-system,Segoe UI,sans-serif}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--bg);color:var(--fg);overflow:hidden;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}.num{font-variant-numeric:tabular-nums}.dim{color:var(--dim)}.hud{position:absolute;inset:0;pointer-events:none}.hud>*{pointer-events:auto}.topbar{position:absolute;top:0;left:0;right:0;display:flex;gap:6px;align-items:center;padding:calc(env(safe-area-inset-top) + 8px) 10px 8px;pointer-events:none}.topbar>*{pointer-events:auto}.pill{display:flex;align-items:center;gap:6px;height:34px;padding:0 11px;background:var(--panel);border:1px solid var(--line);border-radius:10px;white-space:nowrap}button.pill:hover{border-color:#3d4757}.pill b{font-weight:650}.pill.planet{font-weight:700;font-size:14px;gap:8px}.pill.planet .dot{width:14px;height:14px;border-radius:50%;box-shadow:inset -3px -3px 4px #00000080}.res{display:flex;gap:2px}.res span{display:flex;align-items:center;gap:3px;padding:0 5px}.res img,.ico{width:18px;height:18px;image-rendering:auto;flex:none}.spacer{flex:1}.meter{width:54px;height:6px;border-radius:3px;background:#2a313c;overflow:hidden}.meter i{display:block;height:100%;background:var(--ok)}.pill.wave{gap:8px}.pill.wave.soon{border-color:var(--warn);color:var(--warn)}.pill.wave.live{border-color:var(--bad);background:#5a1414e6;color:#ffd0d0;animation:pulse 1s infinite alternate}@keyframes pulse{to{box-shadow:0 0 14px #ff5a5a8c}}.speed{display:flex;padding:0 3px;gap:1px}.speed button{border:0;background:none;height:28px;min-width:28px;border-radius:7px;color:var(--dim);font-weight:700}.speed button.on{background:#2b3442;color:var(--fg)}.iconbtn{width:34px;justify-content:center;padding:0;font-size:16px}.palette{position:absolute;left:50%;bottom:calc(env(safe-area-inset-bottom) + 10px);transform:translate(-50%);background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:6px;max-width:calc(100% - 20px)}.tabs{display:flex;gap:2px;margin-bottom:6px}.tabs button{flex:1;border:0;background:none;padding:5px 10px;border-radius:8px;color:var(--dim);font-weight:650;font-size:12px;white-space:nowrap}.tabs button.on{background:#262e3a;color:var(--fg)}.tabs button i{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:5px}.slots{display:flex;gap:4px;overflow-x:auto}.slot{position:relative;width:62px;flex:none;padding:5px 2px 4px;border:1px solid transparent;border-radius:10px;background:#1a2029;display:flex;flex-direction:column;align-items:center;gap:2px;font-size:10.5px;color:#c5ccd6}.slot canvas,.slot img{width:40px;height:40px}.slot.on{border-color:var(--acc);background:#1b2a35}.slot.locked{opacity:.38}.slot .key{position:absolute;top:3px;left:5px;font-size:9.5px;color:var(--dim)}.slot .lock{position:absolute;top:3px;right:5px;font-size:10px}.slot span{width:100%;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tip{position:absolute;background:#0f1319;border:1px solid var(--line);border-radius:10px;padding:9px 11px;width:240px;box-shadow:0 8px 24px #00000080;font-size:12px}.tip h4{margin:0 0 4px;font-size:13px}.tip p{margin:4px 0 6px;color:#b6bfcc}.cost{display:flex;flex-wrap:wrap;gap:4px 10px}.cost span{display:flex;align-items:center;gap:3px}.cost .short{color:var(--bad)}.panel{position:absolute;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:12px;width:290px}.panel h3{margin:0;font-size:15px;display:flex;align-items:center;gap:8px}.panel h3 small{font-weight:500;color:var(--dim);font-size:12px;margin-left:auto}.panel .sub{color:var(--dim);font-size:12px;margin:2px 0 10px}.panel .row{display:flex;align-items:center;gap:8px;margin:6px 0}.panel .row>:first-child{color:var(--dim);width:74px;flex:none}.panel hr{border:0;border-top:1px solid var(--line);margin:10px 0}.hp{flex:1;height:7px;border-radius:4px;background:#2a313c;overflow:hidden}.hp i{display:block;height:100%;background:var(--ok)}.bar{flex:1;height:7px;border-radius:4px;background:#2a313c;overflow:hidden}.bar i{display:block;height:100%;background:var(--acc)}.grid{display:grid;grid-template-columns:repeat(5,1fr);gap:4px}.grid button{border:1px solid var(--line);background:#1a2029;border-radius:8px;height:44px;display:grid;place-items:center}.grid button.on{border-color:var(--acc);background:#1b2a35}.grid button.locked{opacity:.3}.inv{display:flex;flex-wrap:wrap;gap:4px}.inv span{display:flex;align-items:center;gap:3px;background:#1a2029;border-radius:6px;padding:2px 6px 2px 3px}.btn{border:1px solid var(--line);background:#222a35;border-radius:9px;padding:8px 12px;font-weight:650}.btn.primary{background:#1f6f93;border-color:#2b8ab5}.btn.danger{background:#6a2424;border-color:#8f3434}.btn.wide{width:100%}.btn:disabled{opacity:.4;cursor:default}.badge{font-size:11px;font-weight:700;padding:2px 7px;border-radius:99px;background:#2b3442;color:var(--dim)}.badge.ok{background:#4cd96426;color:var(--ok)}.badge.warn{background:#ffb02026;color:var(--warn)}.badge.bad{background:#ff5a5a26;color:var(--bad)}.badge.acc{background:#5fd3ff26;color:var(--acc)}.rules{display:flex;flex-direction:column;gap:5px}.rule{display:grid;grid-template-columns:22px 1fr auto;gap:6px;align-items:center;background:#1a2029;border-radius:8px;padding:6px 8px;font-size:12px}.alerts{position:absolute;left:10px;bottom:140px;display:flex;flex-direction:column;gap:6px;width:300px}.alert{display:flex;gap:9px;align-items:center;background:var(--panel);border:1px solid var(--line);border-left:4px solid var(--warn);border-radius:10px;padding:8px 10px;font-size:12.5px}.alert.bad{border-left-color:var(--bad)}.alert.ok{border-left-color:var(--ok)}.alert.info{border-left-color:var(--acc)}.alert b{display:block;font-size:13px}.alert .go{margin-left:auto;color:var(--acc);font-weight:650;font-size:12px;white-space:nowrap}.objectives{position:absolute;left:10px;top:56px;width:270px;padding:10px 12px;background:var(--panel);border:1px solid var(--line);border-radius:12px}.objectives h4{margin:0 0 6px;font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--dim)}.objectives li{list-style:none;display:flex;gap:8px;margin:5px 0}.objectives ul{margin:0;padding:0}.objectives li:before{content:"";flex:none;width:13px;height:13px;border-radius:4px;border:2px solid #4a5566;margin-top:1px}.objectives li.done{color:var(--dim);text-decoration:line-through}.objectives li.done:before{background:var(--ok);border-color:var(--ok)}.hovertile{position:absolute;left:10px;bottom:10px;background:var(--panel);border:1px solid var(--line);border-radius:9px;padding:5px 9px;font-size:12px;display:flex;gap:6px;align-items:center}.modal{position:absolute;inset:0;background:#05070ab8;display:grid;place-items:center}.sheet{background:#12161d;border:1px solid var(--line);border-radius:18px;padding:20px;box-shadow:0 20px 60px #0009}.sheet h2{margin:0 0 4px;font-size:20px}.sheet .sub{color:var(--dim);margin-bottom:14px}.touch .pill{height:44px;padding:0 13px}.touch .speed button{min-width:40px;height:36px}.touch .iconbtn{width:44px}.touch .slot{width:74px}.touch .slot canvas,.touch .slot img{width:48px;height:48px}.touch .tabs button{padding:9px 12px;font-size:13px}.touch .btn{padding:11px 14px}.portrait .topbar{flex-wrap:wrap}.portrait .topbar .res{order:10;width:100%;justify-content:space-between}.portrait .topbar .spacer{display:none}[hidden]{display:none!important}#view{position:fixed;inset:0;width:100%;height:100%;display:block;touch-action:none}body{touch-action:manipulation;overscroll-behavior:none}.hud{position:fixed;z-index:2}.minimap{position:absolute;right:10px;top:calc(env(safe-area-inset-top) + 56px);width:160px;height:160px;border-radius:12px;border:1px solid var(--line);background:#000;image-rendering:pixelated;cursor:pointer}.panel.inspect{right:10px;top:calc(env(safe-area-inset-top) + 226px);max-height:calc(100% - 240px - env(safe-area-inset-top));overflow:auto}.panel h3{padding-right:30px}.close{position:absolute;top:8px;right:8px;border:0;background:none;color:var(--dim);font-size:15px;width:32px;height:32px;border-radius:8px}.close:hover{background:#222a35;color:var(--fg)}.alerts{bottom:52px}.alert{cursor:pointer;transition:opacity .3s}.alert.out{opacity:0}.objectives{cursor:pointer}.objectives h4{display:flex;gap:6px;align-items:center;margin:0}.objectives ul{margin-top:6px}.objectives .chev{margin-left:auto;transition:transform .2s}.objectives.collapsed ul{display:none}.objectives.collapsed .chev{transform:rotate(-90deg)}.toast{position:absolute;left:50%;bottom:150px;transform:translate(-50%);background:#0a0c10f0;border:1px solid var(--line);border-radius:10px;padding:9px 14px;pointer-events:none;max-width:calc(100% - 40px);text-align:center}.hivedot{width:14px;height:14px;border-radius:50%;background:radial-gradient(#a85a9a,#5a2a5a);display:inline-block;flex:none}.warnt{color:var(--warn)}.small{font-size:12px;margin:8px 0}.core-inv{max-height:220px;overflow:auto}.pill.res,button.slot{cursor:pointer}.tabs button[data-rm].on{background:#ff5a5a2e;color:var(--bad)}.fab{position:absolute;right:10px;bottom:150px;display:flex;flex-direction:column;gap:10px}.fab button{width:56px;height:56px;border-radius:18px;background:var(--panel);border:1px solid var(--line);font-size:22px}.modal{position:fixed;inset:0;z-index:10;padding:12px}.sheet{position:relative;max-width:100%;max-height:calc(100vh - 24px);overflow:auto}.sheet.wide{width:1120px}.sheet.narrow{width:520px}.treewrap{overflow:auto}.tree{position:relative;width:1060px;height:480px}.tree svg{position:absolute;inset:0}.tech{position:absolute;width:180px;background:#1a2029;border:1px solid var(--line);border-radius:12px;padding:9px 10px;font-size:12px;text-align:left;color:var(--fg)}.tech h4{margin:0 0 5px;font-size:13px;display:flex;justify-content:space-between;align-items:center;gap:6px}.tech.done{border-color:#4cd96480}.tech.active{border-color:var(--acc);box-shadow:0 0 0 1px var(--acc),0 0 18px #5fd3ff40}.tech.locked{opacity:.45}.tech .bar{margin-top:6px}.starmap{display:flex;gap:12px;height:min(62vh,540px)}.starmap canvas{flex:1;min-width:0;height:100%;border-radius:12px;cursor:pointer}.panel.side{position:static;width:300px;flex:none;overflow:auto}.legend{display:flex;gap:16px;margin-top:10px;color:var(--dim);font-size:12px;flex-wrap:wrap}.dest{display:grid;grid-template-columns:30px 1fr;gap:10px;align-items:center;width:100%;text-align:left;padding:10px;margin-bottom:6px;border-radius:10px;background:#1a2029;border:1px solid var(--line)}.dest.on{border-color:var(--acc);background:#1b2a35}.dest.off{opacity:.45;cursor:default}.dest .pl{width:26px;height:26px;border-radius:50%;box-shadow:inset -5px -5px 7px #0000008c}.form{display:grid;gap:10px}.form label{display:grid;grid-template-columns:130px 1fr;align-items:center;gap:10px;color:var(--dim)}.form select,.form input{background:#1a2029;color:var(--fg);border:1px solid var(--line);border-radius:8px;padding:9px;font:inherit}.menu{display:grid;gap:8px}.help{display:grid;grid-template-columns:1fr 1fr;gap:28px}.help h4{margin:14px 0 4px}.help p{color:#b6bfcc;margin:0}.help td{padding:3px 12px 3px 0;vertical-align:top;color:#b6bfcc}.help td:first-child{color:var(--fg);white-space:nowrap;font-weight:600}.stats{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:16px 0}.stats div{background:#1a2029;border-radius:10px;padding:8px 10px}.stats b{display:block;font-size:18px}.sheet.end{text-align:center}.sheet.end h2{font-size:28px}.modal.start{padding:0;background:#05070b}.startbg{position:absolute;inset:0;width:100%;height:100%}.title{position:absolute;left:max(32px,7vw);top:16vh;width:min(640px,86vw)}.title h1{font-size:clamp(40px,6vw,64px);white-space:nowrap;letter-spacing:.14em;margin:0;font-weight:800;color:#eef4fa;text-shadow:0 0 30px rgba(95,211,255,.35)}.title .tag{color:#9fb2c4;font-size:16px;margin:6px 0 36px}.title .btn{display:block;width:290px;text-align:left;font-size:16px;padding:13px 18px;margin-bottom:10px;border-radius:12px}.title .save{display:block;color:#a9c3d4;font-size:12.5px;font-weight:500;margin-top:2px}.title-foot{position:absolute;left:max(32px,7vw);bottom:calc(env(safe-area-inset-bottom) + 24px);color:#5c6676;font-size:12px}@media(max-width:1100px){.topbar{flex-wrap:wrap}.topbar .res{order:10}.topbar .spacer{display:none}.minimap{top:calc(env(safe-area-inset-top) + 104px)}.panel.inspect{top:calc(env(safe-area-inset-top) + 274px);max-height:calc(100% - 430px - env(safe-area-inset-top))}.objectives{top:calc(env(safe-area-inset-top) + 104px)}.help{grid-template-columns:1fr}}[data-live]{display:contents}@media(max-width:1400px){.topbar .lbl{display:none}}@media(max-width:1300px){.topbar .meter{display:none}.topbar .res span{padding:0 3px}.touch .speed button{min-width:34px}}.sheet{max-width:calc(100vw - 24px)}@media(max-width:900px){.starmap{flex-direction:column;height:auto}.starmap canvas{flex:none;width:100%;height:46vh}.panel.side{width:auto}}
