:root{--bg: #0e1119;--panel: rgba(20, 27, 42, .82);--panel-solid: #141b2a;--panel-border: rgba(143, 199, 255, .16);--ink: #eaf0fb;--ink-dim: #93a1bd;--gold: #ffd24a;--sky: #8fc7ff;--good: #6ad27a;--bad: #ff5a5a;--eco: #ffd24a;--mil: #ff7a6a;--kno: #8fb4ff;--shadow: 0 10px 30px rgba(0, 0, 0, .45);--radius: 14px;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden;background:var(--bg);color:var(--ink);-webkit-user-select:none;user-select:none;touch-action:none}#app,#world-host{position:fixed;inset:0}#world-host canvas{display:block}#ui-root{position:fixed;inset:0;pointer-events:none;z-index:10}#ui-root button,#ui-root .interactive{pointer-events:auto}.panel{background:var(--panel);border:1px solid var(--panel-border);border-radius:var(--radius);box-shadow:var(--shadow);backdrop-filter:blur(8px)}#identity{position:absolute;top:14px;left:14px;padding:10px 14px;min-width:180px}#identity .title{font-size:18px;font-weight:800;letter-spacing:.5px}#identity .title .star{color:var(--gold)}#identity .sub{font-size:12px;color:var(--ink-dim);margin-top:2px}#identity .age{margin-top:6px;font-size:13px;font-weight:700;color:var(--sky)}#meta{position:absolute;top:14px;right:14px;display:flex;gap:8px;align-items:stretch}#meta .chip{padding:8px 12px;display:flex;flex-direction:column;align-items:flex-end;justify-content:center;min-width:64px}#meta .chip .k{font-size:10px;text-transform:uppercase;letter-spacing:1px;color:var(--ink-dim)}#meta .chip .v{font-size:16px;font-weight:800}#meta .chip .v.sp{color:var(--gold)}#meta .chip .v.spoils{color:var(--sky)}.iconbtn{width:40px;border:1px solid var(--panel-border);background:var(--panel);color:var(--ink);border-radius:var(--radius);font-size:18px;cursor:pointer;transition:transform .08s ease,background .15s ease}.iconbtn:hover{background:#28344ee6}.iconbtn:active{transform:scale(.92)}#resources{position:absolute;left:14px;bottom:14px;padding:12px;display:grid;grid-template-columns:auto auto auto;gap:6px 14px;min-width:230px}.res{display:contents}.res .ico{font-size:18px}.res .amt{font-variant-numeric:tabular-nums;font-weight:800;font-size:16px;text-align:right}.res .rate{font-size:12px;color:var(--ink-dim);font-variant-numeric:tabular-nums;align-self:center}.res .rate.pos{color:var(--good)}#status{position:absolute;left:50%;bottom:14px;transform:translate(-50%);padding:8px 14px;display:flex;gap:18px;align-items:center;font-size:13px}#status .stat b{color:var(--ink);font-weight:800}#status .stat span{color:var(--ink-dim)}#status .auto{color:var(--good);font-weight:700}#status .auto.off{color:var(--ink-dim);font-weight:500}#wave{position:absolute;right:14px;bottom:14px;padding:10px 14px;min-width:190px}#wave .row{display:flex;justify-content:space-between;align-items:baseline;gap:12px}#wave .label{font-size:11px;text-transform:uppercase;letter-spacing:1px;color:var(--ink-dim)}#wave .count{font-size:20px;font-weight:800;font-variant-numeric:tabular-nums}#wave .count.warn{color:var(--bad);animation:pulse .6s ease-in-out infinite}#wave .matchup{margin-top:6px;font-size:12px;display:flex;justify-content:space-between}#wave .def{color:var(--good);font-weight:700}#wave .thr{color:var(--bad);font-weight:700}#wave .verdict{margin-top:6px;font-size:12px;font-weight:700;text-align:center;border-radius:8px;padding:3px}#wave .verdict.hold{background:#6ad27a29;color:var(--good)}#wave .verdict.fall{background:#ff5a5a29;color:var(--bad)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.45}}#banner{position:absolute;top:22%;left:50%;transform:translate(-50%);text-align:center;pointer-events:none;opacity:0;transition:opacity .2s ease}#banner.show{opacity:1}#banner .big{font-size:40px;font-weight:900;letter-spacing:1px;text-shadow:0 4px 24px rgba(0,0,0,.6)}#banner .big.bad{color:var(--bad)}#banner .big.good{color:var(--good)}#banner .small{font-size:15px;color:var(--ink-dim);margin-top:2px}#toasts{position:absolute;top:70px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;gap:8px;align-items:center;width:max-content;max-width:80vw}.toast{padding:8px 16px;font-size:14px;font-weight:700;border-radius:999px;background:var(--panel-solid);border:1px solid var(--panel-border);box-shadow:var(--shadow);animation:toastIn .3s ease,toastOut .4s ease forwards 2.4s}.toast.good{border-color:#6ad27a80}.toast.epic{border-color:var(--gold);color:var(--gold)}.toast.bad{border-color:#ff5a5a80;color:var(--bad)}@keyframes toastIn{0%{opacity:0;transform:translateY(-10px) scale(.9)}}@keyframes toastOut{to{opacity:0;transform:translateY(-8px)}}.overlay{position:absolute;inset:0;display:none;align-items:center;justify-content:center;flex-direction:column;background:#060910b8;backdrop-filter:blur(3px);pointer-events:auto;z-index:20}.overlay.show{display:flex;animation:fadeIn .25s ease}@keyframes fadeIn{0%{opacity:0}}.overlay h2{font-size:26px;font-weight:900;margin:0 0 4px}.overlay .lede{color:var(--ink-dim);margin-bottom:22px;font-size:14px}#cards-row{display:flex;gap:18px;flex-wrap:wrap;justify-content:center}.card{width:210px;padding:20px 18px;border-radius:16px;background:var(--panel-solid);border:1.5px solid var(--panel-border);cursor:pointer;transition:transform .12s ease,border-color .12s ease,box-shadow .12s ease;text-align:center}.card:hover{transform:translateY(-8px) scale(1.02);box-shadow:0 18px 40px #00000080}.card.eco{border-color:#ffd24a8c}.card.mil{border-color:#ff7a6a8c}.card.kno{border-color:#8fb4ff8c}.card .cat{font-size:11px;text-transform:uppercase;letter-spacing:2px;font-weight:800}.card.eco .cat{color:var(--eco)}.card.mil .cat{color:var(--mil)}.card.kno .cat{color:var(--kno)}.card .ic{font-size:46px;margin:10px 0 6px}.card .nm{font-size:18px;font-weight:800;margin-bottom:8px}.card .ds{font-size:13px;color:var(--ink-dim);line-height:1.4}#death-stats{display:flex;gap:26px;margin-bottom:20px}#death-stats .ds{text-align:center}#death-stats .ds .v{font-size:26px;font-weight:900;color:var(--gold)}#death-stats .ds .k{font-size:12px;color:var(--ink-dim);text-transform:uppercase;letter-spacing:1px}#skill-points{font-size:15px;margin-bottom:14px}#skill-points b{color:var(--gold);font-size:18px}#skills-grid{display:grid;grid-template-columns:repeat(2,minmax(260px,1fr));gap:10px;max-width:720px;max-height:46vh;overflow-y:auto;padding:4px}.skill{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:12px;background:var(--panel-solid);border:1px solid var(--panel-border);text-align:left}.skill .si{font-size:26px}.skill .body{flex:1}.skill .sn{font-weight:800;font-size:14px}.skill .sd{font-size:12px;color:var(--ink-dim);line-height:1.3}.skill .lvl{font-size:11px;color:var(--sky);font-weight:700;margin-top:2px}.skill .buy{border:1px solid var(--panel-border);background:#ffd24a1f;color:var(--gold);border-radius:10px;padding:8px 12px;font-weight:800;font-size:13px;cursor:pointer;white-space:nowrap;min-width:56px}.skill .buy:hover:not(:disabled){background:#ffd24a38}.skill .buy:disabled{opacity:.35;cursor:not-allowed}.skill.maxed .buy{color:var(--good);border-color:#6ad27a80}.bigbtn{margin-top:22px;padding:14px 34px;font-size:16px;font-weight:800;border-radius:12px;border:none;background:linear-gradient(135deg,var(--gold),#ffb020);color:#1a1306;cursor:pointer;box-shadow:0 10px 28px #ffb0204d;transition:transform .1s ease}.bigbtn:hover{transform:translateY(-2px)}.bigbtn:active{transform:translateY(0) scale(.98)}#offline-list{display:flex;flex-direction:column;gap:6px;margin:6px 0 4px;font-size:15px}#offline-list .ol{font-variant-numeric:tabular-nums}#synergies{display:flex;flex-wrap:wrap;gap:4px;margin-top:8px}.syn{font-size:11px;padding:2px 7px;border-radius:999px;background:#ffd24a24;border:1px solid rgba(255,210,74,.4);color:var(--gold);font-weight:700}#buffs{display:flex;flex-direction:column;gap:4px;margin-top:6px}.buff{display:inline-flex;align-items:center;gap:6px;padding:3px 9px;border-radius:999px;background:#ffd24a29;border:1px solid var(--gold);font-size:11px;font-weight:700;color:var(--gold);width:max-content;font-variant-numeric:tabular-nums}#lab{position:absolute;top:0;right:0;bottom:0;width:350px;max-width:88vw;background:var(--panel-solid);border-left:1px solid var(--panel-border);box-shadow:-12px 0 44px #00000080;transform:translate(102%);transition:transform .25s ease;pointer-events:auto;display:flex;flex-direction:column;z-index:25}#lab.show{transform:translate(0)}#lab .lab-head{padding:14px 16px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--panel-border)}#lab .lab-head h3{margin:0;font-size:18px;font-weight:800}#lab .lab-head .sp{font-size:13px;color:var(--sky);font-weight:700}#lab .lab-body{overflow-y:auto;padding:10px 14px 18px}.lab-sec{font-size:12px;text-transform:uppercase;letter-spacing:1px;color:var(--ink-dim);margin:14px 0 8px}.lab-row{display:flex;gap:10px;align-items:center;padding:9px 10px;border-radius:11px;background:#ffffff08;border:1px solid var(--panel-border);margin-bottom:8px}.lab-row .li{font-size:24px}.lab-row .lb{flex:1}.lab-row .ln{font-weight:800;font-size:14px}.lab-row .ld{font-size:12px;color:var(--ink-dim);line-height:1.3}.lab-row .lown{font-size:11px;color:var(--sky);font-weight:700}.lab-row .lbtn{border:1px solid var(--panel-border);background:#8fc7ff1f;color:var(--sky);border-radius:9px;padding:8px 11px;font-weight:800;font-size:12px;cursor:pointer;white-space:nowrap}.lab-row .lbtn:hover:not(:disabled){background:#8fc7ff38}.lab-row .lbtn:disabled{opacity:.4;cursor:not-allowed}.lab-row.active{border-color:#6ad27a80;background:#6ad27a14}.lab-row.active .lbtn{color:var(--good);border-color:#6ad27a80;background:#6ad27a1f}.lab-empty{font-size:12px;color:var(--ink-dim);padding:4px 2px}#meta .chip .v.cosmic{color:#c79bff}#ascend{position:absolute;top:116px;left:50%;transform:translate(-50%);display:none;pointer-events:auto;z-index:18;text-align:center}#ascend.show{display:block}#ascend button{padding:13px 26px;font-size:16px;font-weight:900;border:none;border-radius:999px;background:linear-gradient(135deg,#ffd24a,#b56bff);color:#1a1306;cursor:pointer;box-shadow:0 10px 36px #b56bff73}#ascend.show button{animation:ascendPulse 1.4s ease-in-out infinite}#ascend button:active{transform:scale(.97)}@keyframes ascendPulse{0%,to{transform:scale(1)}50%{transform:scale(1.06)}}#version{position:absolute;bottom:4px;left:50%;transform:translate(-50%);font-size:10px;color:#93a1bd80;letter-spacing:1px}@media(max-width:640px){#identity{min-width:0}#status{display:none}.card{width:150px;padding:14px 12px}.card .ic{font-size:34px}#skills-grid{grid-template-columns:1fr}}
