:root{--ink: #eef2f4;--dim: #9fb0b8;--panel: rgba(14, 18, 20, .72);--line: rgba(255, 255, 255, .12);--ok: #7fc98a;--warn: #e0a53c;--danger: #e2603f;--accent: #7fb2d9}*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden;background:#0e1214}body{font:13px/1.35 ui-sans-serif,-apple-system,SF Pro Text,system-ui,sans-serif;color:var(--ink);-webkit-user-select:none;user-select:none;touch-action:none}#view{display:block;width:100vw;height:100vh}#hud{position:fixed;inset:0;pointer-events:none}#cluster{position:fixed;left:50%;bottom:max(10px,env(safe-area-inset-bottom));transform:translate(-50%);width:min(620px,84vw);pointer-events:none;filter:drop-shadow(0 10px 26px rgba(0,0,0,.55))}#cluster .cluster{display:block;width:100%;height:auto}#status{position:fixed;top:14px;right:16px;text-align:right;font-size:11px;line-height:1.5;color:var(--dim);pointer-events:none;text-shadow:0 1px 3px rgba(0,0,0,.7)}#status b{color:var(--ink);font-variant-numeric:tabular-nums;font-weight:550}#status .warn{color:var(--warn)}#status .danger{color:var(--danger)}#status .hidden{display:none}#keys{position:fixed;left:14px;bottom:14px;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:12px 14px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);max-width:320px}#keys h2{margin:0 0 8px;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--dim);font-weight:550}#keys dl{margin:0;display:grid;grid-template-columns:auto 1fr;gap:3px 12px;font-size:11px}#keys dt{color:var(--accent);font-family:ui-monospace,SFMono-Regular,monospace;white-space:nowrap}#keys dd{margin:0;color:var(--dim)}#keys .hint{margin:10px 0 0;font-size:10px;color:#fff6;line-height:1.4}#keys.hidden{display:none}#toast{position:fixed;left:50%;top:18px;transform:translate(-50%);background:var(--panel);border:1px solid var(--line);border-radius:999px;padding:7px 16px;font-size:12px;opacity:0;transition:opacity .25s;pointer-events:none;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}#toast.show{opacity:1}#loading{position:fixed;inset:0;z-index:60;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:26px;background:radial-gradient(120% 90% at 50% 30%,#1a2229,#0b0e11 70%);transition:opacity .7s ease}#loading.done,body.loading #cluster,body.loading #status,body.loading #keys,body.loading .lil-gui{opacity:0;pointer-events:none}#loading .intro{text-align:center;max-width:420px;padding:0 24px}#loading h1{margin:0;font-size:34px;font-weight:300;letter-spacing:.3em;text-transform:uppercase;color:var(--ink);text-indent:.3em}#loading .sub{margin:10px 0 0;font-size:12px;letter-spacing:.1em;color:var(--dim)}#loading .progress{margin:26px auto 0;width:190px;height:2px;border-radius:1px;background:#ffffff1f;overflow:hidden}#loading .progress i{display:block;height:100%;width:30%;border-radius:1px;background:linear-gradient(90deg,transparent,var(--accent),transparent);animation:sweep 1.5s ease-in-out infinite}@keyframes sweep{0%{transform:translate(-100%)}to{transform:translate(430%)}}#loading .tip{margin:14px 0 0;font-size:11px;color:#ffffff59}#loading .credits{display:flex;gap:22px;flex-wrap:wrap;justify-content:center;font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:#ffffff38;padding:0 24px;text-align:center}.lil-gui{--background-color: rgba(14,18,20,.86);--widget-color: rgba(255,255,255,.1);--font-size: 11px;--input-font-size: 11px}#garage{position:fixed;inset:0;display:none;pointer-events:none;z-index:40}#garage.visible{display:block}.garage-panel{position:absolute;top:0;right:0;bottom:0;width:min(680px,58vw);display:flex;flex-direction:column;background:linear-gradient(180deg,#0a0d0ef5,#0a0d0efc);border-left:1px solid rgba(255,255,255,.1);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);pointer-events:auto;box-shadow:-30px 0 80px #00000080}@media(max-width:820px){.garage-panel{width:100vw;border-left:none}}.garage-panel header{display:flex;align-items:flex-start;justify-content:space-between;padding:22px 24px 14px;border-bottom:1px solid rgba(255,255,255,.08)}.garage-panel h1{margin:0;font-size:15px;font-weight:550;letter-spacing:.22em;text-transform:uppercase;color:var(--ink)}.garage-panel .title p{margin:4px 0 0;font-size:11px;color:var(--dim);letter-spacing:.04em}.garage-panel .close{appearance:none;border:1px solid rgba(255,255,255,.16);background:#ffffff0d;color:var(--ink);font:inherit;font-size:11px;letter-spacing:.06em;padding:8px 14px;border-radius:999px;cursor:pointer;transition:background .15s}.garage-panel .close:hover{background:#ffffff1f}.totals{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:#ffffff12;border-bottom:1px solid rgba(255,255,255,.08)}.tot{background:#0b0e0f;padding:12px 14px 13px}.tot b{display:block;font-size:21px;font-weight:550;color:var(--ink);font-variant-numeric:tabular-nums;letter-spacing:-.01em}.tot span{display:block;font-size:9.5px;color:var(--dim);letter-spacing:.05em;margin-top:2px}.tot.good b{color:var(--ok)}.tot .bar{display:block;height:3px;margin-top:7px;border-radius:2px;background:#ffffff1f;overflow:hidden}.tot .bar u{display:block;height:100%;background:var(--ok)}.fleet{display:flex;gap:6px;padding:12px 20px 0}.fleet button{flex:1;appearance:none;cursor:pointer;text-align:left;border:1px solid rgba(255,255,255,.1);background:#ffffff08;border-radius:9px;padding:9px 11px;color:var(--dim);font:inherit;transition:border-color .14s,background .14s}.fleet button:hover{border-color:#ffffff3d}.fleet button.on{border-color:var(--accent);background:#8fb2d61f;color:var(--ink)}.fleet button b{display:block;font-size:11.5px;font-weight:550}.fleet button span{display:block;font-size:9.5px;letter-spacing:.05em;margin-top:2px;opacity:.75}#g-nav{display:flex;gap:2px;padding:10px 16px 0;overflow-x:auto;scrollbar-width:none}#g-nav::-webkit-scrollbar{display:none}#g-nav button{appearance:none;border:none;background:none;color:var(--dim);font:inherit;text-align:left;padding:8px 12px 10px;cursor:pointer;border-bottom:2px solid transparent;white-space:nowrap}#g-nav button b{display:block;font-size:11.5px;font-weight:550;letter-spacing:.02em}#g-nav button span{display:none}#g-nav button.on{color:var(--ink);border-bottom-color:var(--accent)}.items{flex:1;overflow-y:auto;padding:16px 20px 24px}.group{margin-bottom:22px}.group h2{margin:0 0 10px;font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;color:#ffffff57;font-weight:550}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(196px,1fr));gap:8px}.card{position:relative;border:1px solid rgba(255,255,255,.1);border-radius:9px;background:#ffffff07;padding:11px 12px 30px;cursor:pointer;transition:border-color .14s,background .14s}.card:hover{border-color:#ffffff3d;background:#ffffff0e}.card.on{border-color:#7fc98a8c;background:#7fc98a17}.card.off{opacity:.42;cursor:not-allowed}.card .row{display:flex;align-items:baseline;gap:8px;justify-content:space-between}.card h3{margin:0;font-size:12px;font-weight:550;color:var(--ink);letter-spacing:.01em}.card .mass{font-size:10px;color:var(--dim);font-variant-numeric:tabular-nums;white-space:nowrap}.card .desc{margin:6px 0 0;font-size:10.5px;line-height:1.42;color:var(--dim)}.card .effect{margin:6px 0 0;font-size:10.5px;line-height:1.42;color:#8fb6d6e6}.card .note{margin:6px 0 0;font-size:10px;color:var(--warn)}.card .state{position:absolute;left:12px;bottom:9px;font-size:8.5px;letter-spacing:.12em;text-transform:uppercase;color:#ffffff4d}.card.on .state{color:var(--ok)}.garage-panel footer{padding:12px 24px;border-top:1px solid rgba(255,255,255,.08);font-size:10.5px;color:#fff6}.empty{color:var(--dim);font-size:11px}body.in-garage #cluster,body.in-garage #status,body.in-garage #keys,body.in-garage .lil-gui{opacity:0;pointer-events:none;transition:opacity .2s}#cluster,#status,.lil-gui{transition:opacity .25s}
