:root{--bg: #05060a;--panel: rgba(12, 14, 22, .78);--panel-2: rgba(20, 23, 34, .9);--line: rgba(255, 255, 255, .08);--line-2: rgba(255, 255, 255, .16);--text: #e9edf5;--muted: #8c95a8;--dim: #5c6478;--good: #5be39b;--warn: #ffb04a;--bad: #ff5d6c;--accent: #ff7a1a;--accent-rgb: 255, 122, 26;--radius: 14px;--font: "Inter", "Segoe UI", system-ui, -apple-system, Roboto, "Helvetica Neue", Arial, sans-serif;--mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--bg);color:var(--text);font-family:var(--font);overflow:hidden;-webkit-font-smoothing:antialiased}body{touch-action:none;overscroll-behavior:none}button,input{font:inherit;color:inherit}button{cursor:pointer}a{color:inherit}#gl{position:fixed;inset:0;width:100%;height:100%;display:block;cursor:grab}#gl.dragging{cursor:grabbing}#gl.building{cursor:crosshair}#labels{position:fixed;inset:0;pointer-events:none;overflow:hidden}#ui{position:fixed;inset:0;pointer-events:none}#ui>*{pointer-events:auto}.num{font-variant-numeric:tabular-nums}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);backdrop-filter:blur(14px) saturate(1.2);-webkit-backdrop-filter:blur(14px) saturate(1.2);box-shadow:0 10px 40px #00000073}.btn{display:inline-flex;align-items:center;gap:8px;padding:9px 14px;border-radius:999px;border:1px solid var(--line-2);background:#ffffff0a;color:var(--text);font-weight:600;font-size:13px;letter-spacing:.01em;transition:background .15s,border-color .15s,transform .08s,box-shadow .2s;white-space:nowrap;user-select:none}.btn:hover{background:#ffffff17;border-color:#ffffff42}.btn:active{transform:translateY(1px) scale(.99)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.primary{background:rgba(var(--accent-rgb),.18);border-color:rgba(var(--accent-rgb),.55);box-shadow:0 0 rgba(var(--accent-rgb),.3)}.btn.primary:hover{background:rgba(var(--accent-rgb),.3);box-shadow:0 0 24px rgba(var(--accent-rgb),.25)}.btn.active{background:rgba(var(--accent-rgb),.28);border-color:rgba(var(--accent-rgb),.8);box-shadow:0 0 22px rgba(var(--accent-rgb),.35),inset 0 0 0 1px #ffffff14}.btn.danger{border-color:#ff5d6c80}.btn.danger:hover{background:#ff5d6c29}.btn.icon{padding:9px;width:38px;height:38px;justify-content:center}.btn .cost{color:var(--muted);font-weight:500}.btn .key{font-family:var(--mono);font-size:10px;color:var(--dim);border:1px solid var(--line);border-radius:5px;padding:1px 5px}.btn.cant .cost{color:var(--bad)}.muted{color:var(--muted)}.small{font-size:12px}.row{display:flex;align-items:center;gap:10px}.grow{flex:1}h1,h2,h3{margin:0;font-weight:700;letter-spacing:.01em}h3{font-size:13px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted)}.bar{position:relative;height:8px;border-radius:999px;background:#ffffff12;overflow:hidden}.bar>i{position:absolute;inset:0 auto 0 0;width:0%;background:var(--accent);border-radius:999px;transition:width .25s linear;box-shadow:0 0 10px rgba(var(--accent-rgb),.6)}.bar.good>i{background:var(--good);box-shadow:0 0 10px #5be39b80}.bar.bad>i{background:var(--bad);box-shadow:0 0 10px #ff5d6c80}.kv{display:grid;grid-template-columns:1fr auto;gap:6px 14px;font-size:13px}.kv dt{color:var(--muted);margin:0}.kv dd{margin:0;text-align:right}.sep{height:1px;background:var(--line);margin:12px 0}.pill{display:inline-block;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:600;letter-spacing:.04em;background:#ffffff12;color:var(--muted)}.pill.accent{background:rgba(var(--accent-rgb),.2);color:#fff}.pill.good{background:#5be39b29;color:var(--good)}.pill.warn{background:#ffb04a29;color:var(--warn)}.pill.bad{background:#ff5d6c29;color:var(--bad)}.hud-top-left{position:absolute;top:14px;left:14px;display:flex;flex-direction:column;gap:10px}.vault{padding:12px 16px;min-width:210px;cursor:pointer}.vault .ore{font-size:28px;font-weight:800;letter-spacing:-.02em;line-height:1.05;display:flex;align-items:baseline;gap:8px}.vault .ore small{font-size:12px;font-weight:600;color:var(--muted);letter-spacing:.08em}.vault .income{font-size:13px;color:var(--good);margin-top:2px}.vault .meta{display:flex;gap:10px;margin-top:8px;font-size:12px;color:var(--muted)}.vault .meta b{color:var(--text);font-weight:600}.hud-top-right{position:absolute;top:14px;right:14px;display:flex;gap:8px;align-items:center}.conn{width:8px;height:8px;border-radius:50%;background:var(--dim);box-shadow:0 0 8px transparent;margin-right:4px;transition:background .3s,box-shadow .3s}.conn.open{background:var(--good);box-shadow:0 0 10px var(--good)}.conn.connecting{background:var(--warn);box-shadow:0 0 10px var(--warn)}.conn.closed{background:var(--bad);box-shadow:0 0 10px var(--bad)}.hud-bottom{position:absolute;bottom:16px;left:50%;transform:translate(-50%);display:flex;gap:8px;align-items:center;padding:8px;border-radius:999px;max-width:calc(100vw - 24px);flex-wrap:wrap;justify-content:center}.hud-bottom .div{width:1px;height:24px;background:var(--line-2);margin:0 4px}.side{position:absolute;top:14px;right:14px;width:320px;max-width:calc(100vw - 28px);max-height:calc(100vh - 110px);overflow:auto;padding:16px;display:flex;flex-direction:column;gap:12px;animation:slide-in .18s ease-out}.side.with-top{top:64px}@keyframes slide-in{0%{opacity:0;transform:translate(10px)}to{opacity:1;transform:none}}.side .title{display:flex;align-items:center;justify-content:space-between;gap:10px}.side .title h2{font-size:18px}.side .title .x{background:none;border:none;color:var(--muted);font-size:20px;line-height:1;padding:4px 8px;border-radius:8px}.side .title .x:hover{background:#ffffff0f;color:var(--text)}.side .actions{display:flex;flex-direction:column;gap:8px}.side .actions .btn{justify-content:space-between;width:100%}.owner-dot{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--accent);box-shadow:0 0 8px var(--accent);vertical-align:middle;margin-right:6px}.upgrade-list{display:flex;flex-direction:column;gap:8px}.upg{display:grid;grid-template-columns:1fr auto;gap:4px 10px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#ffffff05}.upg .name{font-weight:700;font-size:13px}.upg .lvl{font-family:var(--mono);font-size:11px;color:var(--muted)}.upg .blurb{grid-column:1 / -1;font-size:12px;color:var(--muted)}.upg .btn{grid-column:1 / -1;justify-content:space-between}.lb{display:flex;flex-direction:column;gap:4px}.lb .r{display:grid;grid-template-columns:28px 1fr auto;gap:8px;align-items:center;padding:6px 8px;border-radius:8px;font-size:13px}.lb .r.me{background:rgba(var(--accent-rgb),.14)}.lb .r .rank{color:var(--dim);font-family:var(--mono);font-size:12px}.lb .r .res{font-family:var(--mono);color:var(--muted)}.lb .r .dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px;vertical-align:middle}.slider{display:grid;grid-template-columns:90px 1fr 40px;gap:10px;align-items:center;font-size:13px}.slider input[type=range]{width:100%;accent-color:var(--accent)}.seg{display:flex;gap:4px}.seg .btn{padding:6px 10px;font-size:12px}.toasts{position:absolute;top:14px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;gap:6px;align-items:center;pointer-events:none;width:min(520px,90vw)}.toast{padding:9px 14px;border-radius:10px;font-size:13px;font-weight:500;background:var(--panel-2);border:1px solid var(--line-2);box-shadow:0 8px 30px #0006;animation:toast-in .2s ease-out;max-width:100%;text-align:center}.toast.warn{border-color:#ffb04a80}.toast.good{border-color:#5be39b80}.toast.out{opacity:0;transform:translateY(-6px);transition:opacity .3s,transform .3s}@keyframes toast-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}.overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#05060a8c;backdrop-filter:blur(3px);z-index:20}.overlay .box{padding:22px 28px;text-align:center;max-width:420px}.overlay .box h2{font-size:18px;margin-bottom:6px}.spinner{width:34px;height:34px;border-radius:50%;border:3px solid rgba(255,255,255,.1);border-top-color:var(--accent);animation:spin .9s linear infinite;margin:0 auto 12px}@keyframes spin{to{transform:rotate(360deg)}}.hint{position:absolute;left:14px;bottom:16px;max-width:320px;padding:14px 16px;font-size:13px;line-height:1.45;display:flex;gap:12px;align-items:flex-start;animation:slide-up .25s ease-out}.hint .n{flex:none;width:24px;height:24px;border-radius:50%;background:rgba(var(--accent-rgb),.25);color:#fff;display:grid;place-items:center;font-size:12px;font-weight:700}.hint .x{margin-left:auto;background:none;border:none;color:var(--dim);font-size:16px;padding:0 4px}@keyframes slide-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.label{position:absolute;transform:translate(-50%,-50%);font-size:12px;font-weight:600;letter-spacing:.04em;color:#ffffffd1;text-shadow:0 1px 8px rgba(0,0,0,.9),0 0 2px rgba(0,0,0,.9);white-space:nowrap;will-change:transform}.label.mine{color:#fff}.label .sh{font-size:10px;opacity:.7;font-weight:500}.float{position:absolute;transform:translate(-50%,-50%);font-weight:800;font-size:15px;color:#fff;text-shadow:0 0 10px rgba(var(--accent-rgb),.9),0 1px 3px rgba(0,0,0,.8);animation:float-up 1s ease-out forwards;pointer-events:none}.float.bad{color:#ff8a95;text-shadow:0 0 10px rgba(255,93,108,.8),0 1px 3px rgba(0,0,0,.8)}@keyframes float-up{0%{opacity:0;transform:translate(-50%,-30%) scale(.8)}15%{opacity:1;transform:translate(-50%,-60%) scale(1.05)}to{opacity:0;transform:translate(-50%,-200%) scale(1)}}.auth{position:absolute;inset:0;display:grid;place-items:center;background:radial-gradient(ellipse at 50% 60%,rgba(var(--accent-rgb),.08),transparent 60%),var(--bg);overflow:auto}.auth .rings{position:absolute;left:50%;top:50%;width:0;height:0;pointer-events:none}.auth .rings i{position:absolute;left:0;top:0;width:20px;height:20px;margin:-10px;border-radius:50%;border:1.5px solid rgba(var(--accent-rgb),.5);animation:ring 4s cubic-bezier(.1,.6,.3,1) infinite}.auth .rings i:nth-child(2){animation-delay:1s}.auth .rings i:nth-child(3){animation-delay:2s}.auth .rings i:nth-child(4){animation-delay:3s}@keyframes ring{0%{transform:scale(1);opacity:.9}to{transform:scale(60);opacity:0}}.auth .card{position:relative;width:min(440px,calc(100vw - 28px));padding:28px 28px 24px;display:flex;flex-direction:column;gap:14px}.auth .logo{font-size:44px;font-weight:900;letter-spacing:.28em;text-indent:.28em;text-align:center;background:linear-gradient(180deg,#fff,#fff9);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 0 18px rgba(var(--accent-rgb),.35))}.auth .tag{text-align:center;color:var(--muted);font-size:13px;margin-top:-8px}.auth input{width:100%;padding:12px 14px;border-radius:10px;border:1px solid var(--line-2);background:#ffffff0a;outline:none;font-size:15px}.auth input:focus{border-color:rgba(var(--accent-rgb),.7);box-shadow:0 0 0 3px rgba(var(--accent-rgb),.15)}.auth .err{color:var(--bad);font-size:13px;min-height:18px}.auth .btns{display:flex;gap:10px}.auth .btns .btn{flex:1;justify-content:center;padding:12px;font-size:14px}.races{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.race{position:relative;padding:12px 10px 10px;border-radius:12px;border:1px solid var(--line);background:#ffffff06;cursor:pointer;text-align:left;transition:border-color .15s,background .15s,transform .1s;display:flex;flex-direction:column;gap:6px}.race:hover{background:#ffffff0d;transform:translateY(-1px)}.race.sel{border-color:var(--rc);box-shadow:0 0 0 1px var(--rc),0 0 26px #0000004d;background:#ffffff0f}.race .swatch{width:26px;height:26px;border-radius:50%;background:radial-gradient(circle at 35% 35%,#fff2,transparent 40%),var(--rc);box-shadow:0 0 18px var(--rc)}.race .n{font-weight:800;font-size:14px}.race .t{font-size:11px;color:var(--muted);line-height:1.35;min-height:30px}.race .m{font-size:10.5px;color:var(--dim);line-height:1.4}.race .play{position:absolute;top:8px;right:8px;width:26px;height:26px;border-radius:50%;border:1px solid var(--line-2);background:#0000004d;color:var(--text);font-size:10px;display:grid;place-items:center}.race .play:hover{background:#ffffff1f}.auth .foot{text-align:center;font-size:11px;color:var(--dim)}.report{width:min(460px,calc(100vw - 28px));padding:22px 24px;display:flex;flex-direction:column;gap:10px}.report h2{font-size:20px}.report .big{font-size:26px;font-weight:800}.report .att{font-size:13px;color:var(--muted)}@media(max-width:720px){.side{top:auto!important;bottom:76px;left:10px;right:10px;width:auto;max-height:52vh}.vault{min-width:170px;padding:10px 12px}.vault .ore{font-size:22px}.hint{bottom:76px;max-width:calc(100vw - 28px)}.hud-bottom{bottom:10px}.btn .key{display:none}}
